41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import numpy as np
|
|
|
|
# 定义模糊集合的隶属度参数
|
|
sludge = [0, 0.5, 1] # 污泥浓度模糊集
|
|
grease = [0, 0.5, 1] # 油脂浓度模糊集
|
|
time = [0, 0.25, 0.5, 0.75, 1] # 洗涤时间模糊集
|
|
|
|
# 构建污泥和油脂的模糊关系矩阵(取最大值)
|
|
sludgeandgrease = np.zeros((len(sludge), len(grease)))
|
|
for i in range(len(sludge)):
|
|
for j in range(len(grease)):
|
|
sludgeandgrease[i, j] = max(sludge[i], grease[j])
|
|
sludgeandgrease = sludgeandgrease.reshape(9, 1) # 展平为列向量
|
|
|
|
# 构建模糊关系矩阵 R(取最小值)
|
|
R = np.zeros((len(sludgeandgrease), len(time)))
|
|
for i in range(len(sludgeandgrease)):
|
|
for j in range(len(time)):
|
|
R[i, j] = min(sludgeandgrease[i], time[j])
|
|
|
|
# 输入模糊集的隶属度
|
|
x1 = [0, 0.83, 0.6] # 污泥浓度实际测量隶属度
|
|
y1 = [0, 0.71, 0.7] # 油脂浓度实际测量隶属度
|
|
|
|
# 计算输入条件的模糊关系(取最大值)
|
|
x1y1 = np.zeros((len(x1), len(y1)))
|
|
for i in range(len(x1)):
|
|
for j in range(len(y1)):
|
|
x1y1[i, j] = max(x1[i], y1[j])
|
|
x1y12 = x1y1.reshape(9) # 展平为一维数组
|
|
|
|
# 合成模糊推理结果
|
|
result = np.zeros(5)
|
|
a = np.zeros(9)
|
|
for i in range(5):
|
|
for j in range(9):
|
|
a[j] = x1y12[j] * R[j, i] # 模糊推理合成运算
|
|
result[i] = max(a) # 取最大值作为最终结果
|
|
|
|
print(result)
|