层次分析法(AHP)详解与完整代码
2024.01.18 12:17浏览量:17简介:层次分析法(Analytic Hierarchy Process,AHP)是一种系统分析方法,用于解决多目标决策问题。本文将详细解释层次分析法的原理,并通过Python代码演示如何实现完整的层次分析过程。
层次分析法(Analytic Hierarchy Process,AHP)是一种系统分析方法,用于解决多目标决策问题。它通过构建层次结构模型,将复杂的决策问题分解为多个层次和因素,然后通过两两比较的方式确定各因素之间的相对重要性。最终,通过数学方法计算出各因素的权重,为决策提供依据。
层次分析法的步骤如下:
- 建立层次结构模型:将决策问题分解为不同的层次和因素,形成一个层次结构模型。
- 构造判断矩阵:对于每个层次中的因素,通过两两比较的方式构造判断矩阵。判断矩阵是一个n阶方阵,其中元素a_{ij}表示第i个因素相对于第j个因素的相对重要性。
- 计算权重:通过求解判断矩阵的特征值和特征向量,计算出各因素的权重。常用的方法有和法、根法、幂法等。
- 一致性检验:对判断矩阵进行一致性检验,以确保决策者的判断逻辑一致。常用的方法有CI、CR等指标。
- 组合权重:将同一层次因素的权重进行合成,得到上一层次因素的权重。
- 决策:根据最终的权重结果进行决策。
下面是一个完整的Python代码示例,演示如何实现层次分析法:
首先,我们需要安装numpy和matplotlib这两个Python库。你可以使用以下命令来安装:pip install numpy matplotlib
接下来是Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt建立层次结构模型(示例)
layers = [‘目标层’, ‘准则层’, ‘方案层’]
layer_dict = {layers[0]: {‘准则层’: [‘准则1’, ‘准则2’, ‘准则3’]}, layers[1]: {‘方案层1’: [‘方案1’, ‘方案2’], ‘方案层2’: [‘方案3’, ‘方案4’]}} # 根据实际情况修改层次结构模型构造判断矩阵(示例)
matrix = np.array([[1, 1/2, 3], [2, 1, 4], [1/3, 1/4, 1]]) # 根据实际情况修改判断矩阵计算权重(示例)
weights = np.array([0.25, 0.45, 0.3]) # 根据实际情况修改权重结果一致性检验(示例)
c = np.sum(matrix) / len(matrix)
a = np.sum(np.power(matrix, 2)) / len(matrix)
b = np.sqrt(a)
cbar = np.sum(np.power(matrix, 3) / np.power(matrix, 2)) / len(matrix)
c_value = c - c_bar / b # 计算一致性指标CI
c_random = ((len(matrix) - 1) / (len(matrix) + 1)) ((len(matrix) + 1) / (4 len(matrix) - 1)) # 随机一致性指标RI(平均随机一致性指标)
c_random_value = c - c_random / b # 计算随机一致性指标CR
c_max = np.max(np.abs(matrix - c * np.identity(len(matrix)))) # 最大偏差法求CI值
c_max_value = c - c_max / b # 最大偏差法求CR值
p.set_printoptions(precision=4)
print(f’CI={c_value}, CR={c_value / c_random}, RI={c_random}, CR{max}= {c_max_value}’) # 输出一致性检验结果组合权重(示例)
global_weights = [0.25, 0.45, 0.3] # 根据实际情况修改组合权重结果
print(‘组合权重:’, global_weights)决策(示例)
decision = np.argmax(global_weights) # 根据最终的权重结果进行决策,选择权重最大的方案作为最优方案
p.set_printoptions

发表评论
登录后可评论,请前往 登录 或 注册