EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 H; @5 V. ]# I1 K- A/ x# e1 U2 v
: f4 M: v, }+ ^) L' k层次分析法(AHP)—matlab实现
8 h0 A& S* P* I1 R! b* m9 |- h) D5 ^" i$ |2 ?
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:
2 I2 U4 M' }1 O6 L9 z- m4 j% sclc;
7 o4 o6 M6 B+ i$ ^clear;
$ Y6 x+ |# j4 Z& v, u: x>> A=[1 1 1 4 1 1/2;4 y/ ?1 }- U8 J0 x" R
1 1 2 4 1 1/2;
: J2 m5 T: L) s( F1 1/2 1 5 3 1/2;
9 } p$ p& v# C, ^; S5 |9 |1/4 1/4 1/5 1 1/3 1/3;
, J4 i# j' S9 K1 1 1/3 3 1 1/3;8 G# ]" ~+ d1 w, {" t3 R( j, w% \
2 2 2 3 3 1]
2 o/ G$ q# I, q* w6 V 6 H+ N3 u# d) U/ c) j! P
%因素对比矩阵A,只需要改变矩阵A S# \% c+ f6 R _" R! S8 [6 ?8 u3 M
[m,n]=size(A); %获取指标个数) i; g5 ]# i7 I! }( J, X! ]. }( w; n
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
5 ~4 B0 b0 B* B: S: s% O( QR=rank(A); %求判断矩阵的秩
7 i' f/ b; I/ X5 U: h0 {[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;/ L4 M8 U8 Q9 J$ A4 I
tz=max(D);- C) |1 C4 l& \1 n$ j! F* ^6 g
B=max(tz); %最大特征值5 p4 F$ x/ G/ d- V) a9 d" @
[row, col]=find(D==B); %最大特征值所在位置
! I4 {8 l1 Y2 IC=V(:,col); %对应特征向量4 _2 P' T; m3 A
CI=(B-n)/(n-1); %计算一致性检验指标CI
- D) H" v [# [: q3 o; E5 vCR=CI/RI(1,n);
# i% c. t4 N" S7 _if CR<0.10
& G3 H! {+ q' e" Q disp('CI=');disp(CI);' i L& W; _! I; j; _2 P
disp('CR=');disp(CR);
- z7 j/ ?- r5 i disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
3 S. l, Q2 h' ^( i; v Q=zeros(n,1);3 w+ P+ u* f" H- P( j! N+ p
for i=1:n
% Y# H- S& O/ O1 D Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化3 ]$ U9 O# v8 T; H/ @ I% G
end1 O- u# O+ }9 R% g O
Q %输出权重向量" @( l& P' R9 d, Z9 c
else
* v8 D4 N& ~* d0 l- O# Z3 m$ j d disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');) X' P7 s$ m3 w2 T* C/ ~: L
end9 L R+ P0 c1 }5 U! X
|