层次分析法实例讲解学习
生活实际例题:
旅游实例,有三个旅游地点供游客们选择,连云港,常州,徐州。
影响游客们决策的因素主要有以下五项:景色、费用、居住、饮食、旅途。
请根据个人偏好选择最佳旅游地点。
分析:旅游点是方案层,将它们分别用B,B2,B3表示,影响旅游决策的因素为准
则层AAAAA;目标层为选择旅游地,即可以建立以下模型:
建立判断矩阵:
准则层判断矩阵(即各种因素在旅客偏好选择中所占有的不同比重)
1 1/
2 4
3 3
2 1 7 5 5
A 1/4 1/7 1 1/2 1/3
1/3 1/5 2 1 1
1/3 1/5 3 1 1
方案层判断矩阵建立(针对每一个影响因素来对方案层建立)
1 2 5 1 1/3 1/8 1 1 3
B 1/2 1 2 B1 3 1 1/3 B1 1 1 3
1/5 1/2 1 8 3 1 1/3 1/3 1
1 3 4 1 1 1/4
B1 1/3 1 1 B1 1 1 1/4
1/4 1 1 4 4 1
求准则层判断矩阵A的特征值:
Matlab 运行程序:[a,b]=eig(A)
'矩阵的对角线为准则层判断矩阵 A 的特征值:
5.073 0 0 0 0
0.031 0 0 0 b
0 0 0.031 0 0
0 0 0 0.005 0
0.005
即 1 5.073, 2 0.031, 3
0.031, 4
0.005, 5
0.005
选出最大特征值:
max ( 1,
2, 3, 4,
5
)
1
最大特征值的特征向量即为准则层的影响因素所占的权重, 为:
所对应的特征向量
w 1 -0.4658 -0.8409 -0.0951 -0.1733 -0.1920
归一化(最简 matlab 程序为 w=w1./sum(w1))
w 0.2636
0.4759 0.0538 0.0981 0.1087
一致性指标的检验:
由max 是否等于5来检验判断矩阵A 是否为一致矩阵。
由于特征根连续地依 赖于矩阵A 中的值,故max 比5大得越多,A 的非一致性程度也就越严重,
max 对应的标准化特征向量也就越不能真实地反映出对因素
A i (i 1, ,5)的影
响中所占的比重。
计算一致性指标CI :
此题的一致性指标为
5.073-5
0.018 5-1
平均随机一致性指标RI 相对固定,如下表:
RI 随机一致性指标
3456789 10
11
0.58 0.90 1.12 1.24 1.32
1.41 1.45 1.49 1.51
计算一致性比例CR :
CR q
RI
当CR 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
本题:
CR ? 皿 0.016
0.1
RI 1.12
可行。
按照如上方式处理矩阵B, B 2, B 3, B 4, B 5得:
CI
max n
n 1
max n
n 1
CI
n
1 2
RI 0
B 1 :
max
3.005 w [0.595,0.277,0.129]
CI 0.003 RI 0.58
CR 0.005<0.1
B 2 :
max
3.002 w 2 [0.082,0.236,0.682]
CI 0.001 RI 0.58
CR 0.002<0.1
B 3:
max
3 W 3 [0.429,0.429,0.142]
CI 0 RI 0.58
CR 0<0.1
B 4 :
max
3.009 w 4 [0.633,0.193,0.175]
CI 0.005 RI 0.58
CR 0.009<0.1
B 5 :
max
3 w 5 [0.166,0.166,0.668]
CI 0 RI 0.58
CR 0<0.1
计算方案层 j(j 1,
,n)对总目标的权值:
n
Q(j)
w(i)W i (j)
i 1
即连云港对总排序的权值为:
5
Q(1) w(i)W i (1)
i 1
0.263 0.595 0.475 0.082 0.055 0.429 0.099 同理可
计算出常州,徐州对总排序的权值:
可建立如下表格清晰数据的排列:
将准则层矩阵的最大特征值的特征向量代表的权值放于准则层权值的右方, 准则层每个因素所对应的方案层矩阵的最大特征值的特征向量放于所对应的影 响因素的下面。
层次总排序合成表
0.633 0.110 0.116 0.3
5
Q(2)
w(i)W i (2) 0.246
i 1
5
Q(3) w(i)W i (3)
0.456
i 1
对于整个算法编写matlab程序如下:
fid=fope n( 'txt2.txt' ,'广);
n1=5 ;n 2=3;
a=[];
for i=1: n1
tmp=str2 num(fgetl(fid));
a=[a;tmp]; %卖准则层判断矩阵
end
for i=1: n1
str 仁char([ 'b' ,i nt2str(i), '=[];' ]);
str2=char([ 'b' ,i nt2str(i), '=[b' ,i nt2str(i), :tmp];' ]); eval(str1);
for j=1: n2
tmp=str2 num(fgetl(fid));
eval(str2); %读方案层的判断矩阵
end
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %-致性指标[x,y]=eig(a);
lamda=max(diag(y));
n um=fi nd(diag(y)==lamda);
wO=x(: ,n um)/sum(x(:, num));
cr0=(lamda-n1)/(n 1-1)/ri( n1)
for i=1: n1
[x,y]=eig(eval(char([ 'b' ,in t2str(i)])));
lamda=max(diag(y));
n um=fi nd(diag(y)==lamda);
w1(:,i)=x(:, num)/sum(x(: ,n um));
cr1(i)=(lamda-n2)/(n 2-1)/ri( n2);
end
cr1, ts=w1*w0, cr=cr1*w0。