|
我自己编了一个层次分析法的程序,供大家参考,还请大家多多指教。
function W=aam(B,n)
%exemple
%A=[1 1/5 1/3;5 1 3;3 1/3 1];准则层对目标层的判断矩阵
%A1=[1 2 3];对应的下标
%C1=[1 3;1/3 1];方案层对准则层的判断矩阵
%C2=[1 1/5;5 1];
%C3=[1 2;1/2 1];
%C={C1,C2,C3};
%E={[1 2],[2 3],[1 2]};对应的下标
%B={{A,A1},{C,E}};
%n=[1 3 3];各层的因素个数
%W=ccf(B,n)
RI=[inf inf 0.58 0.96 1.12 1.24 1.32 1.41 1.45];
%一致性的修正值
ww1=[1];
p=length(n)-1;
for q=1:p
ZCR=[];
ww2=zeros(n(q+1),n(q));
for j=1:n(q)
[V,D]=eig(B{q}{1}{j});
[D,I]=max(max(D));
m=n(q+1);
CI=(D-m)/(m-1);
CR=CI/RI(m);
ZCR=[ZCR;CR];
coherence;
%一致性检验的函数
V=V(:,I);
k=sum(V);
w=V./k;
ww2(B{q}{2}{j},j)=w;
end
CR=ww1'*ZCR;
coherence;
ww1=ww2*ww1;
end
W=ww1;
coherence.m
if CR>0.1
'error'
return
end
|
|