🌈

层次分析法

适用问题类型主观决策权重计算
常用程度⭐⭐
难度⭐⭐

核心思路:将方案层对准则层的权重及准则层对目标层的权重进行综合

首先确定:

  1. 评价目标是什么
  1. 评价指标有哪些
  1. 有什么可选方案

两两比较法

标准:

1.首先得到如下判断矩阵,并定义如下,得到指标重要程度

2.确定待选方案在某一指标上的得分

3.一致性判断

💡
注意到得到的判断矩阵可能存在不一致的情况,因此先进行一致性检验
  1. 三种判断方法

b. 一致性指标计算

左图为一致性矩阵,右图则不是。右图需要用第三种方法判断其一致性

c.随机一致性指标表

d.一致性比例

如果CR大于0.1,则强行往一致性上靠,调整成倍数关系即可

4.权重计算

💡

分别计算准则层和方案层权重

  1. 算术平均法求权重(不常用)
  1. 特征值法求权重
  1. 归一化:x=xmin(x)max(x)min(x)x' = \frac{x - \min(x)}{\max(x) - \min(x)}

5.层次总排序/层次一致性判断


代码部分

criterion_matrix=[1 0.5 4 3;2 1 5 5;0.25 0.2 1 0.25;1/3 0.2 4 1];
scheme_mat_1=[1 2 5;0.5 1 2;0.2 0.5 1];
scheme_mat_2=[1 1 3;1 1 2;1/3 0.5 1];
scheme_mat_3=[1 2 3;0.5 1 2;1/3 0.5 1];
scheme_mat_4=[1 3 5;1/3 1 4;0.2 0.25 1];
%定义判断矩阵
for n=1:4
	mat=['co(scheme_mat_' num2str(n) ')'];
	eval(mat);
end
%判断一致性
for n=1:4
	mat=['weight(scheme_mat_' num2str(n) ')'];
	eval(mat);
end
%分别求出方案层权重
co(criterion_matrix);
weight(criterion_matrix);
%最后求出准则层权重
%导入excel进行计算即可
function co(matrix)
    [n n]=size(matrix);
    [V,D]=eig(matrix);
    lambda=max(max(D));
    CI=(lambda-n)/(n-1);
    RI=[0 0.0001 0.52 0.89 1.12 1.26];
    CR=CI/RI(n);
    if CR<0.1
        disp('通过一致性检验');
    else
        x=['未通过一致性检验,请调整参数'];
        disp(x)
    end
end
function weight(matrix)
    [V D]=eig(matrix);
    temp=V(:,1);
    omega=temp ./ sum(temp);
    disp(omega);
end