数学建模——数学建模全国大学生数学建模型竞赛练习题评_第1页
数学建模——数学建模全国大学生数学建模型竞赛练习题评_第2页
数学建模——数学建模全国大学生数学建模型竞赛练习题评_第3页
数学建模——数学建模全国大学生数学建模型竞赛练习题评_第4页
数学建模——数学建模全国大学生数学建模型竞赛练习题评_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国大学生数学建模竞赛培训班练习题评讲钢管的订购和运输 钢管的订购和运输解答模型 摘要 首先通过最短路算法简化了供需距离网络,去掉了铁路、公路等边的性质,使供需距离网络简化为一个供需运输价格表.在此基础上构造了三个模型:线性费用的网络流模型和具有非线性费用的网络流模型.通过改进传统的最小费用最大流算法,解决了本题的非线性费用网络流模型,并给出了算法的正确性证明与复杂度分析. 关键词 运输问题;网络流;树形网络;分支定界 1.问题的提出(略) 2.基本假设和符号说明 2.1 基本假设 1.原图是一个连通的简单图; 2.铁路、公路的运量没有限制; 3.为了满足费用最小的要求,允许出现生产过剩现象;

2、 4.工厂的数目(图中s点的个数)不太多,约在10个以下; 5.待铺设的钢管长度不太长,约在10000公里以下; 6.待铺设的线路的段数不太多,约在40段以下; 7.公路运输不足整公里部分按整公里计算. 2.2 符号说明 1.工厂(图中s点)设有n个,记作s1,s2, ,sn; 2.在不至于混淆的情况下,si同时用来表示每个工厂的产量,i=1,2, ,n; 3.待铺设线路的端点(图中a点,以后简称关节点),设有m个,记作a1,a2, ,am; 4.在不至于混淆的情况下,aj同时用来表示从各个工厂运到aj的钢管总数量,j=1,2, ,m; 5.待铺设的管道,记作pjk(jk),表示aj与ak之间

3、有一条待铺设的管道,它的长度也用pjk来表示,如果aj与ak之间没有待铺设的管道,则pjk=0; 6.saqij表示从si 到aj的运输量, i=1,2, ,n, j=1,2, ,m; 7. sapij表示从si到aj运输单位长度钢管的最小费用,i=1,2, ,n, j=1,2, ,m; 8.aaqjk表示aj提供的用于铺设aj与ak之间管道的长度, j,k=1,2, ,m,.显然有: aaqjk+aaqkj=pjk; 9.下文所有费用的单位均为千元. 3.2 问题的简化 求sap矩阵的基本思路是图的最短路算法. 由于铁路的运输费用与线路的的长度不是线性关系,必须对铁路网做一些预处理才能套用图

4、的标准最短路算法. 下面叙述求sap矩阵的过程: 1.利用图的标准最短路算法,从铁路网得出图中任两个点之间的最短路径表t(如果两个点之间不连通,认为它们之间的最短路长度为+). 2.利用题中的铁路运价表将t中的每个元素(即最短距离)转化为运输费用,将运输费用表记为c 3.将公路的长度换算为运输费用,由公路路程图(包括要沿线铺设管道的公路)得出公路费用图g,若i,j不连通,则令gij=+. 4.对于一组(i,j)1,2, ,n1,2, ,m,如果cij=500这个条件.求解过程分为三步: a.假设工厂的产量只有上限,下面的三个流网络模型都是针对这种情况的. b.假设工厂的产量有上下限,“产量有下

5、限的模型”一节讨论这种情况. c.工厂的产量0,500,li,“基于分支定界搜索的求解过程”一节讨论这种情况. 4.1 线性费用流网络模型一 下面建立一个线性费用流网络的模型(图1): source层 (li,ri) s层 (+,sapij) a层 (1,1),(1,2),(1,3) p层 (1,0) target层sources1s2s3a1a2a3p11p12p13p21p22p23target图1 图中边上的(a,b),a表示边的流量限制,b表示边的单位流量的费用,下同. 1)网络有一个源点source,从source到每个s点有一条边,边的流量限制为si的最大产量li,单位费用为si生

