数学建模社区-数学中国
标题:
【数模】层次分析法
[打印本页]
作者:
杨利霞
时间:
2018-10-30 09:08
标题:
【数模】层次分析法
层次分析法
$ b$ E+ L) Y$ A; H N, t
1.建立模型
+ J z* _/ Q% J% A7 d
+ u% d5 ^' Y! c* T" ~
目标:想要达到的目的
准则:影响目的的因素
可供选择物:备选方案
2.计算第二层 因素权重
(1)构造判断矩阵
' x2 ]4 {: b8 M. e& Y1 D K& Z
5 I( o5 S$ h3 E" |
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵
3 j- P- ?. \ T0 m# ?$ a% B
. a/ l8 i6 T# B% W
(2)计算因素权重
' M; m6 u/ Y: y% X' c5 [$ H! m& N
0 S4 a8 z3 Z* a+ y0 h- @
% j$ c; F# m3 q
9 I7 A2 D' x" P* Q
此处A即判断矩阵,W即为因素的权重,将其归一化即可。
" F5 |# p( {+ Z' B. x
, S) r' k6 }) [2 c( @5 a/ b: b7 P
(3)判断计算的权重是否可用
& W) s/ r' b: T. H, Y
5 }! C9 j6 B. U4 E) F0 ~' s
即一致性检验
$ E( Y1 k; V5 ]
. e2 Y; I" f5 |( r1 m$ y- t9 I) k! O6 T
CI需自己计算 RI需要查询
3 f$ |8 H( l) [1 B
+ }' ^# f7 w. J6 }* V" p5 j
当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
0 o4 l2 x- u; ?: h. F* K0 p
- e) [$ P$ z# A" L2 u! { [1 N
- q: x5 R6 i4 e2 g2 b
6 A6 N* v9 D, A9 o* S0 r' [5 s
3.计算第三层 方案的权重
* Q( p4 t1 q% j4 M) T
9 q3 x& j+ j K- r% U7 \
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
4 U& w$ k& O' [7 E! c
4 ~: `1 n6 k9 @) F3 b
计算方法和第二层计算方法相同
$ O( X3 C* d# j6 h- Z9 I
+ _* L) A8 f c$ d/ u6 [5 g+ B
最后会算出来n个W向量
, U4 b' {: U- d" o% u0 {' I
" B! g% ]/ s2 F* t0 W1 v
将这n个W向量相加,再归一化即可获得最后的结果。
# s% S; z9 W& Q8 L9 _% x' `$ Y# i
0 G/ p& D8 [! K* p) s- K1 O
附代码
) V" h/ a8 \* B$ x" Y- d% g
function Q=AHP(A)
6 N: k% a0 {; _: e, e: u- J4 ]. s
[m,n]=size(A);
' U' B. H7 m) d( A8 |6 g' M
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
; a* v; ~: ?: l! x8 F+ [
R=rank(A); %求判断矩阵的秩
- i$ ?5 r0 z8 s& f, b0 ?5 c8 ?
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
1 h( I; @$ L& y" h& w
tz=max(D);
0 y/ Q7 @* N9 y/ ~
B=max(tz); %最大特征值
$ L( D$ ]) A- N/ c- E4 @
[row, col]=find(D==B); %最大特征值所在位置
/ g6 I$ F0 R! F/ w' x
C=V(:,col); %对应特征向量
! M0 o! X" x2 J; o
CI=(B-n)/(n-1); %计算一致性检验指标CI
2 ~6 ^( |3 D! @' e" l* u5 |
CR=CI/RI(1,n);
8 `! y2 V3 ~+ L6 d- \/ K
if CR<0.10
$ V/ M$ y/ [2 J- H, e, o
disp('CI=');disp(CI);
) T+ e& M9 X7 m
disp('CR=');disp(CR);
; a- A" h3 v, h& W6 U
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
/ p3 U: X. K. S# ]
Q=zeros(n,1);
* b/ x, J2 e( |: d: {. u" s
for i=1:n
6 R' _2 ~1 e, c" o$ i
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
( K0 Z4 ^1 L$ q* w
end
% k9 N6 d, l2 q
else
+ A; n1 s( s- X) ~8 _7 d% g
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
" M- h; ]: o6 e0 N& K7 t4 J
/ g2 I1 e& w9 d+ n0 u
2 W/ R* o3 t% ^
# v6 F) h- L4 @2 o
( r. }: D# }' {0 A# J5 w: k
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5