层次分析法的matlab的实现

来源:互联网 发布:海量数据和数据港 编辑:程序博客网 时间:2024/06/02 23:46

层次分析法的matlab的实现:


【实例】市政部门管理人员需要对修建一项市政工程项目进行决策,可选择的方案是修建通往旅游区的高速路(简称建高速路)或修建城区地铁(简称建地铁)。除了考虑经济效益外,还要考虑社会效益、环境效益等因素。

递阶层次结构及判断矩阵分别见下:层次分析法(AHP)实例的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

 

 

 

  Matlab求解得到C层次与D层次的总排序分别为:

 

C1C2C3C4C5C60.0714 0.07140.32140.10710.32140.1071

 

D1D20.34080.6592

 结果表明,建地铁(D2)的权重(0.6592)远远大于建高速路(D1)的权重(0.3408),因此,最终的决策方案是建地铁。

 Matlab求解程序见下:

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))                
                  %准则层B对目标层的单排序,也是总排序
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))                  
               %准则层C中C1、C2对B层中B1的单排序
b2=[1  3;1/3,1];
[x,y]=eig(b2);eigenvalue=diag(y);lamda=max(eigenvalue);
ci22=(lamda-2)/1;cr22=ci22/0
w22=x(:,1)/sum(x(:,1))        
                         %准则层C中C3、C4对B层中B2的单排序
b3=[1    3;1/3   1];
[x,y]=eig(b3);eigenvalue=diag(y);lamda=max(eigenvalue);
ci23=(lamda-2)/1;cr23=ci23/0
w23=x(:,1)/sum(x(:,1))  
                               %准则层C中C5、C6对B层中B3的单排序
c1=[1  5;1/5  1];
[x,y]=eig(c1);eigenvalue=diag(y);lamda=max(eigenvalue);
ci31=(lamda-2)/1;cr31=ci31/0
w31=x(:,1)/sum(x(:,1)) 
                                %措施层D对C层中C1的单排序                         
c2=[1  3;1/3   1];
[x,y]=eig(c2);eigenvalue=diag(y);lamda=max(eigenvalue);
ci32=(lamda-2)/1;cr32=ci32/0
w32=x(:,1)/sum(x(:,1))     
                            %措施层D对C层中C2的单排序
c3=[1  1/5;5   1];
[x,y]=eig(c3);eigenvalue=diag(y);lamda=max(eigenvalue);
ci33=(lamda-2)/1;cr33=ci33/0
w33=x(:,1)/sum(x(:,1))           
                      %措施层D对C层中C3的单排序
c4=[1  7;1/7   1];
[x,y]=eig(c4);eigenvalue=diag(y);lamda=max(eigenvalue);
ci34=(lamda-2)/1;cr34=ci34/0
w34=x(:,1)/sum(x(:,1))     
                            %措施层D对C层中C4的单排序
c5=[1  1/5;5   1];
[x,y]=eig(c5);eigenvalue=diag(y);lamda=max(eigenvalue);
ci35=(lamda-2)/1;cr35=ci35/0
w35=x(:,1)/sum(x(:,1))        
                         %措施层D对C层中C5的单排序
c6=[1  1/3;3   1];
[x,y]=eig(c6);eigenvalue=diag(y);lamda=max(eigenvalue);
ci36=(lamda-2)/1;cr36=ci36/0
w36=x(:,1)/sum(x(:,1)
                                %措施层D对C层中C6的单排序
w_sum1=[w21*w1(1,1)
w22*w1(2,1)
w23*w1(3,1)]         
                                  %准则层C总排序
w_sum2=[[w31,w32]*w21,[w33,w34]*w22,[w35,w36]*w23]*w1  %措施层D总排序
ci1=[ci21,ci22,ci23];
cr1=ci1*w1/sum(0.52*w1);                               
%准则层C总排序的整体一致性检验
ci2=[ci31,ci32,ci33,ci34,ci35,ci36];                   %措施层D总排序的整体一致性检验
cr2=ci2*w_sum1/sum(0*w_sum1)   


0 0
原创粉丝点击