层次分析法
层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。
层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。不妨用假期旅游为例:假如有3个旅游胜地A、B、C供你选择,你会根据诸如景色、费用和居住、饮食、旅途条件等一些准则去反复比较这3个候选地点.首先,你会确定这些准则在你的心目中各占多大比重,如果你经济宽绰、醉心旅游,自然分别看重景色条件,而平素俭朴或手头拮据的人则会优先考虑费用,中老年旅游者还会对居住、饮食等条件寄以较大关注。其次,你会就每一个准则将3个地点进行对比,譬如A景色最好,B次之;B费用最低,C次之;C居住等条件较好等等。最后,你要将这两个层次的比较判断进行综合,在A、B、C中确定哪个作为最佳地点。
- 步骤
1、建立递阶层次结构模型
2、构造出各层次中的所有判断矩阵
3、层次单排序及一致性检验
4、层次总排序及一致性检验 - 递阶层次的建立与特点
(1)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标和理想结果。
(2)中间层:这一层次中包含为了实现目标所涉及的中间环节,主要是一些考虑指标和一些准则。
(3)最底层:这一层次中包含为了实现目标可供选择的各种方案。
注1:为了避免两两比较判断过于复杂,每层次中各元素所支配的元素一般不要超过9个,否则应划分为若干子层;
注2:层次分析法只考虑相邻两个层次间自上向下的支配作用,认为同一层次的元素间相互独立,若考虑进来需要网络分析法(ANP)。
引例
在B1、B2、B3中选择一个最优方案,影响因素有A1、A2、A3、A4、A5。
判断矩阵
Z | A1 | A2 | A3 | A4 | A5 |
---|---|---|---|---|---|
A1 | 1 | 1/2 | 4 | 3 | 3 |
A2 | 2 | 1 | 7 | 5 | 5 |
A3 | 1/4 | 1/7 | 1 | 1/2 | 1/3 |
A4 | 1/3 | 1/5 | 2 | 1 | 1 |
A5 | 1/3 | 1/5 | 3 | 1 | 1 |
matlab代码
%层次分析法(特征值法)
clc;clear;close all
disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
judge=AHPjudge(A);
if judge==true
[n,n]=size(A);
[V,D]=eig(A)%求特征向量和特征值
tempNum=D(1,1);
pos=1;
for h=1:n
if D(h,h)>tempNum
tempNum=D(h,h);
pos=h;
end
end
w=abs(V(:,pos));
w=w/sum(w);
t=D(pos,pos);
disp('准则层特征向量(权重向量):w=');
disp(w);
disp('准则层最大特征根t=');
disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);
RI=[0 0 0.52 0.89 1.12 1.24 1.32 1.41 1.45 1.49 1.51 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评价');
end
else disp('请重新输入准则层判断矩阵A')
end
function [judge] = AHPjudge(A)
n = size(A,1);
for i=1:n
for j=1:n
a = A(i,j);
b = A(j,i);
if a*b==1
continue;
else
judge = false;
return;
end
end
end
judge = true;
end
结果
准则层特征向量(权重向量):w=
0.2636
0.4758
0.0538
0.0981
0.1087
准则层最大特征根t=
5.0721
此矩阵的一致性可以接受
CI=
0.0180
CR=
0.0161
与此类似,求出方案层中各方案的成对比较矩阵
注:每个矩阵即为每个影响因素下,每个解决方案的判断矩阵
注:左矩阵每列代表每个对比矩阵权值向量,右矩阵即为影响因素权值向量。
选择数值越高的即为最优选项 (B3为最优)