在层次分析法中,知道了判断矩阵,用什么软件可以快速求得权重和一致性检验的值啦?看补充:matlab难道还要自己编写代码才能求到吗,yaahp先要画出层次模型图,才能求,我要的只是把矩阵输进
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/29 09:21:22
在层次分析法中,知道了判断矩阵,用什么软件可以快速求得权重和一致性检验的值啦?看补充:matlab难道还要自己编写代码才能求到吗,yaahp先要画出层次模型图,才能求,我要的只是把矩阵输进
在层次分析法中,知道了判断矩阵,用什么软件可以快速求得权重和一致性检验的值啦?看补充:
matlab难道还要自己编写代码才能求到吗,yaahp先要画出层次模型图,才能求,我要的只是把矩阵输进去,就能求到结果,行吗,谢谢各位.
在层次分析法中,知道了判断矩阵,用什么软件可以快速求得权重和一致性检验的值啦?看补充:matlab难道还要自己编写代码才能求到吗,yaahp先要画出层次模型图,才能求,我要的只是把矩阵输进
没有这种软件,但是我写了一个程序
经检验,效果不错,主要正对三层de
如果是四层的话,自己归类
PS:四类的应该能解,但是我没试过
一下是我的程序
function w=l_ahp(num,g)
% w:最后权重 num:层数 g:行向量(各层准则数量)
% 调运方式:w=l_ahp(num,g)
% EXAMPLE:
disp('-----层次分析系统(AHP)-------')
for i=2:num %控制各层
disp(['第',num2cell(i),'层分析'])
trace_w{i-1}(1:g(i),1:g(i-1))=zeros(g(i),g(i-1));
trace_l{i-1}(1,1:g(i-1))=zeros(1,g(i-1));
CI{i-1}(1:g(i-1))=zeros(1,g(i-1));
CR{i-1}(1:g(i-1))=zeros(1,g(i-1));
for j=1:g(i-1)
disp(['第',num2cell(i),'层','第',num2cell(j),'个判断矩阵分析'])
A=input('输入判断矩阵(按你的顺序)');
[w,l]=eig(A);
ll=(max(l));
[ll,index]=max(ll);
w=w(:,index);
w=abs(w);
w=w./sum(w)
trace_w{i-1}(:,j)=w
trace_l{i-1}(1,j)=ll
end
CI{i-1}(:)=(trace_l{i-1}(:)-g(i))./(g(i)-1);
RI=RI_process(g(i))
CR{i-1}(:)=CI{i-1}(:)./RI
c=find(CR{i-1}(:)>=0.1)
zhi=isempty(c);
if zhi==1
disp('一致性检验结果(层内单派层)')
disp(CR{i-1});
disp('各个判断矩阵权向量')
disp(trace_w{i-1});
disp('各个判断矩阵最大特征值')
disp(trace_l{i-1});
else
['请修改第',num2cell(c),'次的比较矩阵']
['以下结果无效']
break;
end
end
disp('层次总排序及其一致性检验')
w=trace_w{num-1}(1:end,1:end)*trace_w{1}(1:end,1:end);
w=abs(w);
w=w./sum(w);
CI=sum(trace_w{1}(:).*CI{2}(:));
CR=CI/RI_process(g(num));
if CR<0.1
disp('综合一致性检验结果');
disp(num2cell(CR));
disp('最后权重')
disp([num2cell(w)]);
w
else
disp('一致性检验不合格请重新建立判断矩阵');
end
function RI=RI_process(gs)
switch gs
case 1
RI=0;
case 2
RI=0;
case 3
RI=0.58;
case 4
RI=0.90;
case 5
RI=1.12;
case 6
RI=1.24;
case 7
RI=1.32;
case 8
RI=1.41;
case 9
RI=1.45;
case 10
RI=1.49;
case 11
RI=1.51;
otherwise
disp('超出判断范围')
end