AHP

%AHP
% 层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。
% 不妨用假期旅游为例:
% 假如有3个旅游胜地A、B、C供你选择,你会根据诸如景色、费用和居住、饮食、旅途条件等一些准则去反复比较这3个候选地点.
% 首先,你会确定这些准则在你的心目中各占多大比重,如果你经济宽绰、醉心旅游,自然分别看重景色条件,
% 而平素俭朴或手头拮据的人则会优先考虑费用,中老年旅游者还会对居住、饮食等条件寄以较大关注。
% 其次,你会就每一个准则将3个地点进行对比,譬如A景色最好,B次之;B费用最低,C次之;C居住等条件较好等等。
% 最后,你要将这两个层次的比较判断进行综合,在A、B、C中确定哪个作为最佳地点。

% https://wiki.mbalib.com/wiki/AHP

% instance
%使用中只需改变A即可
A=[1 2 6;0.5 1 4;1/6 0.25 1]; %评判矩阵(成对比较矩阵)
% 一 致 性 检 验 和 权 向 量 计 算
[n,n]=size(A);
[v,d]=eig(A); %第一个特征值最大
r=d(1,1);
CI=(r-n)/(n-1);
RI=[0 0 0.58 0.90 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(n);
if CR<0.10
CR_Result='通过';
else
CR_Result='不通过';
end
%%权 向 量 计 算
w=v(:,1)/sum(v(:,1));
w=w';
% 结 果 输 出
disp('该 判 断 矩 阵 权 向 量 计 算 报 告 :');
disp(['一 致 性 指 标:',num2str(CI)]);
disp(['一 致 性 比 例:',num2str(CR)]);
disp(['一 致 性 检 验 结 果:',CR_Result]);
disp(['特 征 值:',num2str(r)]);
disp(['权 向 量:',num2str(w)]);

%详细使用例子见上述链接

posted on 2019-02-23 19:43  lanceshield  阅读(319)  评论(0编辑  收藏  举报

导航