层次分析模型
评价类问题可以用打分解决
第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构
分析问题的角度:
- 评价的目标
- 为了达到目标有哪些可选方案
- 评价的准则或指标是什么(即根据什么判断好坏,要查阅资料)
评价方法准则:权重表
同颜色的单元格的和为 1,它们表示的针对某一因素所占的权重
分析后绘制如下的层次结构图:
第二步:构造判断矩阵
由层次结构图可得出下列判断矩阵:
该图的含义:
重要程度可以理解为满意度
判断矩阵可能出现的问题:
第三步:由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能使用)
只有非一致矩阵才需要一致性检验,一致矩阵不需要进行一致性检验,否则会出错,且二阶正互反矩阵一定为一致矩阵(可以通过将RI(2)改为很小的数解决)
一致矩阵:
一致矩阵特点:各行(各列)之间成倍数关系
一致矩阵的证明(了解即可):
一致性检验:
修正方式:尽可能让判断矩阵的各行(各列)之间接近倍数关系
计算权重(使用matlab处理):
-
算数平均法求权重:归一化->行求和->求平均
-
一致矩阵:只需要选其中一列,计算权重即可
-
非一致矩阵,但一致性比例CR < 0.1:对每一列归一化,然后计算平均权重
-
-
几何平均法求权重:行乘积->开 1/n 次方->归一化
-
特征值法求权重(常用):求最大特征值对应的特征向量->归一化
汇总权重计算得分(使用excel处理,Excel F4可以锁定单元格):
% 判断输入的是否为正互反矩阵
% 检查矩阵 A 的维数是否大于不大于 1 或者不是方阵
ERROR = 0; % 默认输入没有错误
[r,c]=size(A);
if r ~= c || r <= 1
ERROR = 1;
end
%检查是否为正互反矩阵
%矩阵中不能有负数
if ERROR == 0
[n,n]=size(A);
if sum(sum(A<=0)) > 0
ERROR = 2;
end
end
% 检验 n 是否超过 15,因为 RI 最多为 15 维
if ERROR == 0
if n > 15
ERROR = 3;
end
end
% 判断 a_ij * a_ji == 1是否成立
% A' 为矩阵 A 的转置矩阵,ones(n) 为 n 阶全 1 矩阵,zeros(n) 为 n 阶全 0 矩阵
if ERROR == 0
if sum(sum(A' .* A ~= ones(n))) > 0
ERROR = 4;
end
end
局限性
- 评价的决策层不能太多,太多的话 n 会很大,判断矩阵和一致矩阵差异会很大
- 若决策层中指标的数据已知,一般不采用层次分析法