层次分析法从基本应用的角度上来说,可以认为成一种进行决策分析的方法。它适用于那些缺乏定量数据的决策场景。通过将一个复杂目标进行分层,最后达到评判最优方案的目的。
层次分析法将一个复杂目标分为三层:
A.目标层:这一层一般只有一个元素,就是最后要实现的目标,因而叫做目标层。
B.准则层:这一层的元素,一般是实现上一层目标要考虑到的多个因素。比如我们的目标层是买一套合适的房子,那准则层就可以是价格,地理位置,面积,风景等等。准则层下面还可以有多个子准则层,即以准则层的每一个元素为目标再细分出的几个子元素。
C.方案层:由待决策的几个方案构成。
在层次分析法中得到判别矩阵后往往需要进行一致性检验及计算权向量。
不再多说,直接上matlab代码。
%%AHP权重计算
%%数据读入
clc
clear all
A = [1 2 6;1/2 1 4;1/6 1/4 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('一致性指标:');disp(num2str(CI));
disp('一致性比例:');disp(num2str(CR));
disp('一致性检验结果:');disp(CR_Result);
disp('特征值:');disp(num2str(r));
disp('权向量:');disp(num2str(w));
这是一段相当简单的代码。作用是输入两两判别矩阵,输出该矩阵是否通过一致性检验,以及最后得到的权向量。
矩阵A即为待输入的判别矩阵。