- 412.47 KB
- 2022-05-12 10:04:05 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
关于筛选最佳旅游线路的方案设计摘要近年来,我国的旅游产业蓬勃发展,积累了旅游方面的大量的数据,有效地分析和理解这些数据,可以更好地服务于旅游业,并促进其健康科学地发展。随着人们生活水平的不断提高,旅游已成为提高人们生活质量的重要活动之一。现在相当一部分旅游爱好者都希望能够充分利用一次难得的外出旅游时机,或者在有限的假期内(如五一、国庆节)旅游较多的旅游景点。对于他们来说,尽可能缩短旅行在途时间,既可提高时间利用效率、也可减轻旅途劳顿。故对于旅游者而言,选择设计合理的旅游线路,既可以[1]节省时间、又可以省钱。本文研究的旅游路径是一个封闭回路的数学模型。这一问题涉及到平面上的点的遍历问题,即要寻找一条行走路线最短(尽可能照顾花费最少)但又可以行遍图上所有点的路径。本问题类似货郎担问题,利用MATLAB软件,对旅游者的最优旅游路线(在相关条件的约束情况下)模型进行求解,求出最短回路,及各边权值总和最小的那条路径,得出了游玩10个景区的最优旅游路径,问题一时间不限,寻找出最佳的哈密顿回路,此时旅游费用至少为3041元,具体旅行路线见表3;问题二旅游费用不限,利用Floyd算法,求出最少用时149小时即可游玩所有目标景区,旅游路线见表4;问题三在旅游费用为2000元得情况下,利用蚁群算法求出:旅游目的地最多为7个时,具体路线见表5;问题四在旅游时间为5天的情况下,旅游目的地最多为8个,具体旅游路线见表6;问题五在旅游时间为5天旅游费用为2000元的情况下,旅游目的地最多为8个,此时的旅游费用为2023元,具体旅游路线见表7。本文通过建立各种模型和对模型的求解,会得出在不同情形下的最优旅游路径的规划方案,这不仅为外出旅游者们提供了最优的决策,在一定程度上也对旅行团在旅游路径的规划上提供了参考。最后,本文对模型进行了相关评价和推广,使其能更好的应用于实际生活中。关健词:旅游路径图论货郎担问题Floyd算法蚁群算法MATLAB
§1问题的提出1.1问题背景及分析随着人们的生活不断提高,旅游已成为提高人们生活质量的重要活动。江苏徐州有一位旅游爱好者打算现在的今年的五月一日早上8点之后出发,到全国一些著名景点旅游,最后回到徐州。由于跟团旅游会受到若干限制,他(她)打算自己作为背包客出游。他预选了十个省市旅游景点,如表1所示。表1.预选的十个省市旅游景点省市景点名称在景点的最短停留时间江苏常州市恐龙园4小时山东青岛市崂山6小时北京八达岭长城3小时山西祁县乔家大院3小时河南洛阳市龙门石窟3小时安徽黄山市黄山7小时湖北武汉市黄鹤楼2小时陕西西安市秦始皇兵马俑2小时江西九江市庐山7小时浙江舟山市普陀山6小时本文的核心问题是为旅游者设计出合理的旅游线路,既可以节省时间,又可以省钱。旅游路径是一个最终要回到自己原地点的一个数学模型§2问题的分析2.1要解决的问题(1)如果时间不限,游客将十个景点全游览完,至少需要多少旅游费用。(2)如果旅游费用不限,游客将十个景点全游览完,至少需要多少时间。(3)如果这位游客准备有限旅游费用(如2000元),想尽可能多游览景点,如何设计他的旅游行程表。(4)如果这位游客只有有限的时间(如5天),想尽可能多游览景点,如何设计他的旅游行程表。(5)如果这位游客只有有限的时间(如5天)和有限的旅游费用(如2000元),想尽可能多游览景点,如何设计他的旅游行程表。2.2对应的解决方法(1)时间不限,要游完所有的景点,约束条件是费用尽可能的少,也即说明要使用2
最廉价的交通工具,并筛选好时间尽量避免住宿问题。(2)费用不限,要游完所有的景点,约束条件是所用时间尽可能的少,也即说明要寻找一条能游完所有景点最短路径,且使用最快捷的交通工具,并筛选好时间尽量避免住宿问题。(3)费用有限(最多2000元),要尽可能多的游览景点,即要综合考虑到各景点的相关信息条件并筛选好时间尽量避免住宿问题(筛选出最优的旅游路线)。这就要用到层次分析法。(4)时间有限(最多5天),要尽可能多的游览景点,即要综合考虑到达各景点的交通便捷相关信息条件,还要尽量避免住宿问题(筛选出最优的旅游路线)。这也要用到层次分析法。(5)费用有限,时间也有限,且要尽可能多的游览景点,即要综合考虑各景点、到达各景点的交通便捷相关信息条件,当然也还要尽量避免住宿问题(筛选出最优的旅游路线)。这也要用到层次分析法。§3模型的假设(1)旅游费用以网上公布为准,具体包括交通费、住宿费、景点门票(第一门票)。晚上20:00至次日早晨7:00之间,如果在某地停留超过6小时,必须住宿,住宿费用不超过200元/天。吃饭等其它费用60元/天。(2)景点的开放时间为8:00至18:00。(3)忽略地域差异,假设市内乘车时间和费用相同并以平均值计算,住宿费用相同设为50元/夜。(4)交通状况良好,不出现堵车、晚班、晚点情况§4定义与符号说明1、C旅游景点的个数2、Fi选择第i条路线总费用3、Ti选择第i条路线总时间4、nc1c+1个点可选择路线的总数5、a吃饭等其他费用bij6、第i条路线到景点j间的路费gj7、ij第i条路线第个景点的门票kijj8、第i条路线第个景点的住宿费用lijj9、第i条路线到第个景点的路上时间mijj10、第i条路线第个景点的停留时间qj11、ij第i条路线第个景点的住宿时间12、u其他时间,包括吃饭、等待时间等3
xij13、第i条路线第j个景点是否需要住宿(0--1变量)§5模型的建立与求解5.1建立模型此题属于单目标优化问题,一到五问要求在不同的约束条件下对不同的目标进行优化,考虑到实际问题,我们可以建立离散型目标优化模型来解决问题。我们从十个景点中选择C个景点,首先写出第i条路线的总费用与总时间的表达式我们引入住宿决策变量1第i条路线在第j个景点需要住宿xij0第i条路线在第j个景点不需要住宿则cFi(bijgijxij*kij)a*T/24j1cTi(lijmijxij*qij)uj1i=1,2,3,4···nc我们引入函数h来描述时间和费用与可以选择旅游景点个数的关系chF,T由于旅游的路费和路上时间是由交通方式的选取和实际中的交通系统有关的,我们将这些信息收集并放到集合W中,将可选择的路线放到集合V中。下面我们结合一到五问中的问题分别确定优化目标和约束条件。第一问以旅游总费用为作为优化目标,要求它越小越好,而要求将10个景点旅游玩,对时间没有限制。可用下面模型来描述。min(Fi)s.t.C10最终在集合W和V中确定最优的i与交通方式。第二问以旅游总时间为作为优化目标,要求它越小越好,而要求将10个景点旅游玩,对旅游总费用没有限制。可用下面模型来描述。min(Ti)s.t.C10最终在集合W和V中确定最优的i与交通方式。第三问以可以旅游的景点个数为优化目标,要求它越大越好,而要求旅游总费用不超过2000元,对旅游总时间没有限制。可用下面模型来描述。max(h(F,T))s.t.Fi2000最终在集合W和V中确定所有满足条件的i与交通方式。第四问与第三问有相同的优化目标,但是要求旅游总时间不超过五天,而对旅游总费用没有要求。模型可以改写如下max(h(F,T))s.t.Ti5*241204
第五问则是三四问的综合,模型如下max(h(F,T))s.t.Ti5*24120s.t.Fi2000把每个旅游景区景点看做途中的一个节点,各景区景点之间的公路看做途中对应节点间的边,相对应的行程距离看做对应边上的权,所给各景区景点间的交通路线网就转化为加权网络图G,遍游各个景区景点的最佳旅游路线问题就转化为在给定的加权网络图中寻找从给定出发点出发,行遍所有顶点至少一次且只有一次再回到定点,使得总权(路程)最小,此即TSP问题。对于本问题:G[,,NEW]E{(,)|,ijijNW},{(.)|,wijijN}N{0,1,,11}L设V1,V2,V3..........,Vc是要旅游的景点,景点Vi到景点Vj的距离为dij,现在求从V0(徐州)出发,经各景点一次且仅一次返回V0的最短路程,这让我们联想到著名的货郎担问题,可以建立如下动态规划模型。设S表示从V0到Vi中间可能经过的景点集合,S实际上是包含除V0和Vi两个点之外的其余点的集合,但S点中的个数是随问题改变的。用状态变量(i,s)表示从V0出发,经过S集合中所有点一次最后到达Vi。用最优指标函数fk(i,s)表示从V0出发,经过S集合中所有点一次最后到达Vi。决策变量Pk(i,s)表示从V0经K个中间城镇的S集合到Vi城镇的最短路线上邻接Vi的前一个城镇,则动态规划的顺序递推关系为:fk(i,s)minfk(j,S)djif0(i,空集)d1i(k1,2,.......c,i1,2...c)j属于SC<=10且C为整数根据上述的递推模型,我们只要提供一个输入就可以规划出最优的路线。5.2模型求解根据实际情况,每个旅游景点只能去一次,而且要求所有景点距离之和最小,即按照最短路径方式设计旅游路线。由此我们联想到货郎担问题,并采用图论相关知识和floyd算法求出通过所有景点路径之和的最小值,也即最短路径以解决问题一和问题二。把每个旅游景区景点看做途中的一个节点,各景区景点之间的公路看做途中对应节点间的边,相对应的行程距离看做对应边上的权,所给各景区景点间的交通路线网就转化为加权网络图G,遍游各个景区景点的最佳旅游路线问题就转化为在给定的加权网络图中寻找从给定出发点出发,行遍所有顶点至少一次且只有一次再回到定点,使得总权(路程)最小,此即TSP问题。对于本问题:G[,,NEW]E{(,)|,ijijNW},{(.)|,wijijN}N{0,1,,11}L5
首先把所给的地图、数据进行简化(删除不可能走的明显偏远路,对于很靠近旅游景区的景点,我们把它划分到一个景区,只考虑景点的最佳逗留时间的和),并对景区景点编号,如下:表2景点恐龙崂山长城乔家龙门黄山黄鹤兵马庐山普陀徐州园大院石窟楼俑山编号123456789100门票15090504012020050901802000由图论的结论,TSP问题可转化成最佳哈密尔顿回路的问题。因此可得到最佳旅游线路的近似算法。"步骤一,用Floyd算法求出图中任意两点之间的最短路,构建一个完备图G,点集仍为N,每条边(,)ij的权为点i和j在G中最短路的长。"步骤二,随机搜索图G的若干个H圈,或者找出它的任意一个初始的H圈。步骤三,用二边逐次修正法对步骤二中的H圈进行优化,从而得到近似的最佳H圈。步骤四,比较上述H圈,找出权值最小的一个,即为要求的最佳H圈的近似解。求解过程:首先将任意两景点间的距离用矩阵表示,如下:A=[04847128148814738318858606827924840119612971418957506655134458638071211960888988962154315771349139410168141297888081581315331225120013141544881141898881508781361124359316951568473957962813878011130625672714464831506154315331361111306256727144648856551577122512436606250102425210178601344134912005933876721024011021609682586139413141695964714252110207797923801016154415681298464101716097790]用Floyd算法求出图中任意两点之间的最短路,Mtalab源程序见附录1:运行结果:Columns1through11021106975843sum=6987根据结果得到最小的H圈如下图图16
由于要游览10个旅游景点,我们对所得到的最佳H圈继续进行修正,最终得到了最佳旅游路线,与上述路线相符,即0—2—1—10—6—9—7—5—8—4—3—0若时间无限制,要使旅行总费用最少,其他费用不变的情况下,则必须选最便宜的交通方式,这样才能使总费用尽可能的少,按照最小路径给出旅游路线。具体行程表如下:表3:根据模型综合考虑各种因素设计的行程表5月1日10:52——20:39乘坐K174/171从徐州到青岛(在青岛休息)5月2日08:00——14:00游览青岛崂山5月2日14:13——5月3日05:57乘坐列车K296/293至常州5月3日08:00——12:00游览恐龙园5月3日14:00——18:30乘坐列车K119/116至舟山(在舟山休息)5月4日08:00——14:00游览普陀山5月4日16:00-20:15乘坐列车K217/270至黄山(在黄山休息)5月5日08:00——15:00游览黄山5月5日18:29-5月6日03:27乘坐列车K308/305至九江(在九江休息)5月6日08:00——15:00游览庐山5月6日17:00-21:30乘坐列车K115/118至武汉(在武汉休息)5月7日08:00——10:00游览黄鹤楼5月7日13:00-21:00乘坐列车K337/224至洛阳(在洛阳休息)5月8日08:00——11:00游览龙门石窟5月9日01:18-06:29乘坐至列车K624/621至西安5月9日08:00——10:00游览秦始皇兵马俑5月9日10:15-13:55乘坐列车K128/125至祁县5月9日15:00——18:00游览乔家大院5月9日19:00——23:30乘坐列车K158/155至北京(在北京休息)5月11日08:00——11:00游览八达岭长城5月11日12:41-23:52乘坐列车1477返回徐州结束旅行总费用=乘车费用+门票费用+住宿费用+其他费用乘车费用:99+120+80+65+30+50+90+55+76+150+106=921(元)门票费用:150+90+50+40+120+200+50+90+180+200=1170(元)住宿费用:7*50=350(元)其他费用:10*60=600(元)总费用:21+1170+350+600=3041(元)问题二求解:若使旅行时间最少,必须减少交通时间和住宿时间。交通时间的较少可以通过乘飞机来实现,住宿时间的减少可以通过尽量在白天旅游,晚上赶路的方式实现。受floyd算法启发,将任意两个景点之间的时间看做权,即相邻两点的边长,得出11*11的时间矩阵,单位为分钟。7
c=[0484712814881473831885860682792484011961297141895750665513445863807121196088898896215431577134913941016814129788808158131533122512001314154488114189888150878136112435931695156847395796281387801113660387714464831506154315331361111306256727144648856551577122512436606250102425210178601344134912005933876721024011021609682586139413141695964714252110207797923801016154415681298464101716097790]利用floyd算法在所有可能的组合方式中求出唯一的一组方式,此方式使得行程时间最短,149小时,结果如下(已考虑转站问题):徐州-八达岭-祁县-洛阳-西安-武汉-九江-黄山-舟山-常州-青岛-徐州具体路线为:表4:根据模型综合考虑各种因素设计的行程表5月1日12:00-14:05从徐州乘坐航班JR2110航班至祁县5月1日15:00-18:00游览祁县乔家大院5月1日20:10-21:40乘航班KC1150至洛阳(在洛阳休息)5月2日08:00-11:00游览龙门石窟5月2日12:10-13:20乘坐航班KJ1250至西安5月2日14:00-16:00游览秦始皇兵马俑5月2日20:30-21:40乘坐航班CZ3890至武汉(在武汉休息)5月3日08:00-10:00游览黄鹤楼5月3日10:30-11:20乘坐航班C2360至九江5月3日12:00-18:00在庐山游览6h后住宿休息5月4日09:10-10:40乘坐航班KC2130至黄山5月4日11:00-18:00游览黄山7h后在黄山休息5月5日04:30-05:50乘坐C2118航班至舟山。5月5日08:00-14:00游览舟山5月5日18:10-19:25乘坐航班CZ2120)至常州(在常州休息)5月6日08:00-12:00游览恐龙园5月6日16:25-18:10乘坐航班CA1826至青岛(在青岛休息)5月7日08:00-12:00游览崂山5月7日15:20-16:45乘坐航班MV7432回到徐州结束全部旅程问题三求解:在旅行费用为2000元的限制条件下,要尽可能多的游览景区就必须减少交通费用以增加游览景点的费用。由此联想到“蚁群算法”[3](155-158)求最短路径问题。用”蚁群算法”求R(R=1,2,3,4,5,6,7,8,9)个景点行程闭合路线的最短距离和,每个R都对应一个总费用,则必存在唯一的一个最大R值使得总费用接近2000元(也可略高于2000元),此R值即最多景点数,MATLAB程序见附录2由此算法得出的不同R值闭合路径如下:8
图2R=6图3R=7图4R=8当R=7时,确定的旅游路线如下:表5:根据模型综合考虑各种因素设计的行程表5月1日10:52——20:39乘坐K174/171从徐州到青岛(在青岛休息)5月2日08:00——14:00游览青岛崂山5月2日14:13——5月3日05:57乘坐列车K296/293至常州5月3日08:00——12:00游览恐龙园5月3日14:44——5月4号00:27乘坐k421/k423次列车到黄山(在黄山休息)5月4日08:00——15:00游览黄山5月4日17:00——23:48乘坐k381/k378次列车到武汉(在武汉休息)5月5日08:00——10:00游览黄鹤楼5月5日10:36——20:26乘k1296/k1297次列车到洛阳(在洛阳休息)5月6日08:00——11:00游览龙门石窟9
5月6日11:36——19:55乘k1130/k1131次列车到祁县(在祁县休息)5月7日08:00——11:00游览乔家大院5月7日13:33——5月8日04:00乘坐2601/2604次列车到北京5月8日08:00——11:00游览八达岭5月8日11:39——21:21乘坐k45次列车到达徐州,结束全部旅程问题四求解:问题四可以在问题二的基础上求解,因为问题二中已求出旅游10个景点的最少时间为7天,现在旅游时间限制为5天,要使旅游景点的个数尽可能的多,可以出去交通和观光时间比较长的景点,如青岛市崂山、黄山市黄山、九江市庐山、舟山市普陀山等等。由于常州到青岛的时间最长,而且在青岛的观光时间为6h,所以优先考虑除去青岛这一点。即在舟山市普陀山游玩后直接乘车回到徐州,这样可以在5天时间内游览8个景点。具体路线行程为:表6:根据模型综合考虑各种因素设计的行程表5月1日12:00-14:05从徐州乘坐航班JR2110航班至祁县5月1日15:00-18:00游览祁县乔家大院5月1日20:10-21:40乘航班KC1150至洛阳(在洛阳休息)5月2日08:00-11:00游览龙门石窟5月2日12:10-13:20乘坐航班KJ1250至西安5月2日14:00-16:00游览秦始皇兵马俑5月2日20:30-21:40乘坐航班CZ3890至武汉(在武汉休息)5月3日08:00-10:00游览黄鹤楼5月3日10:30-11:20乘坐航班C2360至九江5月3日12:00-18:00在庐山游览6h后住宿休息5月4日09:10-10:40乘坐航班KC2130至黄山5月4日11:00-18:00游览黄山7h后在黄山休息5月5日04:30-05:50乘坐C2118航班至舟山5月5日08:00-14:00游览舟山市普陀山5月5日22:30-23:15乘坐航班MV9432经上海转航班到徐州结束全部旅行问题五求解:如果这位游客只有5天的时间和2000元的旅游费用,想尽可能多游览景点,是在时间和费用都受约束限制下的优化问题,故问题五可以看作是问题三和问题四的“双重约束”,即同时受到问题三和问题四的约束,则可以在问题三与问题四的求解结果基础上求解。问题三中交通工具选为火车,为了减少时间,部分距离近票价低的景点可以改乘飞机。问题四中交通工具选为飞机,为了减少费用,部分距离长票价高的景点可以改乘火车。另外要优先考虑景点门票费用低的景点以增加旅游景点的个数。时间t和交通工具费用p关系分析:对于火车,p小但t大;对于飞机,p大但t小。为了平衡,定义s=P*t,在两个景点之间分别考虑火车和飞机的s值,优先选择s值小的方式。综合各方面因素考虑,给出如下比较合理的旅游路线:表7:根据模型综合考虑各种因素设计的行程表5月1日08:20-14:40从徐州乘坐K321-318至北京5月1日15:00-18:00游览八达岭长城5月1日23:45-5月2日13:41乘坐列车2602/2603至祁县。10
5月2日14:00-17:00游览乔家大院5月2日20:29-5月3日07:20乘列车1095至西安5月3日08:00-10:00游览秦始皇兵马俑5月3日10:36-14:41乘坐1352/1353至洛阳5月3日15:00-18:00游览龙门石窟(在洛阳休息)5月4日00:30-09:26乘K8621/K8563至武汉5月4日10:00-12:00游览黄鹤楼5月4日12:43-13:50乘坐航班C302至常州5月4日14:00-18:00游览常州市恐龙园5月4日18:30-23:55乘列车K4021/4081至青岛(在青岛休息)5月5日08:00-14:00游览青岛市崂山5月5日16:15-5月6日01:25乘坐列车K208/K205回到徐州结束旅行总费用:190+50+(170+40)+(40+90)+(28+120)+(85+485)+(202+150)+50+(50+120+90)+60*5=2023即在五天内花费2023元可旅行8个景点,此路线合理可行§6模型的评价与改进6.1模型评价在具体问题的求解中,我们利用了floyd算法、蚁群算法、穷举法等数模常用方法,准确方便的求出最短路程,并根据最短路程设计最佳旅游路线,结果的可靠性、适应性、灵活性比较强,在现实生活中能得到很好的应用。本模型在设计两个景点之间的交通方式及是否住宿时,没有详细考虑转站、最佳住宿时间对模型的影响。6.2模型改进(1)因数据资料搜集的来自不同网站,可信度值得探究,准确性也有待商榷,而且没有对最终方案进行更为细致的讨论研究,这些方面有待改进。(2)本题的解决方案有些方面考虑过于理想化,在现实生活中变量更多具体实行起来可能会遇到别的困难。参考文献[1]栗雪娟,崔尚森,张柯.最佳旅游路线选择的神经网络方法[J].交通与计算机,2006,24(5):103-106.[2]朱德通《最优化模型与实验》同济大学出版社2003.4[3]李士勇《蚁群算法及其应用》哈尔滨工业大学出版社2004.9[4]火车网,http://www.huoche.com.cn/,2011/5/1.11
附录附录1a;%输入数据function[D,path]=floyd(a)n=size(a,1);D=a;path=zeros(n,n);fori=1:nforj=1:nifD(i,j)~=infpath(i,j)=j;endendendfork=1:nfori=1:nforj=1:nifD(i,k)+D(k,j)0flag=0;form=1:L-3forn=m+2:L-1ifa(c1(m),c1(n))+a(c1(m+1),c1(n+1))0flag=0;form=1:L-3forn=m+2:L-1ifa(c1(m),c1(n))+a(c1(m+1),c1(n+1))<...a(c1(m),c1(m+1))+a(c1(n),c1(n+1))flag=1;c1(m+1:n)=c1(n:-1:m+1);endendendendsum1=0;fori=1:L-1sum1=sum1+a(c1(i),c1(i+1));endifsum1q0fork=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)))^alpha*(eta(city_visited(end),city_remained(k)))^beta;position=find(probability==max(probability));to_visit=city_remained(position(1));endelsefork=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)))^alpha*(eta(city_visited(end),city_remained(k)))^beta;endprobability=probability/sum(probability);pcum=cumsum(probability);select=find(pcum>=rand);to_visit=city_remained(select(1));endtabu_list(i,j)=to_visit;%*******************************************************endendifNc>0tabu_list(1,:)=routh_best(Nc,:);%将上一代的最优路径(最优解)保留下来,保证上一代中的最适应个体的信息不会丢失end%记录本次循环的最佳路线total_length=zeros(m,1);%m只蚂蚁在本次循环中分别所走过的路径长度fori=1:mr=tabu_list(i,:);%取出第i只蚂蚁在本次循环中所走的路径forj=1:(n-1)15
total_length(i)=total_length(i)+D(r(j),r(j+1));%第i只蚂蚁本次循环中从起点城市到终点城市所走过的路径长度endtotal_length(i)=total_length(i)+D(r(1),r(n));%最终得到第i只蚂蚁在本次循环中所走过的路径长度endlength_best(Nc+1)=min(total_length);%把m只蚂蚁在本次循环中所走路径长度的最小值作为本次循环中最短路径的长度position=find(total_length==length_best(Nc+1));%找到最短路径的位置,即最短路径是第几只蚂蚁或哪几只蚂蚁走出来的routh_best(Nc+1,:)=tabu_list(position(1),:);%把第一个走出最短路径的蚂蚁在本次循环中所走的路径作为本次循环中的最优路径length_average(Nc+1)=mean(total_length);%计算本次循环中m只蚂蚁所走路径的平均长度Nc=Nc+1%更新信息素delta_pheromone=zeros(n,n);fori=1:mforj=1:(n-1)delta_pheromone(tabu_list(i,j),tabu_list(i,j+1))=delta_pheromone(tabu_list(i,j),tabu_list(i,j+1))+Q/total_length(i);%total_length(i)为第i只蚂蚁在本次循环中所走过的路径长度(蚁周系统区别于蚁密系统和蚁量系统的地方)enddelta_pheromone(tabu_list(i,n),tabu_list(i,1))=delta_pheromone(tabu_list(i,n),tabu_list(i,1))+Q/total_length(i);%至此把第i只蚂蚁在本次循环中在所有路径上释放的信息素已经累加上去end%至此把m只蚂蚁在本次循环中在所有路径上释放的信息素已经累加上去pheromone=(1-rho).*pheromone+delta_pheromone;%本次循环后所有路径上的信息素%禁忌表清零,准备下一次循环,蚂蚁在下一次循环中又可以自由地进行选择tabu_list=zeros(m,n);end%输出结果,绘制图形position=find(length_best==min(length_best));shortest_path=routh_best(position(1),:)shortest_length=length_best(position(1))%绘制最短路径figure(1)set(gcf,"Name","AntColonyOptimization——Figureofshortest_path","Color","r")N=length(shortest_path);scatter(C(:,1),C(:,2),50,"filled");16
holdonplot([C(shortest_path(1),1),C(shortest_path(N),1)],[C(shortest_path(1),2),C(shortest_path(N),2)])set(gca,"Color","g")holdonfori=2:Nplot([C(shortest_path(i-1),1),C(shortest_path(i),1)],[C(shortest_path(i-1),2),C(shortest_path(i),2)])holdonend%绘制每次循环最短路径长度和平均路径长度figure(2)set(gcf,"Name","AntColonyOptimization——Figureoflength_bestandlength_average","Color","r")plot(length_best,"r")set(gca,"Color","g")holdonplot(length_average,"k")17
您可能关注的文档
- 路线设计说明书.doc
- 《城市道路路线设计内容规范》20121129ys.pdf
- 高速公路改扩建工程路线设计探讨.doc
- 旅行社-象山旅游路线设计.ppt
- 关于公路路线设计的探讨.doc
- 公路路线设计规范2006_条文说明.pdf
- 公路路线设计规范.pdf
- 基于三维零件模型的工艺路线设计方法研究.pdf
- 公路路线设计中反超高问题分析.pdf
- 博物馆的游馆路线设计方案-论文.pdf
- 浅谈改扩建道路路线设计-论文.pdf
- 浅谈甘肃省成县~武都高速公路路线设计-论文.pdf
- 旅游公路路线设计理念及实践探讨.doc
- 数控加工工艺路线设计.pdf
- 有机合成化学与路线设计chapter2_图文.ppt.ppt
- 四级公路路线设计规范.doc
- 路线设计文件.doc