数学建模之层次分析法

news2024/10/6 16:19:47

目录

  • 1 模型概述
  • 2 模型流程
    • 2.1 建立递阶层次结构
    • 2.2 构造判断矩阵
    • 2.3 一致性检验
    • 2.4 计算权重
      • 2.4.1 算术平均法
      • 2.4.2 几何平均法
      • 2.4.3 特征值法
    • 2.5 计算各方案的得分
  • 3 编写代码
  • 4 模型局限性

1 模型概述


层次分析法(The analytic hierarchy process, 简称AHP),是建模比赛中最基础的模型之一。

引用场景:主要用于解决 评价类 {\color{Red}评价类 } 评价类 问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀)。

思路:评价类问题可以用打分解决

  • 定指标,每个指标有一个权重,权重和为1
  • 针对每一个指标打分
  • 计算总分数

使用打分法解决问题,实际上只需要完成下面这张表格(权重表)即可:

在这里插入图片描述

解决评价类问题,首先考虑以下三个问题:

  • 我们评价的目标是什么?
  • 我们为了达到这个目标有哪几种可选的方案?
  • 评价的准则或者说指标是什么?(比赛题目一般不会给出,需要我们查阅相关资料

❗️ 注意:

  • 一般而言,前两个问题的答案是显而易见的,第三个问题的答案需要我们根据题目中的背景材料常识 以及 网上搜集到的参考资料 (优先选择知网或者万方、百度学术、谷歌学术等平台搜索相关的文献)进行结合,从中筛选出最合适的指标。(优先在别人发表的论文中寻找指标会显得很专业)
  • 要是没有搜索到相关文献,可以通过小组成员讨论,在网上搜索别人或专家的看法,并提供一个很厉害的网站 虫部落

2 模型流程


例如:小明同学想出去旅游,在查阅了网上的攻略后,他初步选择了苏杭、北戴河和桂林三地之一作为目标景点。

请你确定评价指标、形成评价体系来为小明同学选择最佳的方案。

2.1 建立递阶层次结构


假如我们查询了资料后选择了以下五个指标:

  • 景点景色
  • 旅游花费
  • 居住环境
  • 饮食情况
  • 交通便利程度

分析系统中各因素之间的关系,建立系统的递阶层次结构,如下图所示:

在这里插入图片描述

❗️注意:

  • 如果用到了层次分析法,那么这个层次结构图要放在建模论文中。draw.io

2.2 构造判断矩阵


接下来,我们的关键就是填好这张权重表格

在这里插入图片描述

❗️注意:

  • 在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难是这些比重常常不易定量化。此外,当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度的影响时,常常会因考虑不周全、顾此失彼而使决策者提出与他实际认为的重要性程度不相一致的数据,甚至有可能提出一组隐含矛盾的数据。

    ——选自司守奎[kuí]老师的《数学建模算法与应用》

问题:所以,一次性考虑这五个指标之间的关系,往往考虑不周。
解决方法:两个两个指标进行比较,最终根据两两比较的结果来推算出权重

如果用1‐9表示重要程度(见下表),请你两两比较上述这五个指标对于选择最终的旅游景点的重要性。

在这里插入图片描述

所以在填这张权重表格之前,我们需要对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造判断矩阵

任何评价类模型都具有主观性:

  • 理想:采用专家群体判断
  • 现实:几乎都是自己填的(论文中也不说是怎么来的,就直接写就行),但是也要结合实际

1️⃣ 判断矩阵 O-C

在这里插入图片描述

上面这个表是一个 5 × 5 5×5 5×5 的方阵,我们记为 A A A,对应的元素为 a i , j a_{i,j} ai,j

这个方阵有如下特点:

  • a i , j a_{i,j} ai,j 表示的意义是,与指标 j j j相比, i i i 的重要程度。
  • i = j i=j i=j 时,两个指标相同,因此同等重要记为 1 1 1,这就解释了主对角线元素为 1 1 1
  • a i , j > 0 a_{i,j}>0 ai,j>0且满足 a i , j × a j , i = 1 a_{i,j}×a_{j,i}=1 ai,j×aj,i=1 (我们称满足这一条件的矩阵为 正互反矩阵 {\color{Red}正互反矩阵 } 正互反矩阵

❗️ 注意:

  • 在层次分析法中,我们构造的判断矩阵都是正互反矩阵

实际上,上面这个矩阵就是层次分析法中的 判断矩阵 {\color{Red}判断矩阵 } 判断矩阵

2️⃣ 判断矩阵C-P

在这里插入图片描述

❗️注意:

  • 判断矩阵中的元素只能是1至9和它们的倒数,有些文章中填入了其他的数(例如3/2、5/4),这是不可以的。

2.3 一致性检验


在填写判断矩阵的时候,可能会出现一个问题,如下:

在这里插入图片描述

若正互反矩阵满足 a i , j × a j , k = a i , k a_{i,j}×a_{j,k}=a_{i,k} ai,j×aj,k=ai,k,我们称其为 一致矩阵 {\color{Red}一致矩阵 } 一致矩阵

在这里插入图片描述

另外,如果一个正互反矩阵的各行(列)之间呈倍数关系,那么它一定是一致矩阵

❗️注意:

  • 在使用判断矩阵求权重之前,必须对其进行一致性检验
  • 只有非一致矩阵才需要进行一致性检验,如果我们的判断矩阵本身就是一个一致矩阵(明显的各行各列成倍数关系),那么没必要进行一致性检验

对判断矩阵进行 一致性检验 {\color{Red}一致性检验 } 一致性检验,其主要思想是,检验我们构造的判断矩阵和一致矩阵是否有太大的差别。


在这里插入图片描述

在这里插入图片描述

判断矩阵越不一致时,最大特征值与 n 相差就越大

一致性检验的步骤:

  • 计算一致性指标CI C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n }{n-1} CI=n1λmaxn
  • 查找对应的平均随机一致性指标RIRI我们只需要会查表即可,不用管怎么来的)
    在这里插入图片描述
  • 计算一致性比例CR C R = C I R I CR=\frac{CI}{RI} CR=RICI
    • 如果CR < 0.1, 则可认为判断矩阵的一致性可以接受,继续计算被比较元素对于该准则的相对权重;
    • 否则,需要对判断矩阵进行修正(往一致矩阵上调整,一致矩阵的各行或列成倍数关系)

