评价决策类——层次分析法+数学建模+实战分析

目录

一、前言

二、历年题型分析

 2.1 常用算法归纳

2.1.1 优化类算法

2.1.2 预测类算法

2.1.3 评价决策类

2.1.4 NP-hard类

2.2 评价类模型求解

2.2.1 层次分析法(AHP)

2.2.2 多指标评价法(MCDA)

2.2.3 算法区别

三、层次分析法讲解

3.1 层次分析法的做题步骤

3.2 层次分析模型的解题思路

3.2.1 构造判断矩阵

3.2.2 一致性检验

3.2.3 得分计算

四、2021C类数学建模比赛真题讲解

4.1 题目分析

4.2 指标选择

未完待续


一、前言

层次分析模型(AHP)是一种系统化的多准则决策分析方法,适用于需要在多个相互冲突或互补的准则下做出决策的情景。它通过构建层次结构来明确决策目标、准则和备选方案,并使用0~9标度法进行两两比较来确定各准则和方案的相对重要性,进而通过一致性检验保证比较的一致性。层次分析模型适用于各种复杂决策问题,如项目选择、资源分配、供应商选择等,特别是在需要整合定性和定量信息,以及涉及多个决策者意见的情况中尤为有效。

二、历年题型分析

上述就是这几年数学建模比赛所考察的算法,以及每个算法求解的模型。下面把这几类算法,给大家归纳出最常用的解决方法,供大家参考。

 2.1 常用算法归纳

2.1.1 优化类算法


线性规划、非线性规划、多目标规划、最短路径、最小生成树、动态规划

2.1.2 预测类算法


灰色预测、时间序列、回归分析、支持向量机、神经网络、马尔科夫模型

2.1.3 评价决策类


层次分析、TOPSIS法、灰色关联分析、模糊综合评价、主成分分析、聚类分析

2.1.4 NP-hard类


蚁群算法、粒子群算法、遗传算法、模拟退火
 

2.2 评价类模型求解

对于这几年数学建模比赛,评价优化类题目出现的频率还是蛮多滴,其中评价优化类题目一个常用解法就是层次分析法 (AHP)多指标评价法(MCDA)。我找了很多资源进行学习,自我感觉层次分析法和多指标评价法的用法和解题思路大差不差,都是将一个评价类问题分成几个指标进行评估,计算最后的得分进行排序,层次分析法将问题分成了三层,目标层、准则层和方案层,主要思想是分而治之,而多指标评价法更多的是针对数据本身特点进行分析,使得评价结果更具有客观性。以下就是我从其他地方copy过来的两者的对比介绍,大家用辩证的思想来看待。

2.2.1 层次分析法(AHP)

  • 特点

    • 基于层次结构,将决策问题分为目标层、准则层和方案层。
    • 使用0~9标度法进行两两比较,确定准则和方案的相对重要性。
    • 强调一致性检验以确保比较的合理性。
    • 适用于定性与定量信息的综合评估。
  • 应用场景

    • 项目选择和优先级排序。
    • 投资决策。
    • 资源分配。
    • 供应商选择等。

2.2.2 多指标评价法(MCDA)

  • 特点

    • 包括多种方法,如TOPSIS、AHP、DEA(Data Envelopment Analysis)、MABAC(Multi-Attribute Border Approximation Area Comparison)等。
    • 涉及多个评价指标,既包括定量也包括定性指标。
    • 可以使用不同的权重确定方法,如专家判断、统计方法等。
    • 目的是寻找最优方案或对备选方案进行排序。
  • 应用场景

    • 产品设计与选择。
    • 环境影响评估。
    • 公共政策制定。
    • 供应链管理等。

2.2.3 算法区别

  • 方法论差异

    • AHP特别强调层次结构和两两比较,而MCDA涵盖的方法更多样化。
    • AHP的两两比较方法确保了决策的一致性,而MCDA中的某些方法可能不需要这种一致性检查。
  • 适用场景

    • AHP更适合需要专家判断和两两比较的情景,尤其是当决策者需要直观地理解指标间的关系时。
    • MCDA则适用于更广泛的情况,特别是当需要考虑多种评价方法和技术时。

