例题
问题:填好志愿后,小明同学想出去旅游。在查阅了网上的攻略后,他初步选择了苏杭、北戴河和桂林三地之一作为目标景点。
请你确定评价指标、形成评价体系来为小明同学选择最佳的方案.
分析:本题为评价类问题,且决策层(指标)的数据未知,可以使用层次分析法建模。
(1)评价目标是什么:选择最合适的目标景点
(2)有哪几种可选方案:苏杭、北戴河和桂林
(3)评价的指标是什么:
通过在知网、万方数据库等平台查询,筛选得出如下五个的影响因素:景色、花费、居住条件、饮食、交通。
(4)建立层次结构模型
将决策问题分解为三个层次,最上层为目标层M,即选择最佳的目标景点。最下层为方案层,即可选方案。中间层为准则层,包括景色、花费、居住条件、饮食、交通五个决策指标。
(5)设置权重
重要程度表用于指标间的两两比较:
层次分析法将有如下三类权重表格:
①打分表格(指标+目标)
②指标间判断矩阵(指标间的重要程度对比)
其中a_{ij}代表相对于指标j,i的重要程度。该矩阵是正互反矩阵。
③某一指标下的判断矩阵
其中b_{ij}代表方案i相对于方案j的满意程度。矩阵B是正互反矩阵。
第一步:填写指标间、与方案间判断矩阵
但是在景色下的案例权重矩阵中,出现了矛盾现象:景色方面苏杭>北戴河,北戴河>桂林,但是苏杭=桂林。与设置矛盾,此时应该考虑矩阵的一致性问题。
第二步:一致性检验
引理:n阶正互反矩阵A为一致性矩阵时当且仅当特征值λ=n。否则一定满足λ>n
①计算一致性指标CI
②查找对应的平均随机一致性指标RI
③计算一致性比例CR
当CR < 0.1时,可以认为矩阵的一致性可以接受;否则需要对判断矩阵进行修正。(修正方法可以根据一致矩阵的行列间数据成比例进行修改)
max()和max(max())的区别
对于矩阵max()返回包含最大值的行,而max(max())返回矩阵中的最大值
%{
max_eig:最大特征值
D:由全部特征值构成的对角阵
%}
disp('请输入判断矩阵A')
A=input('A=');
[n n] = size(A);
[V D] = eig(A);
max_eig = max(max(D));
CI = (max_eig - n)/(n-1); %第一步:CI
RI = [0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]; %第二步:RI
CR = CI/CR