数学建模社区-数学中国
标题:
【数模】层次分析法
[打印本页]
作者:
杨利霞
时间:
2018-10-30 09:08
标题:
【数模】层次分析法
层次分析法
9 d; C$ j& @* Y( z2 l. M/ }
1.建立模型
/ S- t7 L& r6 q( n. x
5 ?7 O) P: p8 s. L" j
目标:想要达到的目的
准则:影响目的的因素
可供选择物:备选方案
2.计算第二层 因素权重
(1)构造判断矩阵
, w1 F0 l/ d3 C
* o2 r. m; z6 X2 _
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵
5 n: l: \3 J( f9 K) p2 M2 f+ Z8 c* f# ]$ ~3 N
' m# u: z# k, a
(2)计算因素权重
0 M1 d/ Q( E( t1 o4 H' m' M* E
2 P# `0 B: ^+ e" j( E9 }
: v0 c( w' q( E, Y% @9 N
$ d) C# t3 y4 K
此处A即判断矩阵,W即为因素的权重,将其归一化即可。
9 ]& o: E6 q. u+ r3 L3 ]) y
( m J: U$ G7 A9 `; Y! X
(3)判断计算的权重是否可用
9 K6 ~7 s( @2 o4 @" c
$ A+ O& G& {3 D1 q5 S, [/ X
即一致性检验
{, {7 d8 W$ R
0 L/ E( N6 l; E1 v7 u
CI需自己计算 RI需要查询
U. Y0 m& j7 `# X
4 ^: T' d8 i$ [% Q7 P
当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。
o' v9 V4 Z1 O
) p( N% I/ N/ X t
, D; L3 d& P. ~' E0 c% q
, F# ` `' ^- L$ w' i7 i3 W
3.计算第三层 方案的权重
( n( m8 x. ?$ k4 B* B3 l
$ @4 Y7 s) r) n9 x8 r
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
; g3 M+ k; F; p: e0 Y+ o3 L
# C& S) G5 N; z* m
计算方法和第二层计算方法相同
$ N( j1 S; y9 g {0 q, u
/ K$ T- T3 d9 W3 A) Q5 J
最后会算出来n个W向量
5 p6 N' x( }- ^/ t @7 B7 u
+ M) k. _( y J) k7 n2 J4 {
将这n个W向量相加,再归一化即可获得最后的结果。
$ S* d0 k( Y6 r0 c6 I, l
) \6 @* L* y! e) _* |
附代码
* |" W, C1 `) J+ G% j
function Q=AHP(A)
?$ B6 M Y8 p1 ~
[m,n]=size(A);
# t; |# A5 e0 X! Z
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
2 b6 O8 B* @- T' `9 l8 @
R=rank(A); %求判断矩阵的秩
( a' ?! v7 Z8 Q
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
8 A( @, R$ [, G" N# T
tz=max(D);
' L3 k& G+ G5 l* V3 M$ [& N* ?
B=max(tz); %最大特征值
, ^' V# {5 H$ ?0 I5 Z
[row, col]=find(D==B); %最大特征值所在位置
0 Q& w4 ~) ~/ ^- Y3 j
C=V(:,col); %对应特征向量
- m# M- I2 Q% s8 i( u0 [0 r" b: K
CI=(B-n)/(n-1); %计算一致性检验指标CI
* V; m: Z7 s3 m5 e4 u! l4 s) I5 E
CR=CI/RI(1,n);
, z) `# e9 B" Z H
if CR<0.10
) O, ?% s! A$ [! E+ D# c% K
disp('CI=');disp(CI);
% d1 L3 `/ F- ]6 x: E `
disp('CR=');disp(CR);
6 M8 g4 v% g5 u" R e2 X$ I
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
2 G. S9 ]6 N4 p+ e
Q=zeros(n,1);
: v s$ w( d4 B" P
for i=1:n
3 x: X; l( b( i
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
5 I! I4 x5 I4 g* N
end
/ n" M% |. t$ q% i2 \! t
else
, A. U. @( ]8 T% G2 r5 Q
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
9 H G F+ ^' `
5 K# m5 d4 V- M, V
6 F# Y7 `. @- V0 s6 e% C
$ A! J- k. w9 O
5 D |* k) ]: N, x; `
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5