AHP-层次分析法

  1. 步骤一:构造打分矩阵

在这里插入图片描述
a i j 表示 x i 对 x j 的重要程度,相应的有 a i i = 1 , a i j a j i = 1 , a i j > 0 a_{ij} 表示 x_i 对x_j的重要程度,相应的有 a_{ii}=1,a_{ij}a_{ji}=1,a_{ij}>0 aij表示xixj的重要程度,相应的有aii=1,aijaji=1,aij>0

  1. 步骤二 一致性检验
    因为打分矩阵是半客观半主管构造的,理论上i对j的重要程度=(i对k)* (k对j)的,即
    a i j = a i k a k j a_{ij} = a_{ik}a_{kj} aij=aikakj
    由于主观性 上面等式可能不成立 ,比如苹果比西瓜好吃,西瓜比香蕉好吃,但又觉得香蕉比苹果好吃,所以做一致性检验看看在多大程度上能满足上式
    计算公式如下
    C I = λ m a x − n n − 1 CI = \frac{ \lambda_{max} - n }{ n - 1} CI=n1λmaxn
    在这里插入图片描述
    C R = C I R I CR = \frac{CI}{RI} CR=RICI
    当 C R < 0.1 时可以认为一致性检验通过 当CR<0.1 时可以认为一致性检验通过 CR<0.1时可以认为一致性检验通过

  2. 注意事项
    进行一致性检验的时候 RI 一般只提供到15 所以注意对于特别大的数据 我们不能使用层次分析法,采用topsis方法。

  3. 代码

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值