本次任务我将带大家了解层次分析法,如何构建层次结构,如何挑选准则层的指标,如何使用0~9标度法建立判断矩阵,如何对矩阵进行一致性检验,如何计算最后的得分。最后带大家运用这个方法进行实战。并对2021年数学建模大赛C类第一题进行分析求解。

三、层次分析法讲解

对于一个评价类题目,无非就是对它的一些方案进行评价打分,根据它的得分进行排名,分出个三六九等,选出一个最优秀的方案。这里就引申出了层次分析法的三个构造层,目标层---我今天要干点啥,是去吃饭嘞还是去旅游,准则层---评价每个方案所需要的指标,求出每个指标的重要性,方案层---针对我提出的目标,一些可供挑选的方案,今天该吃点啥呀(馒头,包子,鸡公煲),明天该去哪儿玩(北京、上海、武汉)。

3.1 层次分析法的做题步骤

下面就举出一个具体例子带大家分析。

比如,今天我想买一件衣服,但是我选择恐惧症犯了,目前我看中了几款衣服,为了方便描述,就按照衣服的品牌来指代具体的衣服,第一件是阿迪的衣服,第二件是耐克的衣服,第三件是驴牌衣服。我想挑一件很符合我心意的衣服,因此我提出了几个判断指标,第一看衣服款式是否新颖,第二看价格是否实惠,第三看衣服评价怎样,第四看商家态度咋样。

由以上的分析,我们将问题引入层次分析模型。

3.2 层次分析模型的解题思路

上面已经构建了一个层次分析模型,目前我们要解决的问题是,对于上述几个指标,如何计算他们的权重,对于每一件衣服对应的指标,又该如何打分呢。以下我们引入了一个方法,0~9标度法。大家记住它的作用就是量化指标,比如对于衣服新颖度来说,这是一个抽象的概念,如何将他代入数值进行具体计算呢,这里就用到了一个方法叫两两比较法,也就是0~9标度法的重要思想。

3.2.1 构造判断矩阵

0~9标度法对应的分数

现在就来构造判断矩阵,大家注意因为通过0~9标度法构造的判断矩阵具有一定的主观性,判断准则和打分也因人而异,所以对于判断矩阵的构造,常用的方法就是专家打分,要么就是查阅文献进行打分,大家在写论文时候,就算没有找到专家资料,或者文献啥的,大家可以写通过查阅***文献,或者进行调查问卷,或者国家**统计局数据分析,得到了以下判断指标及判断矩阵,千万千万不要啥也不说就把指标跟判断矩阵列上去,没有一点理论依据的,这里给大家推荐一个查阅指标和数据的宝藏网站:虫部落快搜 - 搜索快人一步,后面博文会给大家讲熵权法和TOPSIS法,那个权重计算会更加客观一点。

下面就是我得到一个判断矩阵,这里因为是给大家讲解模型背后的理论,所以不谈依据,买衣服纯个人感觉。

指标的判断矩阵

衣服新颖度

衣服价格

衣服评价

商家态度

衣服新颖度

1

1/5

1/3

1/3

衣服价格

5

1

1/3

1/5

衣服评价

3

3

1

1/3

商家态度

3

5

3

1

这里大家可以看到,判断矩阵中的主对角线上的元素都是1,因为自己跟自己对比肯定是同等重要的,然后关于主对角线对称的元素都是互为倒数,在上述矩阵中,衣服价格对于衣服新颖度来说,是明显重要的,因为对于我来说,我更想买到一个实惠的衣服,所以判断矩阵对应数值就是5,衣服新颖度对于衣服价格来说,就是明显不重要的,所以对应是1/5。

然后分别列出每个指标对应的方案的判断矩阵,将方案的判断值量化分析。这里需要列出衣服新颖度----三种衣服的判断矩阵,衣服价格---对应三种衣服的判断矩阵,衣服评价---对应三种衣服的判断矩阵,商家态度---对应三种衣服的判断矩阵。下面就列举一个样例,大家做题的时候需要把所有的判断矩阵列举出来。

3.2.2 一致性检验

将所有的判断矩阵计算出来后,紧接着就要对每个矩阵进行一致性检验了,一致性检验是因为我们对每个指标进行评价打分,当指标多的时候,可能存在相互矛盾的地方,我们要将这种矛盾控制在一个合理的范围之内。比如说在一个判断矩阵中,我认为A比B重要,B又比C重要,结果又出现了C比A重要。

