模糊控制输入输出变量关系曲面绘制代码
时间: 2023-12-20 22:47:35 浏览: 78
由于模糊控制系统的输入和输出变量都是模糊变量,因此它们之间的关系曲面通常是一个三维空间中的曲面。以下是一个简单的示例代码,用于绘制一个模糊控制系统的输入和输出变量之间的关系曲面:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 定义输入变量的取值范围和模糊集合
input_var_range = np.linspace(0, 10, 100)
input_var_set1 = np.exp(-(input_var_range-3)**2/2) # 模糊集合1
input_var_set2 = np.exp(-(input_var_range-7)**2/2) # 模糊集合2
# 定义输出变量的取值范围和模糊集合
output_var_range = np.linspace(0, 1, 100)
output_var_set1 = np.exp(-(output_var_range-0.2)**2/2) # 模糊集合1
output_var_set2 = np.exp(-(output_var_range-0.8)**2/2) # 模糊集合2
# 定义模糊控制器的规则矩阵
rule_matrix = np.array([[0.8, 0.2], [0.2, 0.8]])
# 计算输入和输出变量之间的关系曲面
X, Y = np.meshgrid(input_var_range, output_var_range)
Z = np.zeros(X.shape)
for i in range(X.shape[0]):
for j in range(X.shape[1]):
input_var = X[i, j]
output_var = Y[i, j]
input_var_degree1 = np.interp(input_var, input_var_range, input_var_set1)
input_var_degree2 = np.interp(input_var, input_var_range, input_var_set2)
output_var_degree1 = np.interp(output_var, output_var_range, output_var_set1)
output_var_degree2 = np.interp(output_var, output_var_range, output_var_set2)
Z[i, j] = rule_matrix[0, 0]*min(input_var_degree1, output_var_degree1) + \
rule_matrix[0, 1]*min(input_var_degree1, output_var_degree2) + \
rule_matrix[1, 0]*min(input_var_degree2, output_var_degree1) + \
rule_matrix[1, 1]*min(input_var_degree2, output_var_degree2)
# 绘制关系曲面
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_xlabel('Input Variable')
ax.set_ylabel('Output Variable')
ax.set_zlabel('Membership Degree')
plt.show()
```
在上述代码中,我们首先定义了输入变量和输出变量的取值范围和模糊集合。然后,我们定义了模糊控制器的规则矩阵,该矩阵描述了输入变量和输出变量之间的关系。最后,我们通过对输入变量和输出变量进行遍历,计算它们之间的模糊关系,并绘制出关系曲面。在这个简单的示例中,我们使用了高斯函数来定义模糊集合,但实际上,我们可以使用各种不同的函数来定义模糊集合。
阅读全文