数学建模社区-数学中国
标题:
【数模】层次分析法
[打印本页]
作者:
杨利霞
时间:
2018-10-30 09:08
标题:
【数模】层次分析法
层次分析法
2 Y$ P- G/ }0 B1 L6 [& t
1.建立模型
& X# r6 z$ \- k& A3 S7 Q$ ^9 `: m
8 r- v1 N; d1 _; v
目标:想要达到的目的
准则:影响目的的因素
可供选择物:备选方案
2.计算第二层 因素权重
(1)构造判断矩阵
" L/ y% J1 E% ]+ p J
6 u7 W+ c. Q/ @0 x. i) t
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵
1 y: r; b+ N5 u5 s/ G0 L- \5 }
0 e. t# B$ B+ n8 M9 P3 F+ }3 o
(2)计算因素权重
' ]* S. @% h8 M( n
9 k8 r' n; C3 k$ b/ V8 n
6 R: [9 v: B/ w- d
, c( H% k+ T; _% e$ c; k0 M
此处A即判断矩阵,W即为因素的权重,将其归一化即可。
0 d3 Y5 N) [5 Y% Q' J+ d
1 l! h7 Y& _- H0 K% ?* j. i
(3)判断计算的权重是否可用
) A { i" h) S- G1 k# P2 y
. x* l7 n2 ]4 p. ~
即一致性检验
4 p" }) }9 j8 S: j( j
+ k$ `. R) x7 \; [# Y
CI需自己计算 RI需要查询
) y5 z( P+ H6 C) ?- ^3 c* X! M
6 i) ]+ x1 _4 y1 w' ^
当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
$ Y0 ]9 X5 q" x+ M+ F
. o2 \1 T+ |' L$ `; E p. f$ a1 k
I' `: c- h E
* K; { X, e3 O1 P% e
3.计算第三层 方案的权重
/ H' x( m% n5 B& U4 O
& y1 K3 [* Q$ l1 g" {4 H; G" E
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
2 v4 [7 L" U( Z2 N6 b: q
% [8 C& E, e* V8 ?. b& J
计算方法和第二层计算方法相同
; }3 W, m- k! W! M- a4 S6 L2 V
( N2 C+ k. D3 Z2 s& d8 J0 y
最后会算出来n个W向量
& u% Q, I/ s: H3 Q4 v6 V& h
9 m E) L9 b- M2 n6 c
将这n个W向量相加,再归一化即可获得最后的结果。
& o+ N( {! h$ K, Z( I7 ?: K0 v# j
0 h/ j' {7 b7 Z: c/ I$ {
附代码
4 j# W8 h' V2 F+ ~5 m( P1 C+ k
function Q=AHP(A)
2 Z4 ~1 d* \! O! {! ~
[m,n]=size(A);
- ^" r6 W5 _( V( y+ ?0 i
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
" G+ f1 ]" r) T- ]- x |
R=rank(A); %求判断矩阵的秩
" Q5 m3 Y3 J8 y! S+ w* K
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
& R+ n& Z' Y+ R4 B/ a" N+ k! R
tz=max(D);
- y4 @9 Y$ H' ~
B=max(tz); %最大特征值
6 |$ a* j) |- c
[row, col]=find(D==B); %最大特征值所在位置
* Z9 p# ^+ r) B+ a: M
C=V(:,col); %对应特征向量
/ k2 ]$ |! s* X; F
CI=(B-n)/(n-1); %计算一致性检验指标CI
" C: s8 a. Z" @* |+ l/ q, y# V
CR=CI/RI(1,n);
- p+ n# _+ o5 `0 G! g$ n. e* z
if CR<0.10
0 M! c8 }1 m) S- E
disp('CI=');disp(CI);
. t3 f8 p& h* h, N, D3 I, X
disp('CR=');disp(CR);
9 `) \3 M E. E
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
, }% }. i; U% c0 ^
Q=zeros(n,1);
& h6 @( d. l1 l. U# S
for i=1:n
: f, @9 v+ ^. c5 D
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
" s: \. r( b& h5 w& k
end
, x& _$ y4 ?/ [
else
- C* T% m$ B0 W* T8 }) t1 `2 p7 E
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
0 L. k" o/ T& `: j8 L4 ?
6 ^3 M6 M4 ~- `! s3 I* \+ {' `
3 P5 ~* v/ {. F& w; v) z4 \
' W/ [7 _$ c0 N( D. t( |; A4 d9 F: |
f$ V# k% s) L. ^4 u* b
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5