EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) K9 b( r% d- q1 U
+ _0 i+ ~* w, @% w8 r7 [层次分析法(AHP)—matlab实现 4 E$ K) A" Z' e! X
* l6 L k" G4 {; n1 b' R
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:/ i0 r: ?& ^/ {
clc;2 t; @3 k. b3 x: a5 }( Z
clear;# ?8 d: c8 q! O4 s7 Q
>> A=[1 1 1 4 1 1/2;5 S' u0 o* x# d$ s& V$ {2 W
1 1 2 4 1 1/2;
; V+ _. v. J$ @( H3 @4 b! w1 1/2 1 5 3 1/2;2 l; q8 g/ v. U5 O& h# F
1/4 1/4 1/5 1 1/3 1/3;
5 T; s5 N3 B# I! v8 I. T' Q1 1 1/3 3 1 1/3;
+ ^, F7 u3 @9 c0 Z2 2 2 3 3 1]* p5 }( s# J2 [$ T* ]& _: A* t
& t$ p; k- D) P
%因素对比矩阵A,只需要改变矩阵A$ d7 T2 @+ e8 k! S7 H8 T. w* U
[m,n]=size(A); %获取指标个数
+ ?; ?; Y8 _0 z. x# Q% ?6 K0 ARI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
2 Z$ S( j# B4 K8 P/ ]R=rank(A); %求判断矩阵的秩
4 r7 w; v2 O& z* y9 v[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
, e- n5 r: z' w/ n4 M' j) z4 xtz=max(D);
2 B; V' G1 O, {1 |B=max(tz); %最大特征值
! Z; ?. @' G( d3 S1 K+ E5 I1 ~$ t[row, col]=find(D==B); %最大特征值所在位置
Z, c$ F. O6 [' @, l. {C=V(:,col); %对应特征向量4 O1 j$ j8 U7 o" H% ?7 k
CI=(B-n)/(n-1); %计算一致性检验指标CI
6 t3 P p3 e/ z- n0 V2 l$ m: q, uCR=CI/RI(1,n); 5 B3 M" F7 B1 R
if CR<0.10! Z' j. }8 M3 |$ e* b3 P
disp('CI=');disp(CI);( I. e8 i( j& m& M( ]3 O
disp('CR=');disp(CR);
& S) y8 Q$ ^) j) k- D0 ^/ D7 T disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
1 `! p& D, k' T) J& R; V6 v Q=zeros(n,1);
- n1 {0 z% j8 s for i=1:n
7 Q" o# F' g$ D4 F2 O4 K' R Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化" r: J, ~7 N/ i7 a% M& i
end
( I3 T2 P& A: e# z# Y5 b Q %输出权重向量
" N9 @6 z: G) o: ^7 uelse
( B3 z. o5 H; Z( ^ disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
9 h0 q) y. s% Pend) {9 Z6 n+ {* P$ ?0 {
|