数学建模社区-数学中国

标题: 【数模】层次分析法 [打印本页]

作者: 杨利霞    时间: 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 u9 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; pRI=[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 qB=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);                    %计算一致性检验指标CI7 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    end1 i' J, p+ D4 d( n
else3 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