我会带着大家了解计算过程,具体的理论分析大家可以参考东北大学张震教授写的一篇论文----层次分析法一致性检验。

第一步:计算一致性指标CI

CI=\frac{\lambda max - n}{n - 1}

\lambda max表示判断矩阵的最大特征根,n表示指标个数

第二步:根据n值查找平均随机一致性指标RI

平均随机一致性指标
n1234567891011121314
RI000.580.901.121.241.321.441.451.491.521.541.561.59

第三步:计算一致性比例CR

CR = \frac{CI}{RI}

对于最后的计算结果,如果CR < 0.1,表示所构造的判断矩阵可以使用,否则判断矩阵需要继续修改。

对于\lambda max的计算过程,张教授文章里面都有提到,具体计算过程不深究。判断矩阵进行一致性检验的前需要归一化处理,计算过程就是每一个值除以所在列的和,为了方便大家计算,代码中都有处理,大家只需要添加原始数据即可。下面给大家安排上求解代码,大家只需要改写参数就好了,可以直接使用。

import numpy as np# 判断矩阵
'''
judgment_matrix = np.array([[1,1/5,1/3,1/5],[5,1,3,3],[3,1/3,1,1/3],[5,1/3,3,1]
])
这里需要大家将自己的判断矩阵输入进去,变量名为judgment_matrix
'''# 归一化判断矩阵
normalized_matrix = judgment_matrix / judgment_matrix.sum(axis=0)# 计算特征向量(即各因素的权重)
weights = normalized_matrix.mean(axis=1)# 输出权重
print("各因素的权重:", weights)# 计算一致性指标 CI
lambda_max = np.linalg.eigvals(judgment_matrix).max().real
CI = (lambda_max - len(weights)) / (len(weights) - 1)# 计算一致性比率 CR(假设 n=3, RI=0.58)
RI = 0.89   # 这里根据大家的n值,找出表格中对应的系数,修改为大家所需要的值即可
CR = CI / RIprint("一致性比率 CR:", CR)# 一致性检验
if CR < 0.1:print("判断矩阵的一致性通过")
else:print("判断矩阵的一致性不通过,需要调整")

代码中大家将判断矩阵改为自己的判断矩阵,命名为:judgment_matrix,还需要修改RI值,根据自己指标个数对照RI表就可以知道具体数值了。

运行结果如下:

这些计算过程都可以体现在论文里面,比如判断矩阵最后权重的计算,一致性比率CR。

3.2.3 得分计算

通过以上计算,我们可以得到一个权重汇总表格,包含各个指标对应的权重,以及每个指标下方案的得分。

以上数据就是所有判断矩阵汇总的结果了,包括每个指标对应的权重以及每个方案在该指标下的得分,关于权重的计算代码中已经处理过了,在归一化的判断矩阵中,每行的平均数就代表该指标的权重。

a1+a2+a3=1

.......

d1+d2+d3=1

w1+w2+w3+w4=1

有了这些权重后,就可以计算最后的得分了。

Score(nike)=w1*a1+w2*b1+w3*c1+w4*d1

Score(adidas)=w1*a2+w2*b2+w3*c2+w4*d2

Score(lv)=w1*a3+w2*b3+w3*c3+w4*d3

根据这个最终得分排名就可以判断哪一件是我心中最理想的衣服了。 

四、2021C类数学建模比赛真题讲解

4.1 题目分析

2021大学生数学建模比赛赛题

 

 我简单讲一下这个题目,方便大家读题。这个题提供了240周企业对n个供应商每周的需求量,以及240周供应商对这个企业每周的供货量,根据这个数据判断出最重要的供货商。

首先大家很容易想到这是一个评价决策类题目,不就是对于n个供应商进行评价打分吗,然后选出前五十个得分最高的供货商。但是,这个题目没有说出企业挑选供应商的准则,也就是我们层次分析模型的准则层需要我们自己确认。如何确定判断准则呢?

4.2 指标选择

