您的位置:首页 > 编程语言 > MATLAB

层次分析法(AHP)—matlab实现

2014-10-17 18:21 309 查看
层次分析法是一种主观的决策方法,可以用来确定一些指标权重,辅助决策依据的一种定性分析方法,层次分析法运用前需要构造层次模型:决策层,中间层(指标层),底层(选择层);形成等级层次;然后构造两两对比矩阵,通过9分位数来进行构造;对对比矩阵进行求最大特征值和特征向量,进行一致性检验;最后得到权重向量。具体实现过程如下Matlab程序:

clc;

clear;

A=[1 1.2 1.5 1.5;

0.833 1 1.2 1.2;

0.667 0.833 1 1.2;

0.667 0.833 0.833 1];

%因素对比矩阵A,只需要改变矩阵A

[m,n]=size(A); %获取指标个数

RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];

R=rank(A); %求判断矩阵的秩

[V,D]=eig(A); %求判断矩阵的特征值和特征向量,V特征值,D特征向量;

tz=max(D);

B=max(tz); %最大特征值

[row, col]=find(D==B); %最大特征值所在位置

C=V(:,col); %对应特征向量

CI=(B-n)/(n-1); %计算一致性检验指标CI

CR=CI/RI(1,n);

if CR<0.10

disp('CI=');disp(CI);

disp('CR=');disp(CR);

disp('对比矩阵A通过一致性检验,各向量权重向量Q为:');

Q=zeros(n,1);

for i=1:n

Q(i,1)=C(i,1)/sum(C(:,1)); %特征向量标准化

end

Q %输出权重向量

else

disp('对比矩阵A未通过一致性检验,需对对比矩阵A重新构造');

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: