灾情巡视路线的最优化方案(刘).doc

上传人:壹****1 文档编号:559643943 上传时间:2023-03-29 格式:DOC 页数:7 大小:80KB
返回 下载 相关 举报
灾情巡视路线的最优化方案(刘).doc_第1页
第1页 / 共7页
灾情巡视路线的最优化方案(刘).doc_第2页
第2页 / 共7页
灾情巡视路线的最优化方案(刘).doc_第3页
第3页 / 共7页
灾情巡视路线的最优化方案(刘).doc_第4页
第4页 / 共7页
灾情巡视路线的最优化方案(刘).doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《灾情巡视路线的最优化方案(刘).doc》由会员分享,可在线阅读,更多相关《灾情巡视路线的最优化方案(刘).doc(7页珍藏版)》请在金锄头文库上搜索。

1、约束最优路线的模拟退火解法说明:以98年全国大学生数模竞赛中的B题(即“灾情巡视路线”)为例,介绍能解一类较广泛的约束最优路线问题的方法模拟退火法1。该法对“灾情巡视路线”这类有约束以及“(一般)旅行推销员”、“中国邮递员”等无约束组合优化问题均能求得较好的近似解,具有适用范围广和可拓展的优点。一、问题描述对于最短路、最大流、中国邮递员、旅行推销员等最优路线问题,常采用各自不同的方法求解。若在这些问题中再加入一些约束条件,则原方法往往不再有效,如98年大学生数模竞赛中的B题就是如此。我们设计的方法较好地解决了这一问题。现以98年B题为例,介绍该法及其实现。下面为该题文字部分,并称其四问分别为问

2、题1至问题4:下图(略)为某县的乡(镇)、村公路网示意图,公路边的数字为该路段的公里数。今年夏天该县遭受水灾。为考察灾情、组织自救,县领导决定,带领有关部门负责人到全县各乡(镇)、村巡视。巡视路线指从县政府所在地出发,走遍各乡(镇)、村,又回到县政府所在地的路线。若分三组(路)巡视,试设计总路程最短且各组尽可能均衡的巡视路线。假定巡视人员在各乡(镇)停留时间T=2小时,在各村停留时间t=1小时,汽车行驶速度V=35公里小时。要在24小时内完成巡视,至少应分几组;给出这种分组下你认为最佳的巡视路线。在上述关于T,t和V的假定下,如果巡视人员足够多,完成巡视的最短时间是多少;给出在这种最短时间完成

3、巡视的要求下,你认为最佳的巡视路线。若巡视组数已定(如三组),要求尽快完成巡视,讨论T,t和V改变对最佳巡视路线的影响。二、问题分析及模型的建立因为是分组巡视(不妨设分N 组),要直接确定一个组巡视哪些地点是困难的。由于将各组巡视的路线连接起来可看成一条N 次相继从县城出发又回到县城的路线,这样,多组巡视就化成了单组巡视。经分析,我们认为前3问及第4问计算部分都是组合规划中的约束优化问题,均属以模型 (I)为基础的约束最优路线模型。下面根据各问的要求,分别对4个问题进行具体讨论。对于问题1,如果选取总路程最短的所有巡视路线中最均衡的,一般这一路线仍会很不均衡。故除了要总路程短,另需“均衡”提出

4、一定的要求,即组间巡视路线的长度差不大于某给定值L。还有路线能够分成3次从县城O出发再回到O、各组经过地点的并集为所有顶点的集合只之约束。模型如下: (II)其中F为巡视总路程,N为要求的分组数(本问N=3),n是优化过程中路线的实际分组数,fmax和fmin分别为n组中最长和最短组的巡视路程,Pi 为第i组巡视地点的集合,A是所有顶点的集合。约束条件(fmax-fmin)L用来保证各组路程基本均衡,目标函数中加入l(fmax-fmin)是为了使各组的路程尽可能均衡,这是一个约束多目标规划。权重l的取值应远小于目标函数中F的权系数1,否则会因离散问题函数值的跳跃现象而导致优化困难。这里,我们取

