MATLAB-AHP(层次分析法求解)

本文介绍了一种基于MATLAB的层次分析法(AHP)实现流程。通过输入判断矩阵进行特征向量迭代计算,得到各因素权重,并进行一致性检验。此外,还提供了处理多个判断矩阵的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%层次分析法,AHP
disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
    i=i+1;
    x(:,i)=A*y(:,i-1);
    m(i)=max(x(:,i));
    y(:,i)=x(:,i)/m(i);
    k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);
%以下是一致性检验
% CI=(t-n)/(n-1);RI=[0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1,59];
% CR=CI/RI(n);
% if CR<0.10
%     disp('此矩阵的一致性可以接受');
%     disp('CI=');disp(CI);
%     disp('CR=');disp(CR);
% end
j=1;
while j<=n
   
disp('请输入判断矩阵B(n阶)');
B=input('B=');
[n1,n1]=size(B);
W=[];
x=ones(n1,100);
y=ones(n1,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=B*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
    i=i+1;
    x(:,i)=B*y(:,i-1);
    m(i)=max(x(:,i));
    y(:,i)=x(:,i)/m(i);
    k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
W(j,:)=y(:,i)/a;
t=m(i);
disp(W(j,:));
%以下是一致性检验
% CI=(t-n1)/(n1-1);RI=[0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1,59];
% CR=CI/RI(n1);
% if CR<0.10
%     disp('此矩阵的一致性可以接受');
%     disp('CI=');disp(CI);
%     disp('CR=');disp(CR);
% end
j=j+1
end
%求解--看最后是哪个选项的分数最高
disp('最后结果');
u=1;
z=zeros(1,15);
while u<=n1
    for t=1:n
    z(1,u)=w(t)*W(t,u)+z(1,u);
    end
    u=u+1;
end
disp(z);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值