数学建模社区-数学中国
标题:
【数模】层次分析法
[打印本页]
作者:
杨利霞
时间:
2018-10-30 09:08
标题:
【数模】层次分析法
层次分析法
0 h7 @7 X5 G: o3 h; c
1.建立模型
/ t V8 l* s7 S- j- C
- e3 B0 j2 v# S/ ?0 z6 Z3 p
目标:想要达到的目的
准则:影响目的的因素
可供选择物:备选方案
2.计算第二层 因素权重
(1)构造判断矩阵
7 j+ o" M1 h" Q5 }8 y( L! c
, O' ~8 ~( R7 h4 M$ g* w4 B% U
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵
& k: G/ w, x9 t1 i+ S
- j) J6 j, o7 G. u& J5 h1 W% R! p
(2)计算因素权重
2 l F5 I6 w: @4 \
. ] l1 h8 P' y6 P2 e
8 B" V4 l2 n4 u1 y' a: A7 t
( L" E# G4 D+ w9 c. _' _3 W
此处A即判断矩阵,W即为因素的权重,将其归一化即可。
4 C) m$ T# n3 [
- m) W# e5 S. R C% P$ A
(3)判断计算的权重是否可用
2 W- ^0 K/ c3 M* W2 f- [; ]( \' ^
( P3 }" O5 p+ D, i! S5 [
即一致性检验
3 u; W9 h* L7 D3 w: c7 V% w9 ]
5 G3 |, d& a7 a3 N' p9 |) }! E6 Q
CI需自己计算 RI需要查询
5 k5 C2 Q# g) Z2 z
3 ?% D. X6 W4 N/ }& E& \" p
当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
# X9 P* \( W7 ]9 j) m3 u
9 v0 H& J$ `" }/ @1 J/ |% k! Y
) k& G0 M n0 C. @: Y G
9 c: k" t- `- \! I) {
3.计算第三层 方案的权重
; v5 q7 v: R' I' k+ i
; @: C3 X0 q5 ~3 Q+ l0 `
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
- y$ T D- P. ~- o$ j7 b8 m5 p
/ n; A) ]- ^$ }! h* ~& ~! K
计算方法和第二层计算方法相同
1 U. S5 P, Z( @8 N
- i6 ?1 V: ~3 q% D, h' W9 @" ~% N
最后会算出来n个W向量
' |) q6 ?4 B( ?0 B( r" b6 v
) x: N; W, S0 ]( H2 J: i2 Y
将这n个W向量相加,再归一化即可获得最后的结果。
$ X, O: b; E0 `" `
8 _5 X4 s" [9 E( i+ A
附代码
! M/ r' C# M7 e' Y* K5 n+ |
function Q=AHP(A)
# d' |( X0 b- |/ }; |' I
[m,n]=size(A);
- g7 f7 g; h1 z4 B; S; p
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
7 L3 b% _9 @ u. L
R=rank(A); %求判断矩阵的秩
9 e# e6 t. e5 Y! B* y0 C
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
5 w( j6 O( Q' r4 A. V
tz=max(D);
( \/ F! V7 g! J% }8 q
B=max(tz); %最大特征值
/ g5 n9 k' d4 n
[row, col]=find(D==B); %最大特征值所在位置
) K/ F: X9 d5 [5 R- T
C=V(:,col); %对应特征向量
9 d* Z( T+ n4 Y3 m" H
CI=(B-n)/(n-1); %计算一致性检验指标CI
7 e; T% R* G' X( ]* x) B" _
CR=CI/RI(1,n);
& R: D8 W' M1 I7 e& ~# L
if CR<0.10
" l0 q2 u5 [2 U* N8 Z
disp('CI=');disp(CI);
" u- C) b& T$ a! P; {9 z" N
disp('CR=');disp(CR);
$ Q, n0 s8 [+ _. L
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
L2 {, [1 ]9 z4 h6 S
Q=zeros(n,1);
5 s; M* M. s) ^
for i=1:n
, p/ f( j- x# q+ L0 |& Y
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
* |2 g7 N4 ?0 j! {% F% f2 n
end
1 i' J, p+ D4 d( n
else
3 C6 l; F5 }& Q" S' c
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
- \; W5 h, e8 @ x8 z) R" m* C5 G
+ w' [7 g' N; \& r9 ^) M
5 P+ Y w& {8 f# e9 \8 j& G! G
8 b9 K" F: d- E0 M8 I
9 r& L% a# k6 ~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5