基于遗传算法解决TSP问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于遗传算法解决TSP问题

摘要

题目要求给出环游全国全部省会的最短路径方案,是传统的TSP问题,本文将图表数据数字化后,将其转变成为线性规划问题,进而采取遗传算法用Matlab求解出理论上的最短路径与路线图。通过第一问求出的路线顺序结合实际情况求解出实际情况下的最短路径与最短时间。

针对第一问,首先建立基本TSP模型,求出其线性规划方程组,用Matlab 对地图做出基本处理,求出其像素坐标的矩阵。将省会城市初始化为种群数据,用遗传算法求解出模型最优解,即最短路径大小与旅游城市顺序。

针对第二问,由于遗传算法求出的是近似最优解,以及实际道路情况不可能是直线距离,所以理论数据与实际有一定差别。将旅行顺序求解出后,需要根据实际道路情况重新求解出最短路径大小,并根据题目所给条件求解出最短时间。根据实际情况,求得最后的最短路径长度为20402.9公里,时间为45天。

题目中给出城市转化为图集,一共有33个顶点,数据较大,用Dijkstra 算法和Floyd算法虽然答案可能更精确,但数据处理量大,时间复杂度高。采用遗传算法可以得到近似最优解,并且精简了时间复杂度。

关键词:最短路径 TSP问题线性规划遗传算法

一、问题重述

如果从杭州出发,要想开车走遍全国所有的省会城市,而且在到了每个省会城市以后都必须住一晚,第二天早上才能出发,安全起见每天开车时间最多在8小时左右,车速视实际路况而定,一般高速公路可以取平均车速100公里/小时左右,不是高速公路平均车速取60公里/小时左右,从杭州出发要走遍所有省会城市以后回到杭州,开车里程最少需要多少公里?最少需要多少时间?(暂不考虑台湾省)

二、问题分析

题目要求求出最短路径与时间是典型的TSP问题,即要用最短的总路径走遍所有城市,此处需要设立一个二元组))

E

V,并且求出一个点的邻接矩阵。

G

(

(

),

(G

根据经典的TSP模型,得出一般的线性规划方程组。解TSP模型的一般算法有Dijkstra算法和Floyd算法,由于TSP问题是典型的NP难题,其可能路径数目与城市总数目n是呈指数型增长,并不适合用以上两种算法。另外常用来解决TSP问题的退火算法受概率和退火过程影响,可能运算起来十分缓慢。为了精简时间复杂度,故选取了遗传算法将图形数据初始为种群数据进行计算。并且随着

种群规模的增大,其结果越逼近最优值。

对于第二问,最短时间的计算,按照第一问求出的最优路线行走,并且结合实际高速公路分布与走向来计算最短路径的真实值,并且统计出高速公路与普通公路的实际数值。题目中给出了车辆在高速公路上行车速度为100km/h ,普通公路上为60km/h ,统计出实际数值后,计算出总行车时间即可得出最短时间。

三、基本假设

1.题目给出的速度符合实际。

2.无论第一天何时到达,第二天均会离开该城市。

3.每天开车时间为8小时左右,对于9到10小时内可以开到的城市均算为8小时左右,不需要中途休息。

4.开车行程在10小时以后的,每天开车八小时即停下并有地方休息。

5.第一问用TSP 模型求解时,所有城市之间全部算为直线相连。

四、符号说明

Z : 走遍所有省会城市的最短路径长度 C : 路网有向图矩阵;

ij c :从节点i 到节点j 的弧,ij c ∈C ; ij d :路段ij c 的长度;

M : 种群个数

N : 染色基因个数(即城市个数) c : 迭代次数 Pc : 交叉概率 Pm : 变异概率 len : 某组解的总距离 minlen :该次迭代中的最短距离 maxlen :该次迭代中的最长距离 m : 适应度归一化淘汰加速指数

五、模型建立与求解

5.1线性规划的约束条件与目标函数:

已设ij d 为两城市之间的距离,根据TSP 问题的一般约束条件可知,记为赋权图G=(V,E),V 为顶点集,E 为边集,各顶点间的距离ij d 已知。设

⎩⎨

⎧=其他,

在回路路径上若,

.......1),(.......0j i x ij

目标函数与约束条件:

ij n

i n

j ij x d mixZ ∑∑===11

{}⎪⎪⎪⎪

⎪⎪⎪⎪⎨⎧∈-≤≤∈∀-≤∈=∈=∑∑∑∑∈∈==1,012,,1,1,1.11ij S i S

j ij n

i ij n

j ij x n S V S S x V j x V i x t s

5.2遗传算法前的基本处理

将全国城市的经纬度制成表格,用excel 将其制成散点图,方便接下来的数

长春125.35 43.88 南昌115.89 28.68 澳门113.33 22.13

用基于Java的经纬度坐标与地图容器像素坐标转换器,求出33个省会城市的像

素坐标如下:

1.西藏

2.云南

3.四川

4.青海

5.宁夏

6.甘肃

7.内蒙古8.黑龙江9.吉林10.辽宁11.北京12 天津13.河

北14.山东15.河南16.山西17. 陕西18.安徽19.江苏

20.上海21.浙江22.江西23.湖北24.湖南25,贵州26.

广西27.广东28.福建29.海南30.澳门31.香港32.重

庆33.新疆

像素坐标如下:

Columns 1 through 11

100 187 201 187 221 202 258 352 346 336 290

211 265 214 158 142 165 121 66 85 106 127 Columns 12 through 22

297 278 296 274 265 239 302 316 334 325 293

135 147 158 177 148 182 203 199 206 215 233 Columns 23 through 33

280 271 221 233 275 322 250 277 286 220 104

216 238 253 287 285 254 315 293 290 226 77

5.3遗传算法求解最优值

1. 程序初始化

程序首先读入33 个省会城市坐标,计算任意两个城市的距离;

设置遗传算法控制参数。

相关文档
最新文档