数学建模社区-数学中国
标题:
【数模】层次分析法
[打印本页]
作者:
杨利霞
时间:
2018-10-30 09:08
标题:
【数模】层次分析法
层次分析法
1 A4 E$ T' E" |; x: v( g' n
1.建立模型
0 E5 q0 V- R# i: [6 a( Q+ W% O3 \
0 M: l2 m! w( @, ]$ t
目标:想要达到的目的
准则:影响目的的因素
可供选择物:备选方案
2.计算第二层 因素权重
(1)构造判断矩阵
! H1 X3 v# e1 S" r
' }9 t8 u* E7 N" g- z# H+ h
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵
: M* z2 g" M) L. |7 i
d9 Q5 m/ ~' |' g: S
(2)计算因素权重
- I; x# s( r7 p" |9 q6 n
' s5 a% S- M6 s6 x8 |. E6 n
8 k0 i2 S B7 Y3 X4 Z
" I* d1 [) m1 v; x' ~
此处A即判断矩阵,W即为因素的权重,将其归一化即可。
% j* V( O: ?, ~$ c; W5 n; f7 O
7 l1 s+ l! T- u- w% |9 V/ ^* c
(3)判断计算的权重是否可用
3 z( d# [/ U2 k
# P6 s" F+ l; h1 K; j! @# f+ Z
即一致性检验
9 u& x! @: e8 o% T8 I
9 \8 u, I% p1 D& w) y/ Q: ~
CI需自己计算 RI需要查询
$ b9 _# |7 Z) F$ |
6 Y1 k# K' D) x. s0 W* p( N
当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
# p9 \2 G! ^0 ?4 x% v2 X
. [3 ?% }9 f( ^! B5 T1 }9 ]1 I
% V/ U" D% i2 P E4 J
) H5 O, g% t5 f6 a& n- ]9 @
3.计算第三层 方案的权重
7 c' y- O' R# q. `: D- X5 b+ w
- i7 R+ f; _- Y
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
7 i2 @5 C' `4 q( T) X( D8 y
- P% @9 C/ Q0 U
计算方法和第二层计算方法相同
4 }. B( E7 B. K+ e9 c
1 Q5 H1 G9 y/ B0 ^
最后会算出来n个W向量
/ `! i; n. O3 H" w; r
, R. G$ e3 T* e! R2 U
将这n个W向量相加,再归一化即可获得最后的结果。
0 _$ r) Z9 L- J* o) z3 b
+ ~& m1 r; d# A$ N( b" \
附代码
5 h- u. o5 @: h2 X
function Q=AHP(A)
( F0 K9 L% i v* d6 ^
[m,n]=size(A);
* ?* T( s* P3 D Q1 }
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
: M: E3 g6 ~6 X6 b
R=rank(A); %求判断矩阵的秩
- g6 l% l! s. M: |! ?
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
# w7 v& _0 H; [+ Y; G2 Y9 q- D1 I
tz=max(D);
/ p# V6 C9 @- d, G" z: W/ b
B=max(tz); %最大特征值
) G7 K% e3 J+ \& }; z8 m# ~) ]
[row, col]=find(D==B); %最大特征值所在位置
- H. h, b L+ M: ~7 B; }
C=V(:,col); %对应特征向量
3 T9 H0 d" \ k9 O
CI=(B-n)/(n-1); %计算一致性检验指标CI
) A' Z- p4 u0 r3 E, K% r5 _
CR=CI/RI(1,n);
# _% s- ]- [+ [, C! X5 m1 x( C& I2 n
if CR<0.10
( d' B0 u! R1 ?5 h
disp('CI=');disp(CI);
# v; t6 E" w% K9 R$ B3 D# p
disp('CR=');disp(CR);
. I* _7 J( L4 G# O2 y
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
& W' _( d, `- G Q5 e! \# w
Q=zeros(n,1);
6 v7 r- Q, @" a% E5 v9 s( V
for i=1:n
h \& J* o/ ?8 N. I6 X
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
' L3 o) H5 ^% N, _" c
end
, M B1 T+ k1 P1 @3 D" e, m$ X
else
% S `! \+ A: y4 Z, D5 k# Q/ B
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
2 L& O8 r/ p$ A# F6 O8 ~' M4 I
* v6 j5 a% _3 [9 N
, S' h1 T- D4 u7 ?
8 d. W% M2 u- k6 l1 L% y# ^. ]. w, M
3 t2 R- t% ?* q2 d+ |( b6 J4 n
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5