TA的每日心情 | 开心 2019-11-20 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 m, c4 ]3 S) V5 p1 P5 w% C, x# _* A5 |& ^3 `* y* Y
层次分析法(AHP)—matlab实现 , ]! l! T( h0 q/ E: X
7 V- c" c( r6 Z5 \0 T 层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:" m1 ^, ?( u8 h3 I7 c6 ?9 t3 ^! y4 {
clc;
$ o) p! h' p+ \* r' ^ x9 Sclear;
$ b' h1 O) J. {$ G8 }. A>> A=[1 1 1 4 1 1/2; Q2 ^4 p3 Y2 c) Q' V$ D! M
1 1 2 4 1 1/2;" V1 [' B4 _! u- m. N* @( c6 z7 H
1 1/2 1 5 3 1/2;8 ^0 |) Y6 t3 _* E5 s- t% d
1/4 1/4 1/5 1 1/3 1/3;& z# j+ d8 g- D8 {+ A: p2 p8 W4 Y
1 1 1/3 3 1 1/3;" s/ Q! o7 Z) [# W, W; x( Z( }
2 2 2 3 3 1]) g1 l; Z& r* M9 }
& ]* K0 Q; H. U2 u& m- |1 r) F3 K0 C
%因素对比矩阵A,只需要改变矩阵A
8 F) e( m6 E0 N9 u[m,n]=size(A); %获取指标个数
! [- _6 g O! Z" U% v0 uRI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
, C9 \, ~2 E. ^' yR=rank(A); %求判断矩阵的秩
5 ?& d8 _7 i+ m$ R' E* w[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
+ e0 L9 j& G$ \% g2 y5 y5 etz=max(D);
& e; z' h q* PB=max(tz); %最大特征值
3 I1 D' N- Z& B+ P6 n[row, col]=find(D==B); %最大特征值所在位置
/ T9 R, l. ?* T7 C3 ]- |C=V(:,col); %对应特征向量6 ?% O& B- d# _. Z3 V0 S
CI=(B-n)/(n-1); %计算一致性检验指标CI# g" K# V' W5 E {# E# k
CR=CI/RI(1,n);
& G6 n( o1 o$ O( Yif CR<0.10/ q/ P1 H: P' `7 o7 _9 G
disp('CI=');disp(CI);
, A$ U B4 i, e; s; g7 [ disp('CR=');disp(CR);
; C+ ~! j8 M* F! I1 G disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
O( w& Z( U) ? Q=zeros(n,1);
) X, o2 D: Q4 _# I$ K1 A% j1 y! ^- e for i=1:n/ x+ m* ]# Z9 { ]2 q
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
/ K- x: J' k) P4 L0 \ end8 U6 V1 P' {4 x
Q %输出权重向量
, g1 V3 `, j4 U7 [else, L& r" q& u C2 [' M
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
% D! u9 c9 a/ mend
1 f3 _. F( ]1 ?5 u* m+ H) P |
|