备战数学建模9-层次分析法模型
层次分析法,简称AHP,是建模比赛中最基础的模型之一,其主要用于解决评价类问题,例如:哪中方案更好?哪位运动员或者员工表现得更优秀?
一、层次分析模型建立部分
下面我们看一道引出层次分析得例题,如下所示:
对于上面的题目,我们看样发现是一个评价类问题,解决评价类问题,我们需要想到一下三个问题:
1-评价的目标是什么?
在这里显然是选择目标景点。
2-为了达到目标有几种方案可以选择?
在这里是有3种方案可以选择的。
3-评价的指标或者准则是什么?就是根据什么评价方案的好坏?
从题目中提取,头脑风暴,或者从知网搜相关的指标,也可以在参考文献中引用。
假设我们找到了如下5个指标:旅游景色,旅游花费,居住环境 ,饮食情况,交通便利情况;
对于5个评价指标,我们怎么样分配权重呢,如果直接分配权重往往考虑不周。我们采用的解决方法是;每两个指标进行比较,共比较10次,最终根据两两比较的结果推算出权重。
用1-9表示重要程度,两两比较上述5个指标对最终选择旅游经典的重要性。
我们可以询问小明10次,就可以,把如下表格填满。当然需要注意的是:实际情况下,是没有小明帮我们回答,层次分析法中这张表是交给"专家"给我们填的,其实这个专家就是我们自己,哈哈哈,判断矩阵的填写根据题目意思和查资料,判断因素的重要性。
对于上面的表格矩阵,我们称为判断矩阵,我们可以总结如下三点:
下面是关于判断矩阵内部的介绍,在使用判断矩阵求权重之前,我们需要对其进行以执行检验,如如果不一致性过大,判读矩阵就失效了。
一致性检验原理:检验我们构造的判断矩阵和一致矩阵是否有太大的差别。
一致性检验的步骤如下:
具体地,那么RI是怎么计算得到的呢?
如果判断矩阵通过一致性检验,那么怎么通过判断矩阵计算权重?
方法1:算数平均法求权重
对于如下判断矩阵,分别使用第1,2,3列计算权重。
对权重进行算术平均:
将判断矩阵按照列归一化,就是将求出的权重填入如下表中:
将归一化的各列相加,即按行求和,如下所示:
将相加得到的向量每个元素除以n,则得到权重向量,如下所示:
上述通过判断矩阵得到的权重向量的过程可以通过如下公式表示:
方法2:几何平均法求权重
具体步骤如下:
方法3:特征值法求权重
一致矩阵有一个特征值为n,其余特征值为0,特征值为n时,对应的特征向量刚好为:
这一特征向量刚好就是矩阵的第一列。
特征值法求权重步骤:
第一,求出判断矩阵的最大特征值及其对应的特征向量。
第二,求出特征向量进行归一化,即可得到我们的权重。
注:正常竞赛中用特征值法求权重就可以。
通过判断矩阵求出权重后,如何计算各个方案的得分呢?如下是每个因素的权重信息:
每个方案的得分就是对应的两列相乘后求和,如下所示:
通过上面的题目我们重新看一下层次分析法:
首先层次分析法,要考虑三个方面,分别为目标、准则、方案;我们要分析系统的各因素之间的关系,建立系统的递阶层次结构。
上述题目的递阶层次结构如下:
数学建模论文中,用到层次分析法,需要给出层次结构。
然后,根据题目数据和搜网上的资料,填写判断矩阵,上述准则层5个因素的判断矩阵如下:
然后,由判断矩阵计算被比较元素相对于该准则的相对权重,并进行一致性检验,检验通过才能用。可以使用三种方法计算权重。
使用三种方法计算权重会保证结果的稳健性。可在论文中加上如下:
对于判断矩阵不一致,可以根据一致性矩阵各行各列呈倍数关系,往一致性矩阵上调。
层次分析法的局限性
1-评价的决策层不能太多,太多会导致判断矩阵和一致性矩阵偏差太大,RI也求不出。
2-如果决策层的数据是已知的,不适合用层次分析法。
上面写的有点混乱,看下面总结吧!!!
总结:层次分析法步骤:
1-要考虑三个方面,分别为目标、准则、方案;我们要分析系统的各因素之间的关系,建立系统的递阶层次结构。
2-根据一致矩阵给出判断矩阵,当然这个判断矩阵可以根据题目,也可以网上查找给出。
3-根据判断矩阵使用三种方法求权重,需要做归一化处理。
4-求出权重后进行一致性检验,检验通过,才能使用该权重,也就是判断矩阵给的合理。
5-最后根据权重,计算每个方案的得分,得分越高,则该方案越好。
下面看一下层次分析法的MATLAB代码是实现:
clear; clc
%矩阵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] ;
%方法1:算数平均法求权重%第一步:将判断矩阵按照列归一化,即按列求和,让相应元素除以该列的元素和
Sum_A = sum(A,1) ; %按列求和
n = size(A,1) ; %得到矩阵A的行数
SUM_A = repmat(Sum_A,n,1) ; %将按列求和得到的向量重复n次,变成一个n*1的矩阵
stand_A = A ./ SUM_A ; %归一化,就是每个元素除以对应列的和%第二步,将归一化的各列相加,即按行求和
disp('算术平均法求权重的结果为:') ;
disp(sum(stand_A,2) / n) ;%方法2:几何平均法求权重%第一步,将矩阵A按照行相乘,得到一个列向量
Prduct_A = prod(A,2) ;%第二步,将新的向量每个值开n次方
Prduct_n_A = Prduct_A .^(1/n) ;%对该向量进行归一化即可得到权重向量,即将列向量的每一个元素除以列向量的和即可
disp('几何平均法求权重的结果为:') ;
disp(Prduct_n_A ./ sum(Prduct_n_A)) ;%方法3:特征值法求权重%第一步:求出矩阵A的最大特征值和其对应的特征向量
[V,D] = eig(A) ; %V是特征向量,D是特征值
Max_eig = max(max(D)) ; %求出最大特征值
[r,c] = find(D==Max_eig, 1) ; %找到最大特征值行和列,找到第一个满足条件的即可%第二步:对求出的向量进行归一化,即可得到权重
disp('特征值求权重的结果为:') ;
disp(V(:,c) ./ sum(V(:,c))) ;%计算一致性,一致性检验
CI = (Max_eig - n) / (n - 1) ; %根据公式计算一致性指标
RI = [0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1.59] ; %查表就可以,支持最多n=15
CR = CI / RI(n) ; %计算一致性比例
if(CR<0.1)disp('判断矩阵A的一致性可以接受!!!') ;
elsedisp('判断矩阵A的一致性不可以接受!!!') ;
end
备战数学建模9-层次分析法模型相关推荐
- 数学建模之层次分析法模型
目录 问题 问题实例 问题分析 建立层次分析法模型 分析权重的方法 编辑 填表指标的权重编辑 一致性检验 一致性检验的引入 一致性检验的步骤 计算判断矩阵 归一化处理 算术平均法求权重 几何平均法 ...
- 【数学建模】层次分析法AHP(评价与决策)
文章目录 一.算法介绍 二.适用问题 三.算法总结 1. 步骤 2. 如何构建层次结构模型 3. 如何构建成对比较矩阵 4. 如何进行一致性检验 四.应用场景举例(旅游问题) 1. 建模 2. 构造成 ...
- 数学建模之层次分析法AHP
层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合的.系统的.层次化的分析方法.这种方法的特点就是在对复杂决策问题的本质.影响因素及其内在关系等进行深入 ...
- (一)【数学建模】层次分析法
文章目录 1. 评价类问题可用打分解决 (1)确定权重的方法(分而治之的思想): 1) 确定判断矩阵 2)计算权重 <1>算术平均法求权重 <2>几何平均法求权重 <3& ...
- 【数学建模】—— 层次分析法(AHP)
层次分析法 The analytic hierarchy process (AHP) 建模比赛中最基础的算法之一,主要用于解决评价类的 解决评价类问题,首先要想到以下三个问题: 我们评价的目标是什么? ...
- 【数学建模】层次分析法
层次分析法 引例 层次分析法介绍 成对比较阵和一致性检验 组合权向量 层次分析法步骤 代码实现 RI 一致性检验 层次单排序 计算组合权向量(层次总排序) 经典案例 代码实现 练习训练 参考文献 引例 ...
- 【数学建模】层次分析法(AHP)-Python实现
1 前言 本文主要讲解层次分析法(AHP)的python实现,后续会跟进实例分析 2 代码实现 导入包 import numpy as np 2.1 构造判断矩阵 判断矩阵一般采用专家意见法,也就是德 ...
- 数学建模之层次分析法详解(附个人论文)
根据清风老师的课程学习,收获很大,https://www.bilibili.com/video/BV1DW411s7wi 1.该模型所解决的问题 评价类问题.(如哪个地方比较好,哪位员工优秀) 2. ...
- 数模01【层次分析法模型】
学习网址:[强烈推荐]清风:数学建模算法.编程和写作培训的视频课程以及Matlab等软件教学 视频课件:[链接:https://pan.baidu.com/s/17J_RzjwcKTH7xedkVel ...
最新文章
- 四象限法推导lm曲线_【老王讲放射】四象限理论
- 金升阳5V开关电源LM25-23B05
- 国内外知名光端机品牌大全
- 在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题
- list.php tid= field,dedecms列表页模板中调用当前栏目文章数
- Notepad++如何对比文件 Notepad++对比两个文件代码方法
- python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...
- ASP.NET伪静态的方法及相关资料
- 软考 信息安全工程师怎么样
- 快速开发实用工具VRTK-011
- uniapp银行卡卡片
- 屏幕刷新频率怎么更改?
- 数显之家快讯:「SHIO世硕心语」改变你的人生格局,2021年你应当做这三件事!
- 图形学常见概念与算法-纹理过滤
- 8月房价上涨城市数量增多 涨幅全线扩大
- 春江水暖鸭先知,不破楼兰誓不还
- 解锁万亿级市场,边缘计算不“边缘”
- 【2023亲测有效】Pandownload 归来!加速效果极佳!
- [陈鹏导师精益项目实战]华北区家电行业精益改善项目第五期启动
- 干票大的,230万篇文章随你下载!
热门文章
- 如何将PDF文件转换为PNG图片?
- 幼儿抽象逻辑思维举例_熊孩子到底在想什么—幼儿思维干货速记!
- JS事件详解和js事件委托
- Excel公式大全 excel自动求减 15个常用excel函数公式
- 【操作系统】LinuxKernel-VFS虚拟文件系统 认知框架构建(super_block,inode,dentry,file)
- 第二章华氏度摄氏度转换
- 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘
- c语言文件合并,c++实现合并文件以及拆分实例代码
- android 电子书源码,翻页效果
- python基础——数据结构之元组