Untitled 25
Untitled 25
Fuzzification
# Compute L for each row (maximum of x1, x2, x3, x4, x5, x6)
L = np.maximum.reduce([x1, x2, x3,
x4, x5, x6], axis=0)
print(membership_values_x1)
print("\nMembership values for x2:")
print(membership_values_x2)
print("\nMembership values for x3:")
print(membership_values_x3)
print("\nMembership values for x4:")
print(membership_values_x4)
print("\nMembership values for x5:")
print(membership_values_x5)
print("\nMembership values for x6:")
print(membership_values_x6)
3 0.256589-0.004430j
4 0.480972+0.044955j
...
98 0.620860+0.070736j
99 0.621675+0.068311j
100 0.630292+0.067864j
101 0.639995+0.064547j
102 0.507668-0.021934j
Name: Fine Aggr., Length: 103, dtype: complex128
if k >= 0:
return k / (1 + k)
else:
return 0
def output_membership_function_N(k):
if k >= 0:
return 0
else:
return -k / (1 - k)
# Example usage:
# Extract output variable (comprehensive strength) from the data
k = data['Compressive Strength (28-day)(Mpa)']
membership_values_P = k.apply(output_membership_function_P)
membership_values_N = k.apply(output_membership_function_N)
In [ ]: import pandas as pd
# Load data from CSV file
data = pd.read_csv("slump_test.data")
# Define the fuzzy rules for the concrete mixing dataset
def rule_CFR1(x1, x6):
if x1 > 0 and x6 > 0:
return 'P' # High firing strength
else:
return 'N' # Low firing strength
def rule_CFR2(x2, x6):
if x2 > 0 and x6 > 0:
return 'P'
else:
return 'N'
def rule_CFR3(x3, x6):
if x3 > 0 and x6 > 0:
return 'P'
else:
return 'N'
def rule_CFR4(x4):
if x4 > 0:
return 'P'
else:
return 'N'
def rule_CFR5(x5):
if x5 > 0:
return 'P'
else:
return 'N'
# Compute the firing strengths using the defined rules
data['Firing Strength CFR1'] = data.apply(lambda row: rule_CFR1(row['Cement'] /
data['Firing Strength CFR2'] = data.apply(lambda row: rule_CFR2(row['Slag'] / ro
In [ ]: import pandas as pd
# Compute firing strength for each rule
firing_R1 = x1 * x6
firing_R2 = x2 * x6
firing_R3 = x3 * x6
firing_R4 = membership_values_x4
firing_R5 = membership_values_x5
# Aggregate the firing strengths using multiplication
aggregated_firing_strength = firing_R1 * firing_R2 * firing_R3 * firing_R4 * fir
# Add the aggregated firing strength to the dataset
data['Aggregated Firing Strength'] = aggregated_firing_strength
print(aggregated_firing_strength)
0 1.130417e-09-3.655288e-10j
1 7.689922e-10-7.036447e-10j
2 7.726641e-11-7.060704e-11j
3 1.948422e-11-1.776389e-11j
4 5.341231e-10-2.835097e-10j
...
98 3.625427e-08-1.189926e-08j
99 3.610162e-08-1.232353e-08j
100 2.558365e-08-8.313134e-09j
101 1.344543e-09+1.027889e-09j
102 -1.596983e-12+2.078968e-12j
Length: 103, dtype: complex128
if k >= 0:
return k / (1 + k)
else:
return 0
def output_function_N(k):
if k >= 0:
return 0
else:
return -k / (1 - k)
# Extract output variable (comprehensive strength) from the data
comprehensive_strength = data['Compressive Strength (28-day)(Mpa)']
# Iterate through each value in the Series and apply the output membership funct
membership_values_P = comprehensive_strength.apply(output_function_P)
membership_values_N = comprehensive_strength.apply(output_function_N)
firing_R1 = x1 * x6
firing_R2 = x2 * x6
firing_R3 = x3 * x6
firing_R4 = membership_values_x4
firing_R5 = membership_values_x5
# Compute consequent functions by multiplying firing strength with output member
CFR1 = firing_R1 * membership_values_P
CFR2 = firing_R2 * membership_values_P
CFR3 = firing_R3 * membership_values_P
CFR4 = firing_R4 * membership_values_P
CFR5 = firing_R5 * membership_values_P
In [ ]: from re import L
# Calculate the limits of the aggregated consequent functions
limit_positive = aggregated_consequent_P.iloc[-1] # Limit as k approaches posit
limit_negative = 0
# Calculate k0
k0 = L * (limit_positive - limit_negative)
In [ ]: k1 = np.square(k0)
defuzzified_output = abs(k1)
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np