EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 f0 E, v6 ?3 Q; B* Y# Y0 |9 [, c6 _/ L3 I
层次分析法(AHP)—matlab实现 - ]8 _/ b, G0 ~. y
( {1 F0 `6 o$ T8 _2 o( N- s5 g
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:
3 o3 o2 Z8 a7 O# S& hclc;$ V4 N) E# @0 u4 B
clear;0 o/ E+ t D9 E3 S& T5 Z6 t
>> A=[1 1 1 4 1 1/2;
! e/ d7 E- o" t4 f- ^1 1 2 4 1 1/2;$ u; }( W0 N7 W* r3 }- V
1 1/2 1 5 3 1/2;
+ W: C) E6 A1 R7 Q. D0 U1/4 1/4 1/5 1 1/3 1/3;; @ a' |4 g' U+ x" A
1 1 1/3 3 1 1/3;
- V5 q7 ^; t! d5 n5 b. a0 b( p2 2 2 3 3 1]# `, l+ }1 {. U- @) ^/ S
: r T# r6 C% ]% O V
%因素对比矩阵A,只需要改变矩阵A
; Z( q ?+ E2 y6 l[m,n]=size(A); %获取指标个数- n. e9 T- L. r( `5 b/ _
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
2 g: b' @; ~8 p% N4 l9 J1 E$ c" yR=rank(A); %求判断矩阵的秩
0 l. O$ Q# g/ m8 P[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
* ]) f- |. U1 {" v' h& ^6 W! Gtz=max(D);
3 r1 i) E5 I! c% {5 NB=max(tz); %最大特征值
% ^ a9 s6 I8 Q2 H, ^6 C[row, col]=find(D==B); %最大特征值所在位置5 s$ u# y: b0 O* q# q# R
C=V(:,col); %对应特征向量
3 u4 g* e3 i# a8 d: mCI=(B-n)/(n-1); %计算一致性检验指标CI
[2 H2 x. \, R3 J# h- L fCR=CI/RI(1,n); " U3 z" A$ S. r
if CR<0.10) w5 V, q7 J2 R
disp('CI=');disp(CI);
, c( [) d% Q# l disp('CR=');disp(CR);# G- [( q2 W, \: f5 |1 u
disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');
$ b8 X8 [. }# M& w* Q9 @- ] Q=zeros(n,1);
5 u7 {0 q1 V: O; T' r for i=1:n4 x) H( I9 g: I: X8 h
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
0 z& ^5 T1 V; D! _. \, K# D1 w end
6 N% ?) P* H% r" I Q %输出权重向量1 i# Z7 F o2 h7 r1 \+ Y: `4 {
else; {/ ^5 i- \ i1 E
disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');0 a3 I, x1 L4 g" D v% [
end
9 x. w4 ]: G6 F |