Hello大家好,今年数学建模国赛将于9月中旬举行,是时候提前做一些准备了。
本次模型非常简单,只是介绍比较得详细,我下次注意,争取限制下字数。
文末准备了 层次分析-python 模型的实现,简单懂得模型原理便能一眼看懂代码。
文章目录
一、层次分析法的例题
1.1 两两比较获得判断矩阵
1.2 一致性正互反矩阵的引入
1.2.1 一致性检验的步骤
1.3 根据一致性正互反矩阵计算权重
二、层次分析法
步骤:
三、层次分析法的一些局限性
四、模型拓展
1. 多个准则层:
2. 准则不对应全部方案:
*3. 一个准则只对应自己的方案
五、代码展示
代码1:
代码2:
层次分析(The analytic hierarchy process) 简称AHP,是建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀等。)
该方法仍具有较强的主观性,判断/比较矩阵的构造在一定程度上是凭感觉决定的,一致性检验只是检验 感觉 有没有自相矛盾得太离谱。
引例:
高考结束,坤坤面临选择大学的问题,摆在他面前的选择有两个:大学A和大学B。
坤坤觉得,他最关心的有四个方面:学习氛围,就业前景,男女比例,校园景色,权重分别为0.4,0.3,0.2,0.1。
那么坤坤要完成的,就是通过调查这两所学校的上面4个特征指标,对其进行打分,完成下表:
权重大学A大学B学习氛围0.4就业前景0.3男女比例0.2校园景色0.1最终,经过坤坤百度以及各种调查,打分如下(要求同一特征不同大学分数之和为1):
权重大学A大学B学习氛围0.40.60.4就业前景0.30.50.5男女比例0.20.30.7校园景色0.10.20.8经计算:
A = 0.4*0.6 + 0.3*0.5 + 0.2*0.3 + 0.1*0.2=0.47B = 0.53B>A 因此最终小坤去了大学B。
即打分法解决评价问题时,只需要我们补充完成下面这张表格即可:
权重方案1方案2指标1指标2指标3指标4同颜色单元格之和为1。
一、层次分析法的例题题目:
选择好大学后,坤坤准备在开学前去旅游,他决定在城市A,城市B,城市C中选择一个作为目标地点。
请你确定评价指标、形成评价体系来为坤坤同学选择最佳的方案。
从上面居中的这段话中,很直接得就告诉我们这是一个评价类问题,那么我们不妨用刚刚学到的层次分析来解决这个问题。
解决评价类问题,大家首先要想到以下三个问题:
我们评价的目标是什么?最佳旅游目标的选择我们为了达到这个目标有哪几种可选的方案?城市A、B、C评价的准则或者说指标是什么?我们根据什么东西来评价好坏?那么问题来了,对于第三个问题,题目没给相关数据支撑,比如哪里的空气好啊费用低呀... 需要我们查阅相关的资料。
一般而言,前两个问题的答案很容易得到,第三个问题的答案需要我们根据题目中的背景材料、常识以及网上搜集到的参考资料进行结合,从中筛选出最合适的指标。
这个时候,我们就可以去知网(或者万方、百度学术、谷歌学术等平台)搜索相关的文献,这样一来,我们的论文也就有文献引用了,让我们的数据等看起来有理有据,显得专业,还能明目张胆地借鉴学习一下他们论文中的观点。
推荐一个据说很厉害的网站:虫部落快搜 - 搜索快人一步
那么现在,假如我们替坤坤查询了资料后选择了以下五个指标:
景点景色旅游花费居住环境饮食情况交通便利程度接下来,要对坤坤如何提问才能帮他做出合理的决定?
这就要用到我们最开始学的那张表了
权重城市A城市B城市C景色花费居住饮食交通但是,如果我们直接问坤坤:权重多少,城市ABC评分多少,会显得十分片面且不周全(第二天再问他绝对又换了个数,他自己也记不清。)
在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难 是这些比重常常不易定量化。此外,当影响某因素的因子较多时,直接 考虑各因子对该因素有多大程度的影响时,常常会因考虑不周全、顾此 失彼而使决策者提出与他实际认为的重要性程度不相一致的数据,甚至 有可能提出一组隐含矛盾的数据。
——选自司守奎[kuí]老师的《数学建模算法与应用》
因此,我们采用分而治之的思想,先来处理权重吧~
问题:
一次性考虑这五个指标之间的关系,往往考虑不周。解决方法:
两个两个指标进行比较,最终根据两两比较的结果来推算出权重。 1.1 两两比较获得判断矩阵简单来说就是我们这5个指标分别比较,比如我觉得:景色比花费更重要,饮食比交通非常重要... 通过这样的方式对不同的重要程度赋值 并 最后计算,从而得到权值。
标度含义1表示两个因素相比,具有同样重要性3表示两个因素相比,一个因素比另一个因素稍微重要5表示两个因素相比,一个因素比另一个因素明显重要7表示两个因素相比,一个因素比另一个因素强烈重要9表示两个因素相比,一个因素比另一个因素极端重要2,4,6,8上述两相邻判断的中值如2是1和3之间倒数A和B相比如果标度为3,那么B和A相比就是1/3接下来,就是两两比较五个指标对于选择最终的旅游景点的重要性。
我们绘制如下表格,其对角线肯定都为1:
景色花费居住饮食交通景色1花费1居住1饮食1交通1问:景色和花费相比的重要程度?
坤:我认为景色比花费略重要,介于同等重要1和稍微重要3之间吧。
问:景色和居住相比的重要程度?
坤: 我认为景色比居住要重要一点,介于稍微重要3和明显重要5之间吧。
景色花费居住饮食交通景色124花费1/21居住1/41饮食1交通1这样坤坤回答完10次( ),填完了这张用于计算权重的表格(重要性更加稳定精确了):
景色花费居住饮食交通景色12433花费21755居住1/41/711/21/3饮食1/31/5211交通1/31/5311注:实际情况下没有坤坤帮我们回答,层次分析法中这张表是交给‘专家’ 填的,具体我们等后面再说。(其实我们自己凭感觉填,在论文中不说怎么来的也行,后面会有获奖案例鉴赏。)
这样,我们所形成的正互反矩阵,就是层次分析法中的判断矩阵。
得到判断矩阵,我们就可以计算出权重了,方法后面再讲。
同理,我们可以得到城市A、B、C在景色、花费、居住、饮食、交通所占的权重(得分),因此需要再填5张表格,如问完了坤坤对于城市ABC中景色的看法:
景色城市A城市B城市C城市A125城市B1/212城市C1/51/21其它关于花费、居住、饮食、交通的表我就略了。
注:一个可能出现问题的地方:
坤坤:我觉得x比y好,y比z好,z比x好或一样好。
如果把语气加重一些,谁比谁非常好,那么这种不一致的现象会更加严重。
1.2 一致性正互反矩阵的引入此时,我们就要介绍一个东西:一致矩阵,用它来判断数据知否合理。
若矩阵中每个元素 且满足 ,则我们称该矩阵为正互反矩阵。在层次分析法中,我们构造的判断矩阵均是正互反矩阵。若正互反矩阵满足 ,则我们称其为一致矩阵。 1241/2121/41/21你看,上面这个矩阵就是一致矩阵。
比如我让i=1, j=2, k=3, 那么2*2=4:
令i=2, j=2, k=1, 那么1*1/2=1/2:
此外除了 一致矩阵还有个特点,就是行或列对应成比例。
我们引入一致矩阵,用来检验我们构造的判断矩阵和一致矩阵是否有太大的差别。
景色(原始)城市A城市B城市C城市A125城市B1/212城市C1/51/21 景色(一致矩阵)城市A城市B城市C城市A124城市B1/212城市C1/41/21引理:n阶正反矩阵A为一致矩阵时当且仅当最大特征是 ;
且当正反矩阵A非一致时,
景色城市A城市B城市C城市A12a城市B1/212城市C1/a1/21从上图我们可以发现,当a=4也就是上方刚开始介绍的一致矩阵,此时最大特征值最小,为3=n也就是矩阵的阶数。若a不为4,或a离4越来越远,不一致现象越明显,则其特征值也递增。
1.2.1 一致性检验的步骤1. 计算一致性指标CI
2. 查下表找对应的平均随机一致性指标RI
n123456789101112131415R000.520.891.121.261.361.411.461.491.521.541.561.581.59注:在实际运用中,n很少超过10,如果指标的个数大于10,则可考虑建立 二级指标体系,或使用我们以后要学习的模糊综合评价模型。
3. 计算一致性比例CR
如果CR