5、l=1/L。 对问题2和3,因在原图中不是任意两顶点间均有边,故在多组巡视时可能存在二组以上经过的公共点,从而使顶点赋权遇到如下困难:若先赋点权,则这些公共点的权会被重复计算;而若在优化过程中赋点权,则又有公共点究竟应该由哪次(组)巡视的问题。对此,我们采用Dijkstra法算出任意两点间的最短路程并除以速度V转化为时间,并用其作为两顶点间边的权构造一新图。第三个约束条件保证了每点至少经过一次,而这时若路线中含除县城外的重复地点将至少增加1个小时(除县城为0外,其它点权为1或2小时),因而能保证优化结果中不出现县城以外的重复点。经分析,我们认为这两问同属分组数和路线双重优化问题,具体模型如下:

6、 (III)其中N、n 、A、Pi与模型(II)相同,F为各组巡视时间之和, fmax为n组中时间最长组的巡视时间,TMAX是巡视允许的最长时间。对问题2,TMAX=24;对问题3,因人员足够多,故每个地点可由一组单独巡视,因此完成巡视的最短时间是这些单点巡视的最佳路线中花时间最长的组对应的巡视时间,其值TMAX由程序计算确定。对最少分组数的优化,模型中没有体现,我们是通过主程序与辅助控制函数协同工作来实现该目的的,即在优化过程中,若路线调整发现最短与次短组的时间之和不大于TMAX,且满足约束,则记录该路线后返回,并由主程序将分组数减1后重新优化,如果重新优化找不到满足约束的可行路线,则认为找

7、到了最优解;而若优化函数没有找到满足约束的可行路线,主程序则将分组数加1后进行下一轮优化。我们用m和M分别表示求解时尝试的最小和最大分组数,对问题2,取m=4,M=8,而对问题3,m=20,M=35。对于问题4,其最佳路线是指在分组数已确定的情况下,巡视时间最长的组所对应的时间尽量短的路线。下面给出其模型,各参数的含义同模型(III),关于T、t和V对路线的影响,我们将在结果与分析部分给出。 (IV)三、模型的求解 (一)算法选择 由以上分析可知,本题的所有问题都可视为“在一定约束下,从一点出发再回到该点的最优路线寻求问题”。如问题1可看成有约束的“一般旅行推销员”问题,但即使是无约束的“旅行

8、推销员”问题,也尚未找到解这类问题最优解的多项式算法3,对本题n=53这种情形,无论是“分枝与界限法”4还是动态规划5等方法,想得到最优解一般是不可能的,只能用近似算法。选择模拟退火法,是因为它不同于一般的单纯下降法,它具有一定条件下的随机上升过程,有可能从一极小区域跃过波峰到过另一极小区域,因而具有解更接近全局最优解的优点。 (二)计算方法与步骤 1方法概述 下面介绍模拟退火法函数,主函数部分略。模拟退火法是一种较新的算法,尚无固定的计算步骤1。我们设计的基本操作包括路线调整、约束条件判断、调整许可预测、内部优化、与已有最佳路线的比较和最佳路线及相关数据的记录等。路线调整在给定的工作点集序列

9、上进行,其前部分为当前路线,后部分为剩余点集。如此设计是因为在许多问题中某些点在路线中可能出现多次,如“田”字型图的“一般旅行推销员”问题,此时可将每一可能重复的点或所有点以最大可能重复出现的次数置于工作点集中。路线的调整有5种(所有操作对象都是随机选取的):交换路线内两路段(含点)互换;反转路线中选取一路段反向;删除路线内一路段移至路线外;插入路线外一路段插入到路线中;替换路线内外各取一路段互换。约束条件判断由用户函数完成;调整允许预测由内部函数完成,它决定是否接受一上升过程;内部优化是仅有交换和反转操作的优化过程,与上层模拟退火法函数基本相同。2基本步骤 (1) 由主程序传送工作点集、初始

