使用Matlab实现AHP算法

来源:互联网 发布:唯品会数据分析 编辑:程序博客网 时间:2024/06/06 18:02
clc,clear 
fid=fopen('txt3.txt','r'); 
n1=6;n2=3; 
a=[]; 
for i=1:n1 
tmp=str2num(fgetl(fid)); 
a=[a;tmp]; %读准则层判断矩阵
end 


for i=1:n1 
str1=char(['b',int2str(i),'=[];']); 
str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); 
eval(str1); 
for j=1:n2 
tmp=str2num(fgetl(fid)); 
eval(str2); %读方案层的判断矩阵
end 
end 




ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
[x,y]=eig(a); 
lamda=max(diag(y)); 
num=find(diag(y)==lamda); 
w0=x(:,num)/sum(x(:,num)); %w0表示特征向量除以特征向量的代数和,表示层次单排序


cr0=(lamda-n1)/(n1-1)/ri(n1) %表示准则层判断矩阵的一致性检验
for i=1:n1 
[x,y]=eig(eval(char(['b',int2str(i)]))); 
lamda=max(diag(y)); 
num=find(diag(y)==lamda); 
w1(:,i)=x(:,num)/sum(x(:,num)); %表示方案层各个判断矩阵的层次单排序,层次总排序矩阵等于准则层层次单排序乘以方案曾层次单排序
cr1(i)=(lamda-n2)/(n2-1)/ri(n2); %表示方案层各个判断矩阵的一致性检验
end 
cr0,cr1, ts=w1*w0, cr=cr1*w0 %打印出一致性检验标准和层次总排序
原创粉丝点击