EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ q( u' a M1 I' \% k8 s, T/ g( C4 L; {( K
层次分析法(AHP)—matlab实现
) N* E8 F2 R& ]* G) L! u
: Q" e* M# }* }" z 层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:/ b1 q( L3 t* z" x' q/ I) k2 C
clc;7 I. t4 w& C' f1 M9 C7 G; h
clear;
& F+ q( C6 f$ ^3 @- q>> A=[1 1 1 4 1 1/2;; Y2 ~( P; @* K
1 1 2 4 1 1/2;
2 ]' Q7 D' U/ J, {8 H9 \1 1/2 1 5 3 1/2;
$ L" w6 o5 @2 ?! x+ C1/4 1/4 1/5 1 1/3 1/3;2 S ]0 @' S e# t' s( H9 V
1 1 1/3 3 1 1/3;
% g- _, u" l* @; n+ Y' ?2 [; u$ j2 2 2 3 3 1]
# l J' v5 k2 a% [5 ~4 |
9 E0 m! f* O7 x' U% ~7 \. ?; W %因素对比矩阵A,只需要改变矩阵A
4 p0 f8 c, W6 M- _[m,n]=size(A); %获取指标个数
# q) A8 \# L( }RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];" T7 f3 \9 v2 q; c
R=rank(A); %求判断矩阵的秩
" G( H3 p. x- ][V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;
5 v$ c1 J! N7 K7 J$ K; A% T# rtz=max(D);
0 x0 ?+ T3 ^% a z& q) ^4 ~& n/ Y; @B=max(tz); %最大特征值( E9 n0 r0 F! |# J' u
[row, col]=find(D==B); %最大特征值所在位置4 q; n0 i I6 x) k9 m3 n
C=V(:,col); %对应特征向量
( i* e. r( ^ S6 Y* F4 @( ?' Z! YCI=(B-n)/(n-1); %计算一致性检验指标CI0 X6 V, b6 K3 F% ]( b8 n# p6 S9 R
CR=CI/RI(1,n);
0 A$ G8 Y2 h2 q5 a0 Jif CR<0.10
5 J# y. y! E, `( K disp('CI=');disp(CI);
+ u' N/ z" k0 y# i disp('CR=');disp(CR);
/ g" ~+ }1 r) q2 I disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');6 [3 S: P( ~$ M$ E( I
Q=zeros(n,1);* ]: L; w! t i; v
for i=1:n% k* H( o$ y" p U# n8 p# D
Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化
- u( R: ]2 i9 I9 d( J- ` end7 M9 ^( F. y/ l9 R" m6 A( b
Q %输出权重向量% s5 Y$ i) g& e4 S. a1 v
else
6 ~5 G( p8 D0 }7 U5 g: J, W& ? disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');
4 i1 q6 l* l' G* p, ]end
3 H6 N* _" U6 W |