层次分析法(AHP)实例的Matlab求解

标签:
杂谈 |
分类: 数据分析 |
【实例】市政部门管理人员需要对修建一项市政工程项目进行决策,可选择的方案是修建通往旅游区的高速路(简称建高速路)或修建城区地铁(简称建地铁)。除了考虑经济效益外,还要考虑社会效益、环境效益等因素。
递阶层次结构及判断矩阵分别见下:http://s13/middle/789baed3gc4eecb595d5c&690
表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))
[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)]