大家需要注意,指标选择不是随便选的,第一要求选择的指标对我们最后的决策有决定性影响,就像之前给大家介绍的例子一样,我们找出了四个指标--价格,款式,态度,评价,都是对我们最后选择衣服有很大决定性作用的,比如说平台,商家姓名啥的对我们最后决策没有一点作用,我们肯定就不会考虑这些指标了;第二选择的指标要有理论支撑,要体现客观性,对于我们选衣服,全屏个人喜好,主观挑选没啥问题,但是对于论文来说,一定要有理有据。我们的理论依据可以是什么呢,文献支撑,找相关文献,某某文章对于***的评判用到了以下指标,或者查资料,专家分析该问题时候用到了以下指标,上述提到了那个网站虫部落就发挥作用了。

未完待续

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

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

相关文章

如何把自动获取的ip地址固定

在大多数网络环境中&#xff0c;‌设备通常会自动从DHCP服务器获取IP地址。‌这种动态分配IP的方式虽然灵活方便&#xff0c;‌但在某些特定场景下&#xff0c;‌我们可能需要将设备的IP地址固定下来&#xff0c;‌以确保网络连接的稳定性和可访问性。‌本文将详细介绍如何把自…

MySQL-基础篇-事务(事务简介、事务操作、事务的四大特性、并发事务引发的问题、事务的隔离级别)

文章目录 1. 事务简介2. 事务操作2.1 未控制事务2.2 控制事务2.2.1 查看事务的提交方式2.2.2 设置事务的提交方式2.2.3 提交事务2.2.4 回滚事务2.2.5 开启事务2.2.6 完善转账案例 3. 事务的四大特性&#xff08;ACID&#xff09;4. 并发事务引发的问题5. 事务隔离级别5.1 演示5…

羊大师:白露养生经,羊奶不可少

随着秋风渐起&#xff0c;白露悄然而至&#xff0c;自然界中的万物开始展现出成熟与收获的喜悦。在这个季节转换的微妙时刻&#xff0c;我们的身体也需要顺应天时&#xff0c;进行一番细致的调养。白露养生&#xff0c;不仅是对自然的敬畏&#xff0c;更是对健康生活的追求。 在…

橘子学ES实战操作之管道类型Ingest pipelines的基本使用

简介 我们在使用ES的时候&#xff0c;经常的用法就是把其他数据源比如Mysql的数据灌到ES中。 借用ES的一些功能来提供数据的全文检索以及聚合分析之类的功能。 在这个灌数据的过程中&#xff0c;我们经常会对数据做一些治理&#xff0c;类似ETL的能力。然后把治理后的数据写入…

Eclipse 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 打开字体设置页面3. 找到Text Font&#xff0c;点击修改4. 修改字体 前言 Eclipse 自定义字体大小&#xff0c;统一设置为 Courier New &#xff0c;大小为 三号 具体操作 【Windows】>【Perfer…

Mac M1 安装Hadoop教程(安装包安装)

一、引言 前面一期&#xff0c;我分享了通过homebrew方式安装Hadoop&#xff0c;本期我将通过安装包方式介绍下hadoop如何安装。二、下载open jdk8 官方下载地址 注意如果是x86架构的苹果电脑&#xff0c;Architecture选择x86 64-bit或者 x86-32bit。 下载后&#xff0c;将得…

移动UI:成就勋章页面该如何设计,用例子说明。

移动应用的UI成就勋章页面通常是一个展示用户在应用中取得成就和获得勋章的页面。这种页面通常用于激励用户参与应用的活动&#xff0c;增加用户的参与度和忠诚度。 UI设计成就勋章页面时&#xff0c;一般会包括以下元素和功能&#xff1a; 1. 勋章列表&#xff1a; 展示用户…

Codeforces Round 970 (Div. 3) (个人题解)(未补完)

前言&#xff1a; 昨天晚上的比赛&#xff0c;可惜E题太笨了没想到如何解决&#xff0c;不过好在看到F过的多直接跳过去写F了&#xff0c;能过个5个也还不错了&#xff0c;而且一个罚时也没吃。之后的题我还是会再能补的时候补完的噢&#xff01; 正文&#xff1a; 链接&…

Context-Aware Depth and Pose Estimation for Bronchoscopic Navigation翻译