10、路线终点、记录器数目、温度初值t0、温度下降率FT、温度循环上限maxtk、每个温度的最大循环次数maxk和最多成功次操作次数max_suc、连续温度无改进时结束优化参数K等,并设置寻找可行路线的不成功次数n_suc:=0、最优路线条数rec_n:=0、优化值fx0:=maxfx、温度循环变量tk:=1,优化连续无改进温度次数same_tn:=0等内部变量初值;(2) 计算初始路线的目标函数值fx、优化控制函数值fx1。若fx1maxfx,则记录路线并置fx0:=fx+fx1、rec_n:=0;(3) 如果tk=maxtk或same_tn=K,转步(15);否则,置循环变量kk:=1,成功操作

11、次数计数器sucn:=0等;(4) 如果kk=maxk或sucn=max_suc,转步(14);否则,计算当前路线的优化控制函数值fx1、在复制路线上调整路线并计算目标函数值fx和优化控制函数值fx2,得到两者的改变量dfx和dfx1,置dfx12:=dfx+dfx1,kk:=kk+1;(5) 若fx20或rec_n=0且fx2fx1,转步(4);(6) 执行100次内部优化并更改路线,若某次内部优化后fx230时,转步(15);其它情况转步(4);(7)计算路线的辅助控制函数值fx3,若fx3fx0,即比已有的最佳路线差,转步(4);否则检查是否与记录的路线重复,若重复则转步(4);(10)

12、若fx+fx2fx0,则记录器中原最佳路线后移,最佳路线数rec_n:=1,更新优化值fx0:=fx+fx2,路线及相关数据记入第一个位置,转步(4);(11) rec_n:=rec_n+1,并计算记录器中最后一条最优路线的辅助控制函数值fx4;(12)若fx3fx4,与记录器中各路线的辅助控制函数值比较并据此确定记录器指针,当前路线插入相应位置,转步(4);(13)若记录器没满,则路线及相关参数记在已有最优路线之后;转步(4);(14)若tk0,则找到了最优路线,可从记录器中获取最优和次优路线及相关数据。3编程提示 对分组的处理及模型中的变量n、Pi、fmax、fmin、F和下面用到的次短组

13、巡视时间fmin1均由分组处理函数完成,因此它是解决分组问题的关键,分组方法是:当自然分组数不大于N时,取自然分组;否则将最短两组合并,直到组数等于N为止。与总的设计思想相对应,程序设计应考虑多功能与通用性,以适应起点与终点相同和不同、单组和多组等各种要求。由于有上升过程,故需一组变量存放当前最佳路线、最优值和路线终点位置等。记录器参数组可满足人们想获取多条最优路线的要求。参数maxfx之值为“无穷大”,也是判断约束是否满足的依据,即满足约束时优化控制函数值小于maxfx。三个用户函数分别为目标函数、优化控制函数和辅助控制函数。优化控制函数在未找到可行路线时为罚函数(值大于等于maxfx),否

14、则为0或多目标规划中减去实际目标函数值的剩余部分。辅助控制函数实现两种控制,一是优先记录某种(不影响优化过程的)特性的路线,如优先记录均衡路线等;其二是有些问题仅要求实现一固定目标,如本题最少分组数的寻找,只要两最短组的时间之和不超过要求的时间,它们即应合并成一组,此时继续优化是多余的,应将分组数减1后重新优化。函数返回值大于或小于等于-maxfx可区分上述两种情况。另外,定义了一称为优化值的变量,它是目标函数值与优化函数值之和。程序在没有找到和已有可行路线时的处理不同,前者主要是寻找可行路线,只关心优化控制函数值是否下降,而已有可行路线时的关注点在优化值的改变。使用优化值而不是目标函数值判断路线的优劣,是因为在许多多目标规中常常只要一个目标的结果,且把其余部分放在优化控制函数中可以仅计算路线改变部分的目标函数值,因而在处理多目标规划时可有更好的性能。程序设有奇偶两种处理方式,其中偶方式为标准多目规划或只计算路线改变部分得不到目标函数值(如第4问)的情形而设。设计奇偶方式而非固

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究生/硕士 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号