EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( _) c0 {# ^& n9 U; @
3 _: j; E( _& ~5 r层次分析法(AHP)—matlab实现
. R% z1 ~2 |1 S# r: `- w
2 w; A0 f* V" i% c. L8 M+ N; P1 @ 层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:0 }- h8 u- W2 {6 `6 y( |. G4 S
clc;
* D. X' h# r: N: P4 e. c Hclear;! g/ s+ I$ ?6 }; o7 \
>> A=[1 1 1 4 1 1/2;
# m2 O" h+ _! l, [ L1 1 2 4 1 1/2;
# q% k0 A/ t4 i4 K" b8 W1 1/2 1 5 3 1/2;7 s0 c$ T( A0 S0 h- Q
1/4 1/4 1/5 1 1/3 1/3;
; N/ R/ I( O+ p" B8 Q+ J6 I1 1 1/3 3 1 1/3;
' j3 F0 j5 j$ s, }% J R- q* u2 2 2 3 3 1]& O; a, t( V1 A7 c9 ?
1 q' Q' ~* l6 Y% i3 n# S) } %因素对比矩阵A,只需要改变矩阵A
! N( H1 j ^5 ]8 q[m,n]=size(A); %获取指标个数& s0 u+ |2 w) J% u" T0 l8 n5 m
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];3 F( L8 ]) L! l
R=rank(A); %求判断矩阵的秩" Y; e R- z9 U
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
6 X+ h5 X1 a! a4 ^1 k5 h7 ptz=max(D);
5 }" f0 Q# D- p4 T! _B=max(tz); %最大特征值' a! h4 X7 W! ^/ \7 }
[row, col]=find(D==B); %最大特征值所在位置
5 C5 M- R. N3 Q/ o+ ]C=V(:,col); %对应特征向量
& C+ x& W' W5 _0 `CI=(B-n)/(n-1); %计算一致性检验指标CI
1 l( e& p5 v+ ^8 S a/ LCR=CI/RI(1,n);
6 }# M2 F) n+ |- L- N, uif CR<0.10" e) {1 R4 ?- g
disp('CI=');disp(CI);
; @) |2 A4 k9 W7 {4 B. M disp('CR=');disp(CR);
; g6 L# X9 b- ~7 B% g9 @ disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');7 U% E$ u$ |$ W6 O. g; p! ?8 A
Q=zeros(n,1);
/ b) H1 R6 r1 k7 N r; j% g+ B$ J9 t for i=1:n
2 r2 r6 O. V% i+ i4 N Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
5 {1 }: N' `; _+ O& L end. p- l8 l5 b9 }1 B4 [4 Q6 g. I6 A
Q %输出权重向量9 G% |0 k$ G9 g
else
6 a" _. [7 t$ h4 u; M- i, H disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');1 f/ ^" \: j- A) }$ ~
end
( C5 f, ]0 n; M6 W) h$ M! S |