文章目录 摘要1.引言2. 相关工作3. 方法概述3.1. 基于CT数据的虚拟深度生成3.2. 基于视频帧的上下文感知深度估计3.3. 方法概述3.3.1. 从CT数据生成虚拟深度图3.3.2. 基于上下文感知的深度估计从视频帧中3.3.3. 相机姿态估计通过 2D/3D 配准 4. 实验4.1. 数据集和基线4.2. 实现…

【C++ Primer Plus习题】10.8

问题: 解答: main.cpp #include <iostream> #include "List.h" using namespace std;int main() {Item item 0;List list;cout << "请输入item(0结束):";cin >> item;while (item!0){cin.get();list.add(item);cout << "请…

C4单细胞|国产平台解密睾丸肿瘤细胞“朋友圈”

单细胞&#xff08;核&#xff09;转录组学已成为生命科学研究的基础工具&#xff0c;在疾病、免疫、生命演化、器官结构、发育等领域发挥重要作用&#xff0c;但规模化研究往往是制约单细胞层面研究的重要因素。为了突破单细胞研究门槛高、费用高的瓶颈&#xff0c;凌恩生物重…

CentOS 7 上安装 JDK 8 的步骤:

CentOS 7 上安装 JDK 8 的步骤&#xff1a; 一、下载 JDK 1.可以从 Oracle 官网下载 JDK 8&#xff0c;但需要注册账号。也可以从其他可靠的镜像站点下载。 jdk.java.net http://jdk.java.net/ 2.例如&#xff0c;可以从 Oracle 官网下载 Linux 版本的 JDK 8 压缩包&#x…

自建DCI为何超过租赁DCI:优势探索

在现代数据的基础设施发展过程中&#xff0c;数据中心&#xff08;DCI&#xff09; 的自建和租赁选择变得越来越关键。随着对数据传输需求的增加和行业的发展&#xff0c;运行商必须要仔细考虑哪种方法更符合其战略目标和运营要求。相较于租赁式DCI的便捷性和灵活性&#xff0c…

CSS3换装达人原理

引言 换装或者是换皮肤是常见的行为&#xff0c;我们可以先看下效果&#xff1a; 选择不同的颜色&#xff0c;就可以秒变人物服装的颜色&#xff0c;原理其实非常简单 实现步骤 主要分为三步&#xff0c;即素材的提供、布局样式、动态控制 图片提供 提供两张图片&#xf…

[数据集][目标检测]街道乱放广告牌检测数据集VOC+YOLO格式114张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;114 标注数量(xml文件个数)&#xff1a;114 标注数量(txt文件个数)&#xff1a;114 标注类别…

计算机毕业设计选题推荐-高校科研工作管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

uniapp插槽用法

目录 什么是插槽? 基本概念 默认插槽 命名插槽 作用域插槽 场景一:子插槽向父组件传递一个字符串 场景二:子插槽向父组件传递对象 什么是插槽? 在 UniApp 中&#xff0c;插槽&#xff08;Slot&#xff09;是一种允许父组件向子组件特定位置插入HTML内容的方式。这种方式使得组…

ELK系列之一---探索ELK奇妙世界:初识日志界大名鼎鼎的ES集群!

目录 一、为什么要使用ELK 二、ELK简介 三、Elaticsearch入门 3.1、什么是elaticsearch 3.2、elaticsearch的底层优点 3.2.1、全文检索 3.2.2、倒排索引 3.3、elaticsearch集群原理 一、为什么要使用ELK 一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 gre…

Docker 镜像导出与加载:从入门到精通

在容器化技术的世界中&#xff0c;Docker 镜像的导出与加载是开发与运维人员经常会用到的技能。本文将详细介绍如何导出 Docker 镜像为本地 tar 文件&#xff0c;并如何将其重新加载为 Docker 镜像&#xff0c;并分享一些操作中的小技巧与趣味总结。 一、Docker 镜像导出的秘…

HTTP 二、进阶

四、安全 1、TLS是什么 &#xff08;1&#xff09;为什么要有HTTPS ​ 简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点&#xff0c;整个传输过程完全透明&#xff0c;任何人都能够在链路中截获、修改或者伪造请求 / 响应报文&#xff0c;数据不具有可…