层次分析法的matlab的实现:
【实例】市政部门管理人员需要对修建一项市政工程项目进行决策,可选择的方案是修建通往旅游区的高速路(简称建高速路)或修建城区地铁(简称建地铁)。除了考虑经济效益外,还要考虑社会效益、环境效益等因素。
表2
A | B1 | B2 | B3 | | B1 | C1 | C2 | | B2 | C3 | C4 | | B3 | C5 | C6 |
B1 | 1 | 1/3 | 1/3 | | C1 | 1 | 1 | | C3 | 1 | 3 | | C5 | 1 | 3 |
B2 | | 1 | 1 | | C2 | | 1 | | C4 | | 1 | | C6 | | 1 |
B3 | | | 1 | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
C1 | D1 | D2 | | | C2 | D1 | D2 | | C3 | D1 | D2 | | C4 | D1 | D2 |
D1 | 1 | 5 | | | D1 | 1 | 3 | | D1 | 1 | 1/5 | | D1 | 1 | 7 |
D2 | | 1 | | | D2 | | 1 | | D2 | | 1 | | D2 | | 1 |
| | | | | | | | | | | | | | | |
C5 | D1 | D2 | | | C6 | D1 | D2 | | | | | | | | |
D1 | 1 | 1/5 | | | D1 | 1 | 1/3 | | | | | | | | |
D2 | | 1 | | | D2 | | 1 | | | |
C1 | C2 | C3 | C4 | C5 | C6 |
0.0714 | 0.0714 | 0.3214 | 0.1071 | 0.3214 | 0.1071 |
D1 | D2 |
0.3408 | 0.6592 |
clc
a=[1,1/3,1/3
3,1,1
3,1,1];
[x,y]=eig(a);eigenvalue=diag(y);lamda=max(eigenvalue); %x为特征向量,y为特征值,lamda为最大特征值,lamda=max(eigenvalue)亦可为lamda=eigenvalue(2),第二个特征值恰为最大特征值
ci1=(lamda-3)/2;cr1=ci1/0.52
w1=x(:,2)/sum(x(:,2))
b1=[1,1;1,1];
[x,y]=eig(b1);eigenvalue=diag(y);lamda=max(eigenvalue);
ci21=(lamda-2)/1;cr21=ci21/0
w21=x(:,2)/sum(x(:,2))
b2=[1
[x,y]=eig(b2);eigenvalue=diag(y);lamda=max(eigenvalue);
ci22=(lamda-2)/1;cr22=ci22/0
w22=x(:,1)/sum(x(:,1))
b3=[1
[x,y]=eig(b3);eigenvalue=diag(y);lamda=max(eigenvalue);
ci23=(lamda-2)/1;cr23=ci23/0
w23=x(:,1)/sum(x(:,1))
c1=[1
[x,y]=eig(c1);eigenvalue=diag(y);lamda=max(eigenvalue);
ci31=(lamda-2)/1;cr31=ci31/0
w31=x(:,1)/sum(x(:,1))
c2=[1
[x,y]=eig(c2);eigenvalue=diag(y);lamda=max(eigenvalue);
ci32=(lamda-2)/1;cr32=ci32/0
w32=x(:,1)/sum(x(:,1))
c3=[1
[x,y]=eig(c3);eigenvalue=diag(y);lamda=max(eigenvalue);
ci33=(lamda-2)/1;cr33=ci33/0
w33=x(:,1)/sum(x(:,1))
c4=[1
[x,y]=eig(c4);eigenvalue=diag(y);lamda=max(eigenvalue);
ci34=(lamda-2)/1;cr34=ci34/0
w34=x(:,1)/sum(x(:,1))
c5=[1
[x,y]=eig(c5);eigenvalue=diag(y);lamda=max(eigenvalue);
ci35=(lamda-2)/1;cr35=ci35/0
w35=x(:,1)/sum(x(:,1))
c6=[1
[x,y]=eig(c6);eigenvalue=diag(y);lamda=max(eigenvalue);
ci36=(lamda-2)/1;cr36=ci36/0
w36=x(:,1)/sum(x(:,1))
w_sum1=[w21*w1(1,1)
w22*w1(2,1)
w23*w1(3,1)]
w_sum2=[[w31,w32]*w21,[w33,w34]*w22,[w35,w36]*w23]*w1
ci1=[ci21,ci22,ci23];
cr1=ci1*w1/sum(0.52*w1);
ci2=[ci31,ci32,ci33,ci34,ci35,ci36];
cr2=ci2*w_sum1/sum(0*w_sum1)