6、产钢管的单价ri. 2)从si到aj有一条边,边的流量限制为+,单位费用为sapij,即从si到aj运输单位长度钢管的费用. 3)对于每一条要铺设的管道p,设其长度为len,两端点为aj,ak,则p对应着个len点,分别表示要铺设的一个单位长度的钢管(如图中p11,p12,p13),从aj到这len个点各有一条边,边的流量限制为1,单位费用分别为1,2,3, ,len,从ak到这len个点也各有一条边,边的流量限制为1,单位费用分别为len,len-1, ,3,2,1 4)从3)中的点(代表每单位长度的钢管的点)到图的汇点target各有一条边,流量限制为1,单位费用为0. 这种流网络模型最简

7、单,效率也较低.设铺设的管道共有tl公里,显然tln与m.网络中的点数大约为tl个,边数大约为3tl,最大流量为tl.标准的网络流算法的时间复杂度为o(v3maxflow),因此,这个模型的复杂度为o(tl4).对于题中的数据, tl大约在5000左右, tl41015,不可承受.(关于算法复杂度问题可以参看资料:谢政,李建平或者,谢金星,刑文训) 4.2 线性费用流网络模型二(图2) source层 (li,ri) s层 (+,sapij) a层 (1,1),(1,2),(1,3) p层 (pi,0) target层sources1s2s3a1a2a3p1p2target图2 模型一之所以效

8、率低,最主要的问题是流网络中的点太多了.通过点的合并,可以大幅减少流网络中点的个数.将线性费用流网络模型一中对应同一段要铺设的管道的点合并成一个点(即模型一图中的p11,p12,p13合并为p1),从a点到这些点的边现在全部转到一个点上(如图),从这些点到target的边合并为流量限制为pi(pi即要铺设的管道的长度),单位费用为0的一条边. 模型二中的点数为n+m+pcount+2,边数大约为2tl个.均比模型一有了大幅减少,然而边数仍然太多,而且这张流网络不是一个简单图(a层与p层中两个点之间的边数1),因此,不能直接套用标准最小费用最大流的复杂度计算公式. 4.3 非线性费用流网络模型(

9、图3) source层 (li,ri) s层 (+,sapij) a层 (pi,f(f+1)/2) p层 (pi,0) target层sources1s2s3a1a2a3p1p2target图3 第三种模型是非线性费用网络流模型. 1)模型中所有的点与模型二相同; 2)模型中除了a层与p层之间的边以外,均与模型二相同; 3) a层与p层之间的边的流量限制与模型二相同,但是没有单位费用的概念,因为费用是非线性的,费用=流量(流量+1)/2 线性费用流网络模型一可用标准的最小费用最大流算法(如最小费用路算法)来求解.而非线性费用流网络模型不能直接套用标准算法.下面下叙述以下最小费用路算法,再提出非

10、线性模型的求解算法. 标准的最小费用最大流算法最小费用路算法: s tep0:取零流f为初始可行流. step1:如果v(f)=最大流量vmax,则f为d中流值为vmax的最小费用流;否则转step2; step2:构造增量网络d(f).如果d(f)中不存在(source,target)路,则d(f)中没有流值为vmax的可行流,停止,否则在d(f)中找一条最小费用路u,转step3. step3:用c(u)表示u的容量,对f沿u增广流值,增广量为c(u),得到新流f,转step1. 最小费用路算法在找最小费用路时要用到边的单位费用,而非线性模型中的非线性费用边没有单位费用的概念.为此,将最小

