数学建模常用模型(三):层次分析法
层次分析法(Analytic Hierarchy Process,AHP)是一种用于多准则决策分析的方法,由美国运筹学家托马斯·L·赛蒂(Thomas L. Saaty)于1970年提出。它通过对决策问题进行层次化,将复杂的问题拆分为多个层次和准则,并使用定量化的方法进行比较和权重分配,最终得出综合评价和决策结果。
这是我自己总结的一些代码和资料(本文中的代码以及参考书籍等),放在github上供大家参考:https://github.com/HuaandQi/Mathematical-modeling.git
1.AHP方法的基本步骤
- 确定决策目标:明确决策的总体目标,并将其作为最高层次的准则。
- 层次分解:将决策问题分解为若干个层次和准则。通常包括目标层、准则层和方案层。
- 构建判断矩阵:对于每个层次的准则和方案,构建两两比较的判断矩阵。在判断矩阵中,使用1-9的尺度表示两个元素之间的相对重要性或优劣程度。
- 计算权重:根据判断矩阵,通过一致性检验和特征向量法计算每个准则和方案的权重。
- 一致性检验:对于每个判断矩阵,进行一致性检验,以确保判断矩阵的合理性和一致性。
- 综合评价:将权重与各个层次和准则的评估值相乘,得出方案的综合评价结果。
- 敏感性分析:对权重进行敏感性分析,评估不同权重对最终结果的影响程度。
2.程序实例
from pyanp import pairwise_from_array, ahp_array, anp_array# 创建判断矩阵
judgment_matrix = [[1, 3, 5],[1/3, 1, 2],[1/5, 1/2, 1]
]# 使用pairwise_from_array创建Pairwise类
pairwise = pairwise_from_array(judgment_matrix)# 使用ahp_array进行AHP计算
weights = ahp_array(pairwise)# 打印权重
for i, weight in enumerate(weights):print(f"Criterion {i+1}: {weight:.4f}")
这段代码使用了pyanp库的函数进行AHP分析。首先,我们创建了一个判断矩阵judgment_matrix。然后,使用pairwise_from_array函数将判断矩阵转换为Pairwise类的实例。接下来,使用ahp_array函数对Pairwise实例进行AHP计算,得到每个准则的权重。最后,我们打印出每个准则的权重。
3.总结
AHP方法在决策分析和评估中具有广泛的应用,特别是在复杂的多准则决策问题中。它可以帮助决策者将主观意见和定性判断转化为定量化的指标和权重,提供决策支持和理性的决策结果。同时,AHP方法也要求决策者对问题有全面的了解和判断,以准确构建判断矩阵和权重计算。