【数学建模】最优旅游城市的选择问题:层次分析模型(含MATLAB代码)

news2024/11/23 11:24:00

层次分析法(The analytic hierarachy process,简称AHP)是一种常用的决策分析方法,其基本思路是将复杂问题分解为多个组成部分,然后对这些部分进行逐一评估和比较,最后得出最优解决方案。(例如:选择哪种方案最好、哪位运动员或员工表现得更优秀)

要解决评价类问题,要解决以下三个问题:

1、我们评价的目标是什么?

2、我们为了达到这个目标有哪几种可选方案?

3、评价的准则或者说指标是什么?

一般来说,前两个问题的答案是显而易见的,第三个问题的答案需要我们根据题目中的背景材料、常识或者网上搜集到的参考资料进行结合,从中筛选最合适的指标。

案例:请选择合适的指标,为小明选取一个最适合他的城市。

本题需要我们选择最优的旅游城市,首先上网搜索几个比较重要的指标:景点景色、旅游花费、居住环境、饮食情况、交通便利程度。选取想去的城市分别为:苏州、威海、桂林。我们先来绘制一张权重表。

指标权重

苏州

威海

桂林

景色

花费

居住

饮食

交通

现在的关键就是求出这张权重表。

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

--选自司守奎[kuil老师的《数学建模算法与应用教材》 

一次性去考虑五个指标的关系,往往考虑不周;而两个两个指标进行比较,最终根据两两比较的结果来推算出权重。

标度

含义

1

表示两个因素相比,具有相同重要性

3

表示两个因素相比,一个因素比另一个因素稍微重要

5

表示两个因素相比,一个因素比另一个因素明显重要

7

表示两个因素相比,一个因素比另一个因素强烈重要

9

表示两个因素相比,一个因素另一个因素极端重要

2,4,6,8

上述两相邻判断的中值

倒数

A和B相比如果标度3,那么B和A相比就是1/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,其他亦是如此(根据自己对这几个指标的判断确定权重)。

总结:上面这个表是一个5*5的方阵,我们记为A,对应的元素为aij,这个方针有如下特征:

(1)aij表示的意义是,与指标j相比,i的重要程度。

(2)当i=j时,两个指标相同,因此同等重要记为1,这就解释了主对角元素为1.

(3)aij>0且满足aij*aji=1(我们称满足这一条件的矩阵为正互反矩阵)

实际上,上面这个矩阵就是层次分析法中的判断矩阵。

接下来我们则需要填写5个判断矩阵(我们可以通过与小明一问一答的形式,来填写,当然在论文中我们直接给出即可)

景色苏州威海桂林
苏州125
威海1/212
桂林1/51/21
花费苏州威海桂林
苏州11/31/8
威海311/3
桂林831
居住苏州威海桂林
苏州113
威海113
桂林1/31/31
饮食苏州威海桂林
苏州134
威海1/311
桂林1/411
交通苏州威海桂林
苏州111/4
威海111/4
桂林441

需要注意的是:在这里我们应该把表格里的数字理解为可接受度(即满意程度)。

我们在书写时也有可能会有bug。比如说:苏州=A  威海=B 桂林=C 苏州比威海景色好则A>B 苏州和桂林景色一样好则A=C 威海比桂林景色号则B>C如此便出现了矛盾

什么是一致矩阵呢? 

景色苏州威海桂林
苏州124
威海1/212
桂林1/41/21

5fe82a2747ca4a51884965fc878e4aa4.png

也就说只要各行各列满足成倍数的关系即为一致矩阵

一致矩阵:若矩阵中每个元素 aij>0且满足 aij*aji=1,则我们称该矩阵为正互反矩阵。在层次分析法中,我们构造的判断矩阵均是正互反矩阵。若正互反矩阵满足aij*ajk=aik,则我们称其为一致矩阵。

注意:在使用判断矩阵求权重之前,必须对其进行一致性检验。

8b77f42cc8794f0f8673b396b2715ab3.jpeg

引理:n阶正互反矩阵A为一致矩阵时当且仅当最大特征值eq?ℷmax=n且当正互反矩阵A非一致时,一定满足eq?ℷmax>n.

景色苏州威海桂林
苏州12a
威海1/212
桂林1/a1/21

 cc4a78b2ab104e65867ad9d1df58689f.jpeg

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

第一步:计算一致性指标

93845d12949a46db8c1ecaf1426483b2.png

第二步:查找对应的平均随机一致性指标RI 

n123456789101112131415
RI000.520.891.121.261.361.411.461.491.521.541.561.581.59

注:在实际运用中,n很少超过10,如果指标的个数大于10,可以考虑建立二级指标体系

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

ba7c709508a34e4bb7adb11e4b6c9c70.png

如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需对判断矩阵进行修正。

求指标权重及城市在各个指标上的得分

1、算数平均法

先对景色指标进行对第一列归一化处理,得出权重

苏州=1/(1+0.5+0.2)=0.5882

威海=0.5/(1+0.5+0.2)=0.2941

桂林=0.2/(1+0.5+0.2)=0.1177 

 使用第二列的数据,计算出来的权重

苏州=2/(2+1+0.5)=0.5714

威海=1/(2+1+0.5)=0.2857

桂林=0.5/(2+1+0.5)=0.1429

使用第三列数据,计算出来的权重

苏州=5/(5+2+1)=0.625

威海=2/(5+2+1)=0.25

桂林=1/(5+2+1)=0.125

综合上述三列,算术平均求权重:

苏州=(0.5882+0.5714+0.625)/3=0.5949

威海=(0.2941+0.2857+0.25)/3=0.2766

桂林=(0.1177+0.1429+0.125)/3=0.1285

基本步骤:将判断矩阵按照列归一化,将归一化的各列相加,最后将相加后得到的向量中每个元素除以n即可得到权重向量

fb84b3add72641a38eade44b4c75b273.jpeg

2、几何平均法

第一步:将A的元素按照行相乘得到一个新的列向量

第二步:将新的向量的每个分量开n次方

第三步:对该列向量进行归一化即可得到权重向量

6d20981f68824ba0ad183b07b23dac22.jpeg

算数平均法权重几何平均法权重
苏州0.59490.5954
威海0.27660.2764
桂林0.12850.1283

注意:权重和应为1,这里由于四舍五入所以会有可以忽略的差距。

3、特征值法求权重

89d266c09e564c9d9b5c722ce02125b8.jpeg

假若我们的判断矩阵一致性可以接受,那么我们可以仿照一致矩阵求权重的方法。

第一步:求出矩阵A的最大特征值以及其对应的特征向量

第二步:对求出的特征向量进行归一化即可得到我们的权重

景色苏州威海桂林
苏州125
威海1/212
桂林1/51/21

 最大特征值为3.0055,一致性比例CR=0.0053对应的特征向量:[-0.8902,-0.4132,-0.1918]对其归一化:[0.5954,0.2764,0.1283]

算术平均法几何平均法特征值法
苏州0.59490.59540.5954
威海0.27660.27640.2764
桂林0.12850.12830.1283

以特征值法为例(我们可以借助MATLAB来求权重,下面我们会介绍到):

指标权重苏州威海桂林
景色0.26360.59540.27640.1283
花费0.47580.08190.23630.6817
居住0.05380.42860.42860.1429
饮食0.09810.63370.19190.1744
交通0.10870.16670.16670.6667

此时我们便可以求出每一个城市的得分情况:

苏州=0.5954*0.2636+0.0819*0.4758+0.4286*0.0538+0.6337*0.0981+0.1667*0.1087=0.299

同理我们也可以得出剩下两个城市的得分情况为威海0.245,桂林0.455

因此我们就可以认为最佳旅游城市是桂林(可以用EXCELL简化运算)

e67c56eae97d4b0fa543ef0475508f8b.png

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

层次分析法的局限性:

(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。(一般n最多不能超过15)

(2)如果决策层中的指标的数据是已知的,应该如何利用数据使得评价更准确?

因此层次分析法存在很大局限性。

下面我们来看代码部分内容:

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

层次分析法在实际应用中有局限性,比如判断矩阵的主观性较强,可能导致结果的不稳定性。因此,在使用层次分析法时,应尽可能确保判断矩阵的客观性和准确性,并结合实际情况进行考虑。

本次分析就到这里,欢迎大家在评论区补充更正,相信大家一定会有所收获。感谢大家的关注及观看! 

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

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

相关文章

【Linux】创建IDEA桌面快捷方式

Linux系统安装IDEA保姆级教程_linux安装idea-CSDN博客 在Ubuntu上安装Intellij IDEA并创建桌面快捷方式 - 极客子羽 - 博客园 (cnblogs.com) 下载安装包解压到指定目录 /opt/softWare 进入bin目录&#xff0c;ll查看 桌面打开终端&#xff0c;创建文件 touch idea.desktop s…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下…

C++初阶学习第一弹——C++入门(上)

前言&#xff1a; 很高兴&#xff0c;从今天开始&#xff0c;我们就要步入C的学习了&#xff0c;在这之前我们已经对C语言有了不错的了解&#xff0c;对数据结构也有了一些自己的认识&#xff0c;今天开始&#xff0c;我们就进入这个新的主题的学习——C 目录 一、C的发展即其特…

Redis教程——数据类型(有序集合、位图)

上篇文章我们学习了Redis教程——数据类型&#xff08;哈希、集合&#xff09;&#xff0c;这篇文章学习Redis教程——数据类型&#xff08;有序集合、位图&#xff09; 有序集合ZSet 有序集合和集合都是string类型的无序集合&#xff0c;其数据是唯一&#xff0c;都是通过哈…

华为路由器基于接口限速

一、背景 ISP与企业内网通过华为路由器接入Internet时,当大量流量进入路由器时,可能会因为带宽不足产生拥塞,导致丢包,严重影响用户上网体验。对于此需要对网络流量进行限制,其方式通常有防火墙带宽策略、路由器基于接口限速等。 二、华为路由器基于接口限速方式 在路由…

代码随想录算法训练营第四十四天| LeetCode70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

一、LeetCode 70. 爬楼梯 &#xff08;进阶&#xff09; 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E7%89%88%E6%9C%AC.html 状态&#xff1a;已解决 1.思路 这道题跟70.爬楼…

如何在深度学习中调用CAME

1、介绍 CAME&#xff1a;一种以置信度为导向的策略&#xff0c;以减少现有内存高效优化器的不稳定性。基于此策略&#xff0c;我们提出CAME同时实现两个目标:传统自适应方法的快速收敛和内存高效方法的低内存使用。大量的实验证明了CAME在各种NLP任务(如BERT和GPT-2训练)中的…

【python】直接在python3下安装 jupyter notebook,以及处理安装报错,启动不了问题

目录 问题&#xff1a; 1 先做准备&#xff0c;查看环境 1.1 先看python3 和pip &#xff0c;以及查看是否有 juypter 1.2 开始安装 1.3 安装完成后得到警告和报错 2 处理安装的报错问题 2.1 网上有说是因为 pip 自身需要更新&#xff0c;更新之 2.1.1 更新pip 2.1.…

vue快速入门(三十二)局部与全局注册组件的步骤

注释很详细&#xff0c;直接上代码 上一篇 新增内容 局部注册组件全局注册组件 文件结构 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div><h1>又可以愉快的学习啦</h1></div> </template><script>export d…

开启Three.js之旅(会持续完善)

文章目录 Three.js必备构建项目场景Scene相机CameraPerspectiveCamera 渲染器WebGLRendererCSS3DRenderer 灯光LightAmbientLightDirectionalLight 平行光PointLight 加载器CacheFileLoaderLoaderGLTFLoaderRGBELoaderTextureLoader 材质MetarialMeshBasicMaterialMeshLambertM…

武汉星起航:上海股权中心成功挂牌,创始人张振邦领航跨境新纪元

在金秋十月的尾声&#xff0c;上海股权托管交易中心迎来了一场备受瞩目的盛事。2023年10月30日&#xff0c;武汉星起航电子商务有限公司成功挂牌展示&#xff0c;正式登录资本市场&#xff0c;开启了一段崭新的发展篇章。这一里程碑式的跨越&#xff0c;不仅标志着武汉星起航在…

MySQL基础-----约束详解

目录 一. 概述: 二.约束演示&#xff1a; 三.外键约束&#xff1a; 3.1介绍&#xff1a; 3.2外键约束语法&#xff1a; 3.3删除&#xff0c;更新行为&#xff1a; 一. 概述: &#x1f9d0;&#x1f9d0;概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制…

【机器学习】数据变换---小波变换特征提取及应用案列介绍

引言 在机器学习领域&#xff0c;数据变换是一种常见且重要的预处理步骤。通过对原始数据进行变换&#xff0c;我们可以提取出更有意义的特征&#xff0c;提高模型的性能。在众多数据变换方法中&#xff0c;小波变换是一种非常有效的方法&#xff0c;尤其适用于处理非平稳信号和…

会话seesion的使用,结合ddddocr识别简单验证码的登录实现。

古诗文网登录代码&#xff1a; # 古诗文网登录实战 # 验证码链接:https://so.gushiwen.cn/RandCode.ashx # 变动参数链接:__VIEWSTATE所在的地址:https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspx # 登录接口链接:https://so.gushiwen.c…

npx\pnpm 镜像过期解决方法

. // 1. 清空缓存 npm cache clean --force // 2. 关闭SSL验证 npm config set strict-ssl false // 3. 安装 到这里就可以正常使用npm命令安装需要的工具了。如( npm install -g cnpm )

代码学习记录48---单调栈

随想录日记part48 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.19 主要内容&#xff1a;今天开始要学习单调栈的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;503.下一个更大元素II ;42. 接雨水 503.下一个更大元素II 42. 接雨水 Topic1下一个更…

第二部分 Python提高—GUI图形用户界面编程(六)

其他组件学习 文章目录 OptionMenu 选择项Scale 移动滑块颜色选择框文件对话框简单输入对话框通用消息框ttk 子模块控件 OptionMenu 选择项 OptionMenu(选择项)用来做多选一&#xff0c;选中的项在顶部显示。显示效果如下&#xff1a; from tkinter import * root Tk();ro…

电弧的产生机理

目录&#xff1a; 1、起弧机理 2、电弧特点 3、电弧放电特点 4、实际意义 1&#xff09;电力开关装置 2&#xff09;保险丝 1、起弧机理 电弧的本质是一种气体放电现象&#xff0c;可以理解为绝缘情况下产生的高强度瞬时电流。起弧效果如下图所示&#xff1a; 在电场的…

5 CatBoost模型

目录 1 背景 2 原理 2.1 类别特征处理 2.1.1 传统目标编码&#xff1a; TS 2.1.2 Greedy TS 2.1.3 ordered TS编码 2.1.4 CatBoost处理Categorical features总结 2.2.预测偏移处理 2.2.1 梯度无偏估计 2.3 树的构建​​​​​​​ 3 优缺点 优点 4 代码 1 背景 终于…

关系图卷积神经网络

异质图和知识图谱 同质图与异质图 同质图指的是图中的节点类型和关系类型都仅有一种 异质图是指图中的节点类型或关系类型多于一种 知识图谱 知识图谱包含实体和实体之间的关系&#xff0c;并以三元组的形式存储&#xff08;<头实体, 关系, 尾实体>&#xff0c;即异…