使用Matlab實現AHP演算法

鴨脖發表於2013-02-01
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 %列印出一致性檢驗標準和層次總排序

相關文章