11、费用路算法做一点修改,定义非线性费用边的上下边际费用: 上边际费用定义为:流量增加1,非线性费用边的费用的增加值 下边际费用定义为:流量减少1,非线性费用边的费用的减小值 当最小费用路算法查询正向流过这条边的单位费用时,用上边际费用作为单位费用; 当最小费用路算法查询负向流过这条边的单位费用时,用下边际费用作为单位费用; 经过这个修改,最小费用路算法即可应用于本题的非线性模型了. 4.4 有产量下限的模型 下面考虑进一步的模型. 现在我们给定每个工厂的生产量范围low,high,求最小费用方案. 为了解决这个问题,我们要对原来的网络作一点修改(图4):sources1s1source层(hig

12、hi-lowi,ri)s层(+,0)(lowi,0)图4:产量有上下限的非线性费用流网络模型 1)为每个产量下限非0的工厂增加一个虚拟点,如图中的点s1. 2)增加一条从source到s1的边,流量限制为low1,费用为0; 3)增加一条从s1到s1的边,流量限制为+,费用为0; 4)将source到s1的边的流量限制改为high1-low1. 这样的模型得出的最小费用要加上才是原问题的解. 由于我们假设允许生产过剩现象,这种方法的正确性显而易见,这里不再证明.niiirlow1 4.5 基于分支定界搜索的求解过程 首先介绍分支定界法:分支定界法(branch and bound)求解组合优化

13、的基本思想是隐式地枚举一切可行解.自然,这中枚举不是简单的完全枚举,而是以一种比较“聪明”的方式进行的,即逐次对解空间进行划分. 所谓分支,指的就是这个划分过程; 所谓定界,是指对于每个划分后的解空间(即每个分支),要计算原问题的最优解的下界(对极小化问题).这些下界用来在求解过程中判定是否需要对目前的解空间进一步划分,也就是尽可能去掉一些明显的非最优点,从而避免完全枚举. 分支定界算法的实际计算效果取决于具体的分支策略和定界方法.定界方法中经常采用的有lagrange松弛方法和线性规划松弛方法等.整数规划中的分支定界法可以形式地描述如下: step0 令activeset=0;u=;curr

14、entbest=0 step1 如果activeset=,则已经得到原问题的最优解,结束;否则从活跃分支点集合activeset中选择一个分支点k;将k从activeset中去掉,继续step2. step2 生成k的各分支i=1,2, ,nk及其对应的下界zi. step3 对分支i=1,2, ,nk:如果分支i得到的是全整数解且ziu,则令u=zi且currentbest=i;如果分支i得到的不是全整数解且zi当前最优解,舍弃当前节点. 搜索结束,最优解:费用为12786316,生产方案为=(800,800,1000,0,1366,1205,0).至此,题中第一问与第三问都已被圆满地解决了

15、. 4.6 运行结果 图1的最优解:总费用1286316千元 s1到s7的产量=(800,800,1000,0,1366,1205,0) 图2的最优解:总费用:14066314千元 s1到s7的产量=(800,800,1000,0,1303,2000,0) 4.7 算法的复杂度分析 (v指网络中的总点数,v=n+m+pcount+2,tl指待铺设的管道的总长度) i.预处理时用到的图的最短路算法的复杂度为o(v3) ii.主程序外层是分支定界搜索算法,最坏的情况的运行次数为2n,一般情况下运行次数不多 iii.主程序内层是非线性费用网络流模型,使用非线性最小费用路算法,复杂度为o(v3tl). 由此可见算法的时间复杂度在o(v3tl)到o(v3tl 2n)之间,若数据规模如假设中所述,则运算量大约在1010以下. 5.关于问题二的讨论 本赛题的问题二要求根据问题一的分析,指出哪家钢厂销价的变化对购运计划和总费用影响最大,哪家钢厂产量的上限的变化对购运计划和总费用的影响最大.并给出相应的数字结果. 这个问题属于规划问题的灵敏度分析.一般来说,应该对于销价p的变化和产量上限s的变化求出相应的总费用的变化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论