数学建模中的层次分析法

层次分析法,是数学建模在评价类问题中常用的一种评价方法,其主要思想是通过建议一个层级结构,并对各级关系建立判断矩阵,通过对矩阵进行数据标准化归一化等操作,最终得到一个关于各指标的权重矩阵,根据矩阵判断出最后的评价结果。

下面以一个具体的例子为例,详细的介绍层次分析法中的各个步骤

例:高考结束后,於彦想去旅游,现在他要在北戴河,苏杭和桂林三个旅游地之间选择一个,请建立评价体系,帮助於彦选择旅游目的地。 

步骤一拿到问题后,我们首先要考虑三个问题:一,我们的目标是什么。二,我们的评价指标是什么。三供我们选择的目标有哪些。

这个问题中,我们的目标显然是帮助於彦选择旅游的最佳目的地,可供我们选择的目标是 北戴河,苏杭和桂林。 我们的评价指标为:①景色②旅游花费③居住环境④饮食情况⑤交通便利程度(这里说明一下,评价指标根据问题不同也会不同,我们可以通过搜索信息得出关于该问题的常用评价指标,举个例子:在本题中假如我们使用百度搜索:大众最关心的关于旅游的问题)。

步骤二 根据步骤一中的分析,建立起层次结构,画出层次结构图。(层级结构图要出现在论文中)

 

 在这个途中,目标对应目标层,评价指标对应准则层,选择的目的地对应方案层

这三个是写论文时用的专属名词,不建议自己更换词语。

步骤三 根据层次结构建立判断矩阵(关建)

建立判断矩阵,要根据目标层和准则层之间,准则层和方案层之间分别建立。

以本题为例。先建立目标(选择的目的地)和准则层(评价指标)之间的判断矩阵,目的是判断出这几个评价指标在选择目的地之中所占的权重,也就是说判断出这几个指标哪一个会更加影响於彦关于目的地的选择。建立的判断矩阵如下(里面的数据可以忽略)

 在这个题中,我们可以让於彦来给我们填一下这个表格中的绿色部分(白色部分和绿的部分是对称的),但是在其他问题中,我们可能找不到当事人来给我们填写这个权重表格,因此我们需要专家打分,(实际建模中,专家打分是个幌子,一共三天时间,没有人会去找所谓的专家来进行打分的,我们可以上网搜集一下资料,或者根据题目给的资料自己主观的打一下分)这也是层次分析法的一个重要的缺点,主观性太强,后面还会再讲。

 要注意!在填写判断矩阵的之后,根据下表来填写,比如上面那个图中,花费比景色的重要程度在1-3之间,也就是既不同样重要,花费又不比景色稍微重要的那么厉害。不能始终下表中没有出现过的数字来填写,比如0.3,0.35,11……


 建立完目标层和准则层之间的判断矩阵之后,下面就要建立准则层和目标层之间的判断矩阵。

这一步中,准则层里有几个判断指标,就要有几个判断矩阵,如:本题中,准则层里有 

 这五个判断指标,我们就要建立这五个指标关于方案层里各方案的判断矩阵。

景色关于各方案的判断矩阵:                                                       花费关于各方案的判断矩阵:

 

 

 

 

居住关于各方案的判断矩阵:                                                        饮食关于各方案的判断矩阵:

 

 

 

 

 

 交通关于各方案的判断矩阵: 

 注意,上面五个判断矩阵也是让於彦帮我们填的。(实际建模中,专家打分是个幌子,一共三天时间,没有人会去找所谓的专家来进行打分的,我们可以上网搜集一下资料,或者根据题目给的资料自己主观的打一下分),在填的时候也要根据下面这个表格来填。

表格的使用上面叙述过了。


到这,题目中需要的判断矩阵我们就构造完了,但是这些矩阵不一定能满足现实实际和求解的需要(毕竟这些矩阵都是我们自己编的数值放进去的),有时候会产生相悖的地方。(这个地方不举例子了,知道有可能会出现这个问题就行了。)

特别是计算权重时,我们要求矩阵必须通过一致性检验。下面来介绍一下一致性检验

步骤四一致性检验

介绍一致性之前,我们先来说一下构造的矩阵有什么特点:

 以这个判断矩阵为例:关于主对角线(左上到右下),对称位置的元素的乘积是1,这是实际要求所决定的,如果不是1,同样会产生相悖了。 这种关于主对角线对称位置的乘积是1的矩阵叫做正互反矩阵。

下面给出一致性的定义:若正互反矩阵任意两行或者任意两列之间的比值是一定的,只要求比较的两行或两列之间的比值是一定的,那这个矩阵就是一致性矩阵。可能有些难懂,举个例子:        

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​    1        2          3        4         5

 第二列的每个数都是第一列的对应位置的数的0.5倍。第五列每个数都是第三列对应位置的每个数的3/4倍。行之间也是这样。

 下面开始介绍一致性检验的步骤:

假设一个矩阵A是n*n的矩阵。

(1)计算其中为矩阵的最大特征值。(别着急,前面确实没介绍过最大特征值是个啥东西),这一个在论文里不用体现出咋算的,知道怎么编程实现即可。

在matlab中,使用命令[V,D] = eig(A),V返回的就是最大特征值,D是最大特征值对应的特征向量。

(2)查找对应的指标RI

 

 n是矩阵的阶数,RI为对应的指标。

表格中RI咋算出来的?这个表格咋来的?不是我们关心的问题,只要会用就可以了!

 (3)计算一致性比例CR

 如果CR<0.1,我们就认为这个矩阵通过了一致性检验,可以计算权重了。

如果CR>0.1咋整?总不能不做了。还记得这些矩阵是怎么来的吗,是我们自己(按道理来讲是专家打分)编的数据放进去的。那我们稍微调整一下矩阵里的数据让他通过一致性检验不久得了。

一致性矩阵的定义再放一遍:若正互反矩阵任意两行或者任意两列之间的比值是一定的,只要求比较的两行或两列之间的比值是一定的,那这个矩阵就是一致性矩阵。

 如此,我们就有了调整数据的方向:往任意两行或者任意两列之间的比值是一定的这个方向调整就行了。 这个调整过程大可不必出现在论文里,这算是一丢丢的投机取巧了  q(≧▽≦q)。但是我们构造的矩阵也不要一致性太强了,不然太假。

步骤五 求权重

求权重有多种方法,目前这里只介绍一种比较简单的方式——算数平均法

算数平均法的步骤如下:

 (1)将判断矩阵按照列归一化——每一个元素除以该元素所在列的所有元素的和

 (2)将归一化后的矩阵按行求和——算出归一化后的矩阵的每一行的和,得到一个列向量

 (3)将步骤(2)中得到的列向量中的每个元素除以矩阵阶数n,即可得到权重向量。

举例如下:

以下面的矩阵为例: 

 

 我们把这些权重填在下面的表格中(表格的格式可以借鉴一下,层次分析法基本上这样列都没问题)

 

 苏杭,北戴河,桂林关于 花费,居住,饮食,交通的权重也可以算出。

指标权重怎么填呢?还记得一开始构造的目标层和准则层之间的那个判断矩阵吗?

 根据上面这个矩阵,补充完数据后,也可以算出各个指标关于目标的权重。

 步骤六 计算得分,得出结果 

 

 假设我们各项权重已经算出,得出结果如上图。(数据可能和上面不同,不用纠结,关注这个步骤就好)

 可以按照如下方式计算各方案的得分:

 类似的,我们可以得到北戴河的得分是0.245,桂林的得分是0.455(可以根据本步骤中的数据自己列下式子算一算)

桂林的得分最高,因此最佳的旅游地点是桂林。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值