层次分析法AHP matlab

%层次分析法(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('权重为:');
disp(w);
%一致性检验
CI = (t-n)/(n-1);
RI = [0 0 0.52 0.89 1.12 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
% function [Q]=AHP(B)
% %Q为权值,B为对比矩阵
% %导入判别矩阵B
% [n,m]=size(B);
% %判别矩阵具有完全一致性
% for i=1:n
%     for j=1:n
%         if B(i,j)*B(j,i)~=1   
%         fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%d\n',i,j,B(i,j),B(j,i))  
%         end  
%     end
% end
% %求特征值特征向量,找到最大特征值对应的特征向量
% [V,D]=eig(B);
% tz=max(D);
% tzz=max(tz);
% c1=find(D(1,:)==max(tz));
% tzx=V(:,c1);%特征向量
% %% quan=zeros(n,1);
% for i=1:n
% quan(i,1)=tzx(i,1)/sum(tzx);
% end
% Q=quan;
% %一致性检验
% CI=(tzz-n)/(n-1);
% RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
% %判断是否通过一致性检验
% CR=CI/RI(1,n);
% if CR>=0.1
%    fprintf('没有通过一致性检验\n');
% else
%   fprintf('通过一致性检验\n');
% end
% end

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值