2.4 计算权重


上述,我们已经得到了判断矩阵,那么我们如何根据判断矩阵计算权重呢?

三种方法计算权重,强烈建议在比赛时三种方法都使用,在论文中加入:

以往的论文利用层次分析法解决实际问题时,都是采用其中某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的 稳健性 {\color{Red} 稳健性} 稳健性 ,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。

2.4.1 算术平均法


在这里插入图片描述

使用数学符号表示如下(可以放到论文中):

在这里插入图片描述

2.4.2 几何平均法


在这里插入图片描述

2.4.3 特征值法


在这里插入图片描述

在这里插入图片描述


权重计算完成后,我们就可以将计算结果填入权重表中:


在这里插入图片描述


在这里插入图片描述

汇总结果得到权重矩阵:

在这里插入图片描述

我们可以得到使用特征值法求得的权重矩阵,根据此矩阵,我们可以计算出每个旅游景点的得分。

2.5 计算各方案的得分


在这里插入图片描述

类似的,我们可以得到北戴河得分为 0.245 0.245 0.245,桂林得分为 0.455 0.455 0.455,因此最佳的旅游景点是桂林。

❗️注意:这里用EXCEL计算可大大减轻工作量,提示F4锁定单元格

3 编写代码


本例中的判断矩阵:

[1, 1/2, 4, 3, 3;
 2, 1,   7, 5, 5;
 1/4, 1/7, 1, 1/2, 1/3;
 1/3, 1/5, 2, 1, 1;
 1/3, 1/5, 3, 1, 1]
也可以写成一行(最后一行后面的分号可要可不要):
[1, 1/2, 4, 3, 3;2, 1,   7, 5, 5;1/4, 1/7, 1, 1/2, 1/3;1/3, 1/5, 2, 1, 1;1/3, 1/5, 3, 1, 1;]


