MATLAB数学建模必备算法--层次分析法AHP

其主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀)

一个很典型的层次分析法案例:

确定评价目标:

高考完后小明想要去旅游,有三个目的地供他选择:

  1. 苏杭
  2. 北戴河
  3. 桂林

确定评价准则:

假如小明要选择目的地,他同时考虑以下的条件,我们称为评价准则:

  1. 景色
  2. 花费
  3. 居住
  4. 饮食
  5. 交通

确定评价准则的判断矩阵:

在这之前,我们要介绍一下重要程度表:

当两个条件互相比较时,谁比谁重要,可以用这张表的数值(1~9)来进行打分。

1

我们要依次确定这个五个条件的权重以便小明选择目的地,假如我们问小明:

博主	:”小明,你觉得这五个条件对你来说对于选择目的地来说更重要啊?“
小明:”一次让我来说的话可能不太好判断,每个我感觉都挺重要啊。。。“

于是我们就会遇到这样的问题,但条件很多时,我们就不好一下子直接说出哪一个条件对于目的地的选择更加重要(或者说在小明心中的权重)。所以这个时候我们可以构造一个表格来两两比较:
在这里插入图片描述
观察以上表格,分成三个部分:

  • 对角线以上

拿景色与花费做例子,景色相比与花费,小明觉得景色对于他来说要求不是那么高,反而会更在意花费,所以景色相对于花费的值是1/2
2

  • 对角线

     由于表格的对角线是条件与自己相比,所以值为1(同等重要)
    
  • 对角线以下
    既然对角线以上是景色比花费,那么对角线就是花费比景色,正好相反
    3

所以我们看到,对角线以下的是对角线以上的倒数,由于有五个评价准则,所以一共要两两比较:
4次就可以填满整张表。
下面是结果:
5
6
总结:上面的上面这个表是一个5 X 5的方阵,我们记为A,对应的元素为:
在这里插入图片描述

这个方阵有如下特点:

  1. aij的意思是i与指标𝑗相比,𝑖的程度
  2. 𝑖 = 𝑗时,两个指标相同,因此同等重要记为1,这就解释了主对角线元素为1。
  3. 𝑎ij> 0且满足𝑎ij X 𝑎ji = 1 (我们称满足这一条件的矩阵为正互反矩阵)
上面这个矩阵就是层次分析法中的判断矩阵,得到了判断矩阵,就可以计算出权重了

确定目标的判断矩阵:

既然评价准则之间有判断矩阵,在小明心中,对于景色来说,苏杭,北戴河,桂林之间可能也有不同的分数,他可能觉得在景色方面,桂林更胜一筹,那么桂林的分数就要比其它两个的分数要高,那这样单单就景色来说,苏杭,北戴河,桂林之间就要两两之间进行比较,其它的条件也是同样如此,于是我们可以类比以上的表格:

  • 景色:

7

  • 花费
    8
  • 居住
    9
  • 饮食
    10
  • 交通
    11

一致矩阵的概念

由于以上表格都是我们问,小明答,有很强的主观意愿,所以这张表表格很可能出错,下面我们就来看一个错误的例子:
12
如上图所示,出现了不一致的现象,那么我们来看一个一致的矩阵:
13
我们观察这个矩阵,它的各行各列成比例,我们称这个矩阵为一致矩阵,我们可以用数学符号来表达:
14
所以,综上所述:各行(各列)之间成倍数关系的矩阵为一致矩阵。

总结:

  • 矩阵中每个元素都大于0且对角线元素为1的矩阵我们成为正互反矩阵
  • 在层次分析法中,我们构造的判断矩阵都是正互反矩阵
  • 若正互反矩阵满足各行各列成比例,我们称为一致矩阵
所以,我们得到的判断矩阵一定是正互反矩阵,由于跟实际情况中可变的因素有很多,所以我们的正互反矩阵在现实生活中很难满足各行各列成比例,所以也就很难让正互反矩阵成为一致矩阵,但是我们可以对正互反矩阵进行一致性检验,让它在一定的范围误差内,在此误差内我们可以看作其满足一致性矩阵的条件,所以我们在得到了判断矩阵(正互反矩阵)后要进行一致性检验

对判断矩阵进行一致性检验:

原理: 检验我们构造的判断矩阵和一致矩阵是否有太大的差别。

一致性检验的步骤:
15

  1. 计算判断矩阵的特征值:

    如果特征值中有虚数,则比较的是特征值的模长。
    这个由于计算较为繁琐,我们可以交给MATLAB完成,使用eig命令既可以计算特征值,也可以计算特征向量。
    

    当最大特征值等于矩阵阶数的时候,我们的正互反矩阵才为一致矩阵:
    16
    当最大特征值与n相差越大时,我们得到的矩阵越不一致。

  2. 计算一致性指标CI
    17

  3. 查找对应的平均随机一致性指标RI

17

注:在实际运用中,n很少超过10,如果指标的个数大于10,则可考虑建立 二级指标体系,或使用我们以后要学习的模糊综合评价模型。

  1. 计算一致性比例CR
    18

  2. 对一致性比例CR进行判断:

    如果CR<0.1,则判断矩阵的一致性可以接受。
    如果CR>0.1,则要对判断矩阵进行修正。

计算判断矩阵的权重:

计算权重有三种方法:
19

算数平均法求权重:

步骤:
20

  1. 将判断矩阵按照列归一化(每一个元素除以其所在列的和)
    我们看一个例子:
    21
    第一列:
    22
    第二列:
    23
    第三列:
    24
    于是我们得到以下表格:
    25
  2. 将归一化的各行相加:

相加后我们得到以下表格:
26

  1. 除以n得到最后的权重

27

几何平均法求权重:

步骤:
28

  1. A的元素按照行相乘得到一个新的列向量

    在MATLAB中使用prod(A,2)命令即可以对一行进行相乘
    

A =

    1.0000    2.0000    5.0000
    0.5000    1.0000    2.0000
    0.2000    0.5000    1.0000

使用prod(A,2)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值