EDA365电子论坛网
标题:
层次分析法(AHP)—matlab实现
[打印本页]
作者:
Colbie
时间:
2020-5-7 09:41
标题:
层次分析法(AHP)—matlab实现
2 ~7 m7 X& P& ^1 h6 T9 m( X' V
4 ~9 e6 B, ?+ \6 q
层次分析法(AHP)—matlab实现
) L! M; w& p1 d& N7 A2 k
- P1 \9 F" r* Z( t3 C
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:
! m" n6 H, A7 A$ | q3 Z- b# F" S3 O) m
clc;
7 d. @. S: O) i, S1 g
clear;
! [" G/ F" N8 F$ s0 \: H
>> A=[1 1 1 4 1 1/2;
6 e+ O S; @2 b6 c8 r' b
1 1 2 4 1 1/2;
8 ^% R. ^3 ?- E* T# t2 B, q2 Z# ?' F
1 1/2 1 5 3 1/2;
7 _" D1 Q* W: e4 P1 \9 H
1/4 1/4 1/5 1 1/3 1/3;
) w# k6 d9 m4 ]
1 1 1/3 3 1 1/3;
: u% C2 Q4 P0 g2 `# m' |/ ~
2 2 2 3 3 1]
! f2 q- ^' w/ w. ^( f9 K
# W- o% L% [. P8 `7 o( _) ]
%因素对比矩阵A,只需要改变矩阵A
; `& V- J0 _8 ?9 F" f$ \2 o3 Q( a
[m,n]=size(A); %获取指标个数
0 U9 y8 m" z& x. B; `& X9 X
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
# K2 G, F- _* Q3 S* z/ G
R=rank(A); %求判断矩阵的秩
# s. j! A2 c |2 H8 a/ y7 |4 S
[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
( g, B8 r+ Z+ f( p2 j. {9 p
tz=max(D);
) a# X& o! H& V: U; Y3 G
B=max(tz); %最大特征值
& ]# g* a" j' w
[row, col]=find(D==B); %最大特征值所在位置
+ ?, v+ D1 A0 E7 }* R
C=V(:,col); %对应特征向量
2 p( p+ f7 P% R# H+ Q
CI=(B-n)/(n-1); %计算一致性检验指标CI
P0 q, z- ~) ?+ n
CR=CI/RI(1,n);
# b+ N* c! c4 D r9 ~4 O
if CR<0.10
4 ~( w/ O) _) z7 S) r! o
disp('CI=');disp(CI);
- F( P+ j* u8 h
disp('CR=');disp(CR);
4 P' G0 B. W% m. [- [
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
* G3 q" k# u, q" P5 [( n1 ^
Q=zeros(n,1);
. o4 V9 [; Y |! @4 Q2 [
for i=1:n
6 r* A4 h/ _6 i# i+ w% g. o
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
4 w+ Y' r8 ~3 I$ G
end
# v8 ~" X' u. v( N& |* r7 F( g
Q %输出权重向量
3 k0 L8 ^& J; I
else
4 ^/ W- B: V$ o& Y
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
* H; f2 n4 X; L a" w ^, ^: F
end
7 g8 F$ A9 K, @( F# Z' [
作者:
IRESSEMT
时间:
2020-5-7 15:21
层次分析法(AHP)很多地方都能用到。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2