matlab数学建模与仿真_数学建模与MATLAB应用——图与网络模型

0314edbe60a1001d363fdc803ae65636.png0314edbe60a1001d363fdc803ae65636.png点击上方“ 蓝字 ”,发现更多精彩吧!! d52c48c432edcfc941fdfe2a545d6ca9.gif 本文主要讲述数学建模与MATLAB应用—— 图与网络模型,以2020深圳杯C题为例展示主要结果a53c2aac4eb0d047cec074a276cdb0bb.pnga53c2aac4eb0d047cec074a276cdb0bb.png文末有官网链接,希望对大家有所帮助fbc04f4edd03f942e28454890d847547.pngfbc04f4edd03f942e28454890d847547.png

一、什么是图论?

1、图论的定义

图论是组合数学的一个分支,和其他数学分支,如群论、矩阵论、拓扑学有着密切关系。

2、图论的发展

图论起源于 18 世纪。第一篇图论论文是瑞士数学家欧拉于 1736 年发表的“哥尼斯堡的七座桥”。

1847年,克希霍夫为了给出电网络方程而引进了“”的概念。近几十年来,由于计算机技术和科学的飞速发展,大大地促进了图论研究和应用,图论的理论和方法已经渗透到物理、化学、通讯科学、建筑学、运筹学,生物遗传学、心理学、经济学、社会学等学科中。

3、什么是图与网络

图与网络是运筹学(Operations Research)中的一个经典和重要的分支,所研究的问题涉及经济管理、工业工程、交通运输、计算机科学与信息技术、通讯与网络技术等诸多领域。

下面将要讨论的最短路问题、最大流问题、最小费用流问题和匹配问题等都是图与网络的基本问题。

二、图与网络相关问题

1、最短路径问题(SSP-shorst path problem)

一名货柜车司机奉命在最短的时间内将一车货物从甲地运往乙地。从甲地到乙地的公路网纵横交错,因此有多种行车路线,这名司机应选择哪条线路呢?假设货柜车的运行速度是恒定的,那么这一问题相当于需要找到一条从甲地到乙地的最短路。

最短路径问题是最常见的图与网络相关的问题,当然在狭义上是路径最短,在广义上可以延申为任何利益的最短(最省),因此可以根据实际的情况来进行适当的变换,如问题二延伸到了成本问题。

2、公路连接问题

某一地区有若干个主要城市,现准备修建高速公路把这些城市连接起来,使得从其中任何一个城市都可以经高速公路直接或间接到达另一个城市。假定已经知道了任意两个城市之间修建高速公路的成本,那么应如何决定在哪些城市间修建高速公路,使得总成本最小?

3、指派问题(assignment problem)

一家公司经理准备安排 N 名员工去完成 N 项任务,每人一项。由于各员工的特点不同,不同的员工去完成同一项任务时所获得的回报是不同的。如何分配工作方案可以使总回报最大?

4、旅行商问题(transportation problem)

旅行商问题是一个非常古老的问题,简而言之就是一个商人从起点城市出发旅行,设计一条路线可以经过所有目的城市不重复旅行,使其路途最短的问题。

此类问题可以推广到各个领域,但是万变不离其宗。解决此类问题的方法也是多种多样,对于一些小型的问题可以进行枚举比较,对于大型的由于计算量的约束需要使用蒙特卡罗模拟的思想和一些智能算法,如启发式算法遗传算法、蚁群算法等。

2020年深圳杯C题就包含了此问求解。

三、图与网络相关概念

1、有向图和无向图

f66002c600e0f378b1cd1e2fc4ef1e8c.png

2、完全图

每一对不同的顶点都有一条边相连的简单图称为完全图(complete graph)。

a5c2572a5c50ba7d52240b9e979104ab.png

四、图论问题求解实例

1、最短路径问题(公路连接问题)

某公司在六个城市C1, …… ,C6中有分公司,从 Ci到 Cj 的直接航程票价记在下述矩阵的(i, j) 位置上。(∞表示无直接航路),请帮助该公司设计一张城市 C1 到其它城市间的票价最便宜的路线图。

94560e302eba4db61aee7ae44311f49e.png

问题求解:

ea257ce93d071ef247074cd2792824e0.png

MATLAB程序:

clc,clear
a=zeros(6);
a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10;
a(2,3)=15;a(2,4)=20;a(2,6)=25;
a(3,4)=10;a(3,5)=20;
a(4,5)=10;a(4,6)=25;
a(5,6)=55;
a=a+a';
a(find(a==0))=inf;
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
d(1:length(a))=inf;d(1)=0;temp=1;
while sum(pb) tb=find(pb==0);
 d(tb)=min(d(tb),d(temp)+a(temp,tb));
 tmpb=find(d(tb)==min(d(tb)));
 temp=tb(tmpb(1));
 pb(temp)=1;
 index1=[index1,temp];
 temp2=find(d(index1)==d(temp)-a(temp,index1));
 index2(temp)=index1(temp2(1));
end
d, index1, index2

求解结果:

d =
     0    35    45    35    25    10

index1 =
     1     6     5     2     4     3

index2 =
     1     6     5     6     1     1

2、旅行商问题(以2020深圳杯C题为例展示主要结果)

题目参见官网,请点击文末链接。下面结果只做学习交流演示所用,不可用作其他用途!
题中所有节点如图所示:(图中对数据进行了处理,图中的单位正确性不做深入研究,只演示图论问题)

85ce4f2af3c56c7955af3ecfa965bb94.png

此题由于节点个数为30个,使用枚举法的计算量超乎想象,在此使用智能算法应该是比较好的解决思路。

我分别使用模拟退火、遗传和蚁群算法来进行求解

模拟退火算法求解图:

bcf39803278e5209b718d11a5f960a4c.png

遗传算法求解图:

49aa015e976884f003e0d9ab6f16d31d.png

蚁群算法求解图:

5759dc9eaf332e8f427abf0268676c53.png

结果分析,进过运行程序后遗传算法和蚁群算法的结果较好,二者的运行速度相比相差不大,在此问题求解中遗传算法稍快与蚁群算法,最终结果是蚁群算法的最优路径短与遗传算法

才疏学浅,结果中存在的问题请大家不吝赐教!仅供大家参考学习,欢迎指正!

深圳杯C题链接: http://m2ct.org/view-page.jsp?editId=12&uri=0D00233&gobackUrl=modular-list.jsp&pageType=smxly&menuType=flowUp 关于MATLAB的学习: 大家可以关注我们的 知乎专栏–数据可视化和数据分析中matlab的使用 https://zhuanlan.zhihu.com/c_1131568134137692160 欢迎大家加入我们的MATLAB学习交流群:

953314432


5f1a117a6d85a92923451b4a3d0869b0.png 0235753113d4a79e6a69af022032f24d.png 2871f4e0c4f6dd7798fb66c2ade6c9ce.gif扫码关注我们更多精彩等待你发现 出品: Asoul水云天课堂工作室 2871f4e0c4f6dd7798fb66c2ade6c9ce.gif
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值