TA的每日心情 | 开心 2019-11-20 15:05 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 X2 i/ J& \0 ?5 J. w# _+ U1 Z6 O6 Y% [! h
层次分析法(AHP)—matlab实现 . A+ L& a5 [/ K' t6 H: T
8 H$ J9 b0 w& X# m: k5 v. q
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:( a1 F% s& T! S/ A, s0 ^
clc;
3 Q6 X8 n+ n( D7 g; l4 Z0 p, @, Bclear;* h1 _% k8 z/ X6 t% o3 T+ q* W6 y
>> A=[1 1 1 4 1 1/2;9 }, L# {" u! `) ?
1 1 2 4 1 1/2;$ {' y8 X" y, d* {8 V3 o x0 l
1 1/2 1 5 3 1/2;. D" C% k6 u Z
1/4 1/4 1/5 1 1/3 1/3; y# O; t4 d2 e- F
1 1 1/3 3 1 1/3;
& L2 A3 Y9 ~% n# ~3 S, m2 2 2 3 3 1]
; I7 Y$ h, q6 Y, m( D% F2 B. k x% Y
8 ]5 _' N: G% G; a6 `5 J1 k %因素对比矩阵A,只需要改变矩阵A! K! ~( ~% u' X% F! o' A4 h4 X7 J
[m,n]=size(A); %获取指标个数
2 ~, Y" a3 V, R$ y9 n& x- KRI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
" x: @2 A" [' b/ ~) b+ xR=rank(A); %求判断矩阵的秩
7 W; H% W/ o# {[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
1 C: ~# |" u1 \0 ltz=max(D);
( v7 w) a, U& c) t+ Q" UB=max(tz); %最大特征值: Y" |2 {3 E0 m+ K
[row, col]=find(D==B); %最大特征值所在位置7 b. ~% n: I( l3 ?( L
C=V(:,col); %对应特征向量
2 [9 G$ _3 C/ s7 h ?: k% x' }CI=(B-n)/(n-1); %计算一致性检验指标CI/ n8 J( h' C1 K& x
CR=CI/RI(1,n); / r8 O, _& d7 ~# W, C0 L: D+ U
if CR<0.10
4 t. H8 F) [+ _5 ] disp('CI=');disp(CI);
8 ~! R( \+ x5 B# E disp('CR=');disp(CR);/ Z! ` e% }/ m. ?
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
. v3 u$ m. Z1 ~. Y Q=zeros(n,1); W7 K/ O# x9 ~
for i=1:n
4 U) b+ d1 J* n, H* d% \ ? {5 p Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
$ M6 D, ^9 A5 n6 h4 [ end
9 f9 e; h/ \+ t9 n' I Q %输出权重向量
( K2 }4 g1 v h; }' c8 o* Lelse3 X/ l3 x u1 G5 c! P5 t
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
/ M. [/ m7 e& Vend
* W2 u( v5 v4 q4 Q U! F |
|