清风笔记 一、层次分析法(AHP)

一、层次分析法

层次分析法(analytic hierarchy process),简称AHP。是建模比赛中比较基础的模型之一,其主要解决评价类的问题。如选择哪种方案最好,哪位员工表现最好等。
它是一个较为 主观的评价方法,其在赋权得到权重向量的时候,主观因素占比很大。因而在建模比赛中,常常与客观方法得到的权重向量方法进行综合,而得出一个综合的权重向量,进行后续操作。

(一)模型部分

需要明确三个问题

1、目标?
2、有哪些方案?
3、评价指标?评价体系?(可以搜别人论文,用知网什么的,比较专业)

怎么比较权重?

分而治之
一次性考虑五个指标的权重往往考虑不周,因此采用两两比较最终决定权重

第一步:填写判断矩阵:

判断矩阵
注意判断矩阵中的数只能是1-9和他们的倒数
如何填满这个表格,就需要用判断矩阵得出,这也是构造判断矩阵的意义!

在层次分析法中,我们构造的矩阵都是正互反矩阵( aij x aji = 1)

若我们的判断矩阵(也就是正互反矩阵)满足aik= aij x ajk,那就是一致矩阵

第二步:一致性检验:

检验我们构造的判断矩阵和一致性矩阵是否大致相同

一致矩阵 的充要条件:

  1. aij >0
  2. a11 =a22 =…=ann =1
  3. 各行各列成倍数关系

=>一致矩阵有一个特征值为n,其余特征值均为0(n也就是他最大特征值了)
因此判断矩阵越不一致,最大特征值和n相差的就越大


一致性检验步骤
在这里插入图片描述
经检验CR<0.1后,即可开始计算权重了

第三步:计算权重:

在这里插入图片描述
综合上述三列,我们求平均权重:(我用算术平均法,比较好理解)
苏杭 = (0.5882+0.5714+0.625)/3=0.5949
北戴河 = (0.2941+0.2857+0.25)/3=0.2766
桂林 = (0.1177+0.1429+0.125)/3=0.1285
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理可求出北戴河和桂林得分

用EXCEL计算可大大减轻工作量

关键:F4可以锁定单元格


(二)模型拓展部分

1、评价的决策层不能太多,太多的话n会很大,这样判断矩阵和一致矩阵差异可能会很大。因为平均随机一致性指标 RI 的表格中 n 最多是15,因此应该根据实际情况选择是否应用此方法。
2、如果说只想拿到的决策因素的权重向量,那么在第一步递阶层次结构的时候,只需要目标层和准则层即可,构造判断矩阵也只需要构造出一个,并进行检验,检验通过了,差不多就拿到了权重向量。

总结:
1)分析系统中各因素之间的关系,建立系统的递阶层次结构
2)对于同一层次的个元素关于上一层次中某一准则的重要性两两比较,构造两两比较矩阵(判断矩阵)
3)由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)
4)填充权重矩阵,根据矩阵计算得分,得出结果。


(三)代码部分

%% 输入判断矩阵
clear;clc
disp('请输入判断矩阵A: ')
% A = input('判断矩阵A=')
A =[1 1 4 1/3 3;
 1 1 4 1/3 3;
 1/4 1/4 1 1/3 1/2;
 3 3 3 1 3;
 1/3 1/3 2 1/3 1]

这里的输入矩阵为了方便,可以在工作区新建变量,然后直接把excel表中的数据直接复制过去,这样就不用一个个输入了

%% 计算一致性比例

%%1、计算一致性指标CI
[V,D] = eig(A);
[n,n] = size(A);
MAX_eig = max(max(D));
CI = (MAX_eig-n)/(n-1);

%%2、查找平均随机一致性指标RI
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.499 1.52 1.54 1.56 1.58 1.59]

%%3、计算一致性比例CR
CR = CI/RI(n)
disp('一致性指标CI:');disp(CI)
disp('一致性比例CR:');disp(CR)
if CR < 0.1
    disp('矩阵的一致性可以接受')
else 
    disp('需要对判断矩阵进行修正')
end
%%计算权重

% % % % % % % % % % % % %方法1: 算术平均法求权重% % % % % % % % % % % % %
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;
disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)

% % % % % % % % % % % % %方法2: 几何平均法求权重% % % % % % % % % % % % %
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))

% % % % % % % % % % % % %方法3: 特征值法求权重% % % % % % % % % % % % %
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )

(四)课后例题

% % % % % % % % % % % % %作业拓展1: 检查A是否为正互反矩阵% % % % % % % % % % % % %
%1、检查矩阵的维数是否不大于1或不是方阵
if m~=n || m<=1 || n<=1 
    ERROR=1;
end

%2、判断是否矩阵A中有元素小于等于0
if ERROR == 0 
    [n,n]=size(A);
    for i=1:n
        for j=1:n
            if A(i,j)<=0
                ERROR=2;
            end
        end
    end
end

%3、检查n是否过了15
if ERROR==0
    if n>=15
        ERROR=3;
    end
end

%4、检查A_ij是否等于A_ji
if ERROR==0
    for i=1:n
        for j=1:n
            if A(i,j)*A(j,i)~=1
                ERROR=4;
            end
        end
    end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值