[1,2,5;
1/2,1,2;
1/5,1/2,1;]

[1,1/3,1/8;
3,1,1/3;
8,3,1;]

[1,1,3;
1,1,3;
1/3,1/3,1;]

[1,3,4;
1/3,1,1;
1/4,1,1;]

[1,1,1/4;
 1,1,1/4;
 4,4,1;]

代码:

%% 注意:在论文写作中,应该先对判断矩阵进行一致性检验,然后再计算权重,因为只有判断矩阵通过了一致性检验,其权重才是有意义的。
%% 在下面的代码中,我们先计算了权重,然后再进行了一致性检验,这是为了顺应计算过程,事实上在逻辑上是说不过去的。
%% 因此大家自己写论文中如果用到了层次分析法,一定要先对判断矩阵进行一致性检验。
%% 而且要说明的是,只有非一致矩阵的判断矩阵才需要进行一致性检验。
%% 如果你的判断矩阵本身就是一个一致矩阵,那么就没有必要进行一致性检验。


disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
% % % % % % % % % % % % %方法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)) )
% % % % % % % % % % % % %下面是计算一致性比例CR的环节% % % % % % % % % % % % %
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 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];  %注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
    disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end

🌟 代码优化:

  • 如果我们输入的是一个二阶的判断矩阵,请观察结果有什么问题?怎么改进代码来修正这个问题。(提示:二阶判断矩阵一定是一致矩阵
    • 会造成CRNANn=2 时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将 RI 第二个元素改为了很接近0的正数

4 模型局限性


  1. 评价的决策层不能太多,太多的话 n n n 会很大,判断矩阵和一致矩阵差异可能会很大

在这里插入图片描述

  1. 如果决策层中 指标的数据是已知 的,由于层次分析法有主观性(指标数据是自己填的,不能用层次分析法解决此类问题)那么我们如何利用这些数据来使得评价的更加准确呢?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/971468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9-AJAX-2综合案例

AJAX-综合案例 目录 案例-图书管理图片上传案例-网站换肤案例-个人信息设置 学习目标 今天主要就是练&#xff0c;巩固 axios 的使用 完成案例-图书管理系统&#xff08;增删改查&#xff09;经典业务掌握图片上传的思路完成案例-网站换肤并实现图片地址缓存完成案例-个人信…

Cyber RT学习笔记 --- 1.Cyber RT框架介绍

1.Cyber RT框架介绍 1.1 Cyber RT简介 Apollo Cyber是首个专为自动驾驶定制的高性能且开源的实时通信框架&#xff0c;于2019年与Apollo 3.5开放平台同期发布&#xff0c;它主要解决了自动驾驶系统的高并发、低延迟、高吞吐、任务调度等问题&#xff0c;同时还提供了多种通信…

Docker 使用

简介 Docker是一个开源的容器引擎&#xff0c;它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序&#xff0c;并可以缩短从编写到部署运行代码的周期。 Docker…

Web前端开发概述

Web&#xff08;World Wide Web&#xff0c;全球广域网&#xff09;是指一种基于互联网的信息系统&#xff0c;通过超文本链接将全球各地的文档、图像、视频等资源相互关联起来&#xff0c;并通过Web浏览器进行交互浏览和访问。Web的发展使得人们可以方便地获取和共享各种类型的…

GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。2、数据可视化…

SpringMVC入门指南

目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控制器的编写 、视图的渲染 1.请求处理流程&#xff1a; 2.控制器的编写&#xff1…

Gin学习记录2——路由

路由 一. 常规路由二. 动态路由三. 带参数的路由3.1 GET3.2 POST3.3 绑定 四. 简单的路由组五. 文件分组 一. 常规路由 package mainimport ("net/http""github.com/gin-gonic/gin" )func index(ctx *gin.Context) {ctx.String(http.StatusOK, "Hell…

模板和STL简介

模板和STL简介 一、泛型编程1、通用交换函数的实现&#xff08;1&#xff09;代码&#xff08;2&#xff09;总结 2、泛型编程的概念3、模板的概念 二、函数模板1、概念2、格式3、代码4、原理 三、函数模板实例化1、概念2、隐式实例化&#xff08;1&#xff09;概念&#xff08…

传输层—TCP原理详解

目录 前言 1.TCP协议 2.TCP协议段格式 3.如何解包如何分用 4.网络协议栈和文件的关系 5.如何理解TCP报头 6.TCP的特点 7.TCP字段 7.1 16位窗口大小 7.2标志位 8.超时重传 9.连接管理机制 10.滑动窗口 11.拥塞控制 12.延迟应答 13.捎带应答 14.理解TCP的面向字…

【算法系列篇】分冶-快排

文章目录 前言什么是分冶1.颜色分类1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 排序数组2.1 题目要求2.2 做题思路2.3 Java代码实现 3.数组中的第k个最大元素3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 最小的k个数4.1 题目要求4.2 做题思路4.3 Java代码实现 总结 前言 …

MYSQL调优之思路----sql语句和索引调优

MySQL数据库性能优化包括综合多方面因素&#xff0c;应根据实际的业务情况制定科学、合理的调优方案进行测试调优 文章目录 MySQL性能优化1 优化介绍1.2 优化要考虑的问题2.1 优化可能带来的问题2.2 优化的需求2.3 优化由谁参与2.4 优化的方向2.5 优化的维度 1.2数据库使用优化…

【SpringMVC】工作流程及入门案例

目录 前言 回顾MVC三层架构 1. SpringMVC简介 …

虹科资讯 | LyoPro 作为领先的冻干验证解决方案获得美国和欧洲两项官方专利!

获得美国和欧洲两项官方专利 我们非常高兴地宣布&#xff0c;虹科LyoPro冻干专用温度验证仪已在美国和欧洲获得两项官方专利&#xff0c;巩固了其作为市场上同类解决方案的唯一地位。有关LyoPro温度记录仪的专利分别是 US11340015B2 和 EP3742095B1&#xff0c;前者于2022年5月…

如何实现MongoDB数据的快速迁移?

作为一种Schema Free文档数据库&#xff0c;MongoDB因其灵活的数据模型&#xff0c;支撑业务快速迭代研发&#xff0c;广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中&#xff0c;会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_SPEED_OPTIMIZER

文章目录 前言PIECEWISE_JERK_SPEED_OPTIMIZER功能简介PIECEWISE_JERK_SPEED_OPTIMIZER相关配置PIECEWISE_JERK_SPEED_OPTIMIZER流程QP问题的标准类型定义&#xff1a;优化变量设计目标函数约束条件相关矩阵二次项系数矩阵 H H H一次项系数向量 q q q设定OSQP求解参数 Process设…

第二张微服务的调用与注册

文章目录 工程导入利用RestTemplate调用服务需求创建RestTemplate的实例到Spring容器使用RestTemplate发送请求消费者和提供者 Eureka注册中心服务远程调用会出现的问题Eureka的结构和作用Eureka的配置过程搭建注册中心服务注册服务发现 Ribbon负载均衡负载均衡原理源码跟踪总结…

windows server 2019 一键安装sqlserver2012

准备安装包和脚本 脚本代码 install.bat REM 自动判断权限问题&#xff0c;主动获取管理员权限 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if %errorlevel% NEQ 0 ( goto UACPrompt ) else ( go…

PPT 架构师三板斧

PPT 架构师三板斧 目录概述需求&#xff1a; 设计思路实现思路分析1.多节点上PPT 架构师三板斧2.几张框框组合有组织3.专业词汇4.切记点要点 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;ski…

使用Jekyll + GitHub Pages搭建个人博客

本文将介绍如何使用Jekyll搭建个人博客&#xff0c;并部署在GitHub Pages上。 1.简介 Jekyll是一个强大的静态网站生成器&#xff0c;可以将Markdown、HTML、Liquid模板等文件转换为静态网站。Jekyll支持模板引擎、主题、插件、集成GitHub Pages等特性&#xff0c;可以帮助用…

GeoServe Web管理界面远程访问GeoServe Web管理界面的最佳工具

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…