原理 层次分析法(Analytic Hierarchy Process,简称AHP)是一种结构化的多准则决策制定方法。它是由美国运筹学家托马斯·萨蒂(Thomas L. Saaty)在20世纪70年代提出的。该方法通过将复杂的问题分解成多个层次的子问题,并对这些子问题进行两两比较,从而帮助决策者在多个备选方案中选择最优方案。
以下是使用层次分析法的基本步骤:
构建层次结构模型 :
目标层 :明确决策的目标。
准则层 :确定达成目标所需的评价标准或准则。
方案层 :列出所有可行的备选方案。
构造判断矩阵 : 对于每一层中的元素,根据其相对于上一层某一元素的重要性,进行两两比较,构造出一个正互反矩阵(即判断矩阵)。比较时通常采用Saaty的1-9标度法来量化相对重要性。
计算权重向量和一致性检验 :
计算每个判断矩阵的最大特征根及其对应的归一化特征向量,这个特征向量即为相应层各元素的权重向量。
进行一致性比率(Consistency Ratio, CR)检验,以确保判断矩阵的一致性达到可接受水平。如果CR小于0.1,则认为判断矩阵具有满意的一致性;否则需要调整判断矩阵,直到满足一致性要求。
层次总排序及组合权重计算 :
从最高层到最低层逐层计算各元素的组合权重,即综合考虑所有准则后每个方案的总体优先级。
最终得到各方案关于目标层的总排序,从而确定最优方案。
敏感性分析(可选) :
分析当某些参数发生变化时,结果是否稳定,以评估决策过程的稳健性。
层次分析法的优势在于它能够处理定性和定量相结合的决策问题,提供了一种系统、直观的方法来表达复杂的决策过程。然而,它也存在一些局限性,例如主观因素影响较大、对于大规模问题可能变得难以管理等。因此,在应用AHP时,应结合实际情况和其他工具一起使用,以提高决策质量。
三种求权重的方法:
代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 A = input('判断矩阵A=' ); [n,n] = size (A); [V,D] = eig(A); Max_eig = max (max (D)); CI = (Max_eig - n) / (n-1 ); RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59 ]; CR=CI/RI(n); disp ('一致性指标CI=' );disp (CI);disp ('一致性比例CR=' );disp (CR);if CR<0.10 disp ('因为CR<0.10,所以该判断矩阵A的一致性可以接受!' ); else disp ('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!' ); end A = input('判断矩阵A=' ); ASum = sum(A,1 ); [n,n] = size (A); Ar = repmat (ASum,n,1 ); Stand_A = A./Ar; ASumr = sum(Stand_A,2 ); disp (ASumr/n); clc; A = input('判断矩阵A=' ); [n,n] = size (A); prod_A = prod(A,2 ); prod_n_A = prod_A.^(1 /n); re_prod_A = prod_n_A./sum(prod_n_A); disp (re_prod_A); clc; A = input('判断矩阵A=' ); [n,n] = size (A); [V,D] = eig(A); Max_eig = max (max (D)); [r,c] = find (Max_eig == D,1 ); disp (V(:,c)./sum(V(:,c)));
测试输入: 1 [1 2 3 5;1/2 1 1/2 2;1/3 2 1 2;1/5 1/2 1/2 1]
测试输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 一致性指标CI= 0.0376 一致性比例CR= 0.0423 因为CR<0.10,所以该判断矩阵A的一致性可以接受! 0.4889 0.1819 0.2319 0.0973 0.4949 0.1778 0.2272 0.1000 0.4934 0.1788 0.2303 0.0974