给一个模糊综合评价法的算例,要有代码
时间: 2023-11-28 18:51:31 浏览: 56
假设我们需要对一部电影进行综合评价,评价因素包括:剧情、画面、演员表现、音乐、情感吸引力等五个方面。每个因素评价分为五个等级,分别为1-5分,其中1分表示极差,5分表示极好。现在我们需要使用模糊综合评价法对这部电影进行综合评价。
1. 建立评价矩阵
首先需要建立评价矩阵,如下:
| | 剧情 | 画面 | 演员表现 | 音乐 | 情感吸引力 |
| -------- | ---- | ---- | -------- | ---- | ---------- |
| 评价值 | 3 | 4 | 2 | 5 | 4 |
| 评价等级 | 中等 | 良好 | 差 | 极好 | 良好 |
2. 设计模糊量化函数
根据实际情况,可以根据专家经验或者统计学方法来设计模糊量化函数。这里我们采用三角形模糊量化函数,如下:
```
def fuzzy_triangular(x, a, b, c):
if x <= a or x >= c:
return 0
elif a < x <= b:
return (x - a) / (b - a)
else:
return (c - x) / (c - b)
```
其中,a、b、c为三角形的三个顶点,x为输入值。
3. 计算隶属度矩阵
根据评价等级和模糊量化函数,可以计算出每个评价值在不同评价等级下的隶属度。如下:
```
import numpy as np
matrix = np.array([
[3, 4, 2, 5, 4],
['中等', '良好', '差', '极好', '良好']
])
points = {
'1': [1, 2, 3],
'2': [2, 3, 4],
'3': [3, 4, 5],
'4': [4, 5, 5],
'5': [5, 5, 5]
}
def get_membership_value(value, level):
a, b, c = points.get(level)
return fuzzy_triangular(value, a, b, c)
membership_matrix = np.zeros((5, 5))
for i in range(5):
for j in range(5):
membership_matrix[i][j] = get_membership_value(matrix[0][i], matrix[1][j])
```
其中,points字典保存了每个评价等级下的三角形顶点,get_membership_value函数计算某个评价值在某个评价等级下的隶属度。membership_matrix即为隶属度矩阵,表示每个评价值在不同评价等级下的隶属度。
4. 计算综合评价结果
根据隶属度矩阵和权重向量,可以计算出每个评价等级的综合评价结果。如下:
```
weights = np.array([0.2, 0.25, 0.15, 0.3, 0.1])
result = np.dot(membership_matrix, weights)
```
其中,weights为权重向量,表示每个评价因素在综合评价中的权重。np.dot表示矩阵乘法,result即为综合评价结果。
完整代码如下:
阅读全文