三角模糊层次分析法代码
时间: 2024-05-06 21:13:51 浏览: 159
三角模糊层次分析法(Triangular Fuzzy Analytic Hierarchy Process,简称TF-AHP)是一种用于决策分析的方法,它结合了模糊数学和层次分析法。下面是一个简单的示例代码,用于演示TF-AHP的实现过程:
```python
import numpy as np
# 定义模糊数的三个参数:左侧值、中心值、右侧值
class FuzzyNumber:
def __init__(self, left, center, right):
self.left = left
self.center = center
self.right = right
# 计算模糊数的隶属度
def membership(x, fuzzy_number):
if x <= fuzzy_number.left or x >= fuzzy_number.right:
return 0
elif x == fuzzy_number.center:
return 1
elif x < fuzzy_number.center:
return (x - fuzzy_number.left) / (fuzzy_number.center - fuzzy_number.left)
else:
return (fuzzy_number.right - x) / (fuzzy_number.right - fuzzy_number.center)
# 计算模糊数的加权平均值
def weighted_average(fuzzy_numbers, weights):
numerator = 0
denominator = 0
for i in range(len(fuzzy_numbers)):
numerator += weights[i] * fuzzy_numbers[i].center
denominator += weights[i]
return numerator / denominator
# 计算模糊数的一致性指标
def consistency_index(matrix):
eigenvalues, _ = np.linalg.eig(matrix)
max_eigenvalue = max(eigenvalues)
consistency_index = (max_eigenvalue - len(matrix)) / (len(matrix) - 1)
return consistency_index
# 主函数
def main():
# 定义模糊数和权重
fuzzy_numbers = [
FuzzyNumber(1, 2, 3),
FuzzyNumber(2, 3, 4),
FuzzyNumber(3, 4, 5)
]
weights = [0.3, 0.5, 0.2]
# 计算加权平均值
result = weighted_average(fuzzy_numbers, weights)
print("加权平均值:", result)
# 构建判断矩阵
matrix = np.array([
[1, 3, 5],
[1/3, 1, 3],
[1/5, 1/3, 1]
])
# 计算一致性指标
ci = consistency_index(matrix)
print("一致性指标:", ci)
if __name__ == "__main__":
main()
```
这段代码演示了如何使用TF-AHP方法进行决策分析。其中,定义了模糊数的类`FuzzyNumber`,实现了模糊数的隶属度计算、加权平均值计算和一致性指标计算等函数。在主函数中,定义了模糊数和权重,计算了加权平均值,并构建了一个判断矩阵,最后计算了一致性指标。
阅读全文