赞
踩
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表示xi对xj的重要程度,相应的有aii=1,aijaji=1,aij>0
步骤二 一致性检验
因为打分矩阵是半客观半主管构造的,理论上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=n−1λmax−n
C
R
=
C
I
R
I
CR = \frac{CI}{RI}
CR=RICI
当
C
R
<
0.1
时可以认为一致性检验通过
当CR<0.1 时可以认为一致性检验通过
当CR<0.1时可以认为一致性检验通过
注意事项
进行一致性检验的时候 RI 一般只提供到15 所以注意对于特别大的数据 我们不能使用层次分析法,采用topsis方法。
代码
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。