数学建模社区-数学中国

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

作者: 杨利霞    时间: 2018-10-30 09:08
标题: 【数模】层次分析法
层次分析法$ V' _" M& v) X; F2 f9 p7 O
1.建立模型
  \) o# ^1 g$ q3 e1 \8 c$ q1 R/ n

目标:想要达到的目的

准则:影响目的的因素

可供选择物:备选方案

2.计算第二层 因素权重

    (1)构造判断矩阵

4 \* t0 T. l6 ~  C7 V2 T& `7 n+ ]
6 F  m0 [/ ]5 W9 T
根据以上准则对因素进行两两比较,得出正互反矩阵,即判断矩阵; J% q& n2 Y+ \4 n
  t  d& U8 j# K. ]# H
    (2)计算因素权重
& n8 _1 c* y8 s* Z4 @' u- W8 F' |5 D  t5 w

; V, x- W; ^" W" b  t/ \9 J" b" e; s! e, s- R, W* e
            此处A即判断矩阵,W即为因素的权重,将其归一化即可。; q6 f: O6 Y8 h) F6 K# u0 l: l# D* w

+ L) l$ V9 p% Y- H, F# T    (3)判断计算的权重是否可用
, f5 X8 J8 n* c8 J9 \+ y8 z, {. W0 Z/ M; E8 J) A) Q' e
        即一致性检验
' V2 q1 ], E/ w  u
, f; L' B" u& }/ S; S. Q        CI需自己计算 RI需要查询( h$ v# d0 x) A. `
* o2 V/ k# T( k  ]; o; J
        当 CR<0.1 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 ( ?2 t, p2 I; {6 N+ @6 i

$ b) l' n6 e" g% s
: Y( A" T: G5 Y& ?) \4 i# H6 n3 `/ h! }
3.计算第三层 方案的权重
4 {5 ]( D/ o. o5 b! o; C/ M% `8 k* ]: h, N& I0 x
因为方案的权重在不同因素下结果不同,所以n个因素需要n个判断矩阵。
  s9 Y1 t' u2 n9 V& F- h+ j5 @' E: \" a5 @( K4 R2 j
计算方法和第二层计算方法相同7 }" {& h9 w$ r$ X
4 H6 v/ s3 L' {( i5 n
最后会算出来n个W向量7 z8 P: F% v4 A- M- x5 u4 L
- u3 ^3 L2 ?  P! p& S
将这n个W向量相加,再归一化即可获得最后的结果。
/ P+ o, m; K% e4 a2 D3 {) m
, F2 e6 i+ K. \* f附代码
/ n2 {7 M/ w' |  j) e6 u: ~" xfunction Q=AHP(A)
6 B2 G+ K4 @  `& f0 ^( f' u[m,n]=size(A);; m, u7 _0 q2 |0 y: ?# L% k
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
/ g% M* V6 _- O5 YR=rank(A);                         %求判断矩阵的秩. _+ ~  M9 j6 r' A& a4 z) I4 u
[V,D]=eig(A);                      %求判断矩阵的特征值和特征向量,V特征向量,D特征值(对角阵);
. i. y+ i' ^& F% c0 o$ N/ Ntz=max(D);8 [! D( W; g, N/ F7 l
B=max(tz);                         %最大特征值
5 B0 D: F$ z0 V( f, u[row, col]=find(D==B);             %最大特征值所在位置
* H5 Q% I) G- I2 j$ M: z* y' ?C=V(:,col);                        %对应特征向量
$ r9 l( a- x& Q! J' q2 lCI=(B-n)/(n-1);                    %计算一致性检验指标CI, u7 J0 I' o: R* ^: Z
CR=CI/RI(1,n);   / l* m( i- c. c- Y( o
if CR<0.10" e8 ?1 k( E0 _4 M1 }
    disp('CI=');disp(CI);
' ^2 A& Z! H3 ?& J    disp('CR=');disp(CR);" {9 D- D+ R3 t
    disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
" A  `* @0 P: z    Q=zeros(n,1);
0 a6 a; u3 @+ N3 x3 o7 L# z& I1 i    for i=1:n) G" m: W/ g$ K' H( d; Y1 @* F
        Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
3 f; b: r* K% T" m0 D' [% {$ B/ {, W    end$ v3 @7 o" Y8 v, D, u0 `" y
else+ i- J4 }; A/ t! v' K
    disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');7 B- d$ Y6 y9 U) J* p* C  }
3 C0 x& l9 {" s8 L' N4 m8 M& v$ ^

4 y& m- [" f5 C: m1 S: k: q( ]. g
! X7 Q- N! Y) J  V; g# a/ U* G
' c% J& L# V2 o




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5