遗传算法求解TSP问题.docx
《遗传算法求解TSP问题.docx》由会员分享,可在线阅读,更多相关《遗传算法求解TSP问题.docx(16页珍藏版)》请在冰豆网上搜索。
遗传算法求解TSP问题
实验六遗传算法求解TSP问题
一、实验目的
熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。
二、实验内容
1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。
2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。
4、上交源代码。
三、遗传算法求解TSP问题的流程图
四、遗传算法求解不同规模的TSP问题的算法性能
(1)遗传算法执行方式说明:
适应度值计算方法:
当前路线的路径长度
个体选择概率分配万法:
适应度比例万法选择个体方法:
轮盘赌选择
交叉类型:
PMX交叉
变异类型:
两点互换变异
(2)实验模拟结果:
城市个数
时间(ms)
5
16925:
10
16630
15
18833
20「
22596:
25
24159
30
30289
35「
35239:
40
38608
45
40032
50
437571
55
47746
60
58143
65
59942
70
64361
75
71417
O
B
10T52025303540<5505fi6065?
075SJ
坡市勒蚤
7
G5J43
I叵盘豈瑕财
图1-1
(3)分析
由图1-1可知,遗传算法执行时间随着TSP问题规模的增大而增大,并且大致为线性增长。
五、不同参数下的计算结果对比
(1)种群规模对算法结果的影响
实验次数:
10最大迭代步数:
100
交叉概率:
0.85
变异概率:
0.15
表1-1
种群规模
适应度值
最优路径
10
25.264
4-5-8-7-6-3-1-0-9-2
20
26.3428
2-9-1-0-3-6-7-5-8-4
30
25.1652
1-3-6-7-5-8-4-2-9-0
50
25.1652
0-1-3-6-7-5-8-4-2-9
80
25.1652
9-0-1-3-6-7-5-8-4-2
100
25.1652
1-0-9-2-4-8-5-7-6-31
150
25.1652
5-8-4-2-9-0-1-3-6-7
200
25.1652
1-3-6-7-5-8-4-2-9-0
250
25.1652
3-1-0-9-2-4-8-5-7-6H
300
25.1652
5-8-4-2-9-0-1-3-6-7
如表1-1所示,显然最短路径为25.1652m最优路径为1-0-9-1-3-6-7-5-8-4-2或
3-1-0-9-248-5-7-6,注意到这是一圈,顺时针或者逆时针都可以。
当种群规模为10,20时,并没有找到最优解。
(2)交叉概率对算法结果的影响实验次数:
15
种群规模:
25
最大迭代步数:
100
变异概率:
0.15
实验结果:
表1-2
交叉概率
最好适应度
最差适应度
平均适应度
最优解
运行时间
0.001
28.0447
36.6567
32.6002
9-2-6-0-5-4-8-7-3-1
310
0.01
27.0935
34.9943
32.1495
7-8-3-1-9-2-6-0-5-4
260
0.1
28.0447
35.3033
31.9372
7-3-1-9-2-6-0-5-4-8
300
0.15
28.0447
34.1175
31.2183
0-5-4-8-7-3-1-9-2-6
270
0.2
28.7108
33.9512
30.9035
3-1-9-2-6-5-0-4-7-8
280
0.25
28.0447
35.1623
30.7456
1-3-7-8-4-5-0-6-2-9
260
0.3
27.0935
31.9941
29.9428:
8-3-1-9-2-6-0-5-4-7
290
0.35
27.0935
32.8085
30.9945
9-1-3-8-7-4-5-0-6-2
270
0.4
27.0935
32.5313
30.1534
1-3-8-7-4-5-0-6-2-9
279
0.45
27.0935
33.2014
30.1757
8-3-1-9-2-6-0-5-4-7
456
0.5
28.0934
33.6307
30.9026:
5-0-2-6-9-1-3-8-7-4
663
0.55
27.0935
33.5233
29.1304
1-9-2-6-0-5-4-7-8-3
520
0.6
27.0935
33.2512
30.7836
3-1-9-2-6-0-5-4-7-8
546
0.65
28.0447
33.7003
30.9371
5-4-8-7-3-1-9-2-6-0
596
0.7
27.0935
32.0927
29.9502
9-1-3-8-7-4-5-0-6-2
571
0.75
28.0447
32.4488
30.3699
0-5-4-8-7-3-1-9-2-6
559
0.8
27.0935
32.1551
29.9382
7-4-5-0-6-2-9-1-3-8
358:
0.85
27.0935
34.5399
30.3594
5-0-6-2-9-1-3-8-7-4
360
0.9
27.0935
32.6273
30.69
6-0-5-4-7-8-3-1-9-2
375
0.95
27.0935
32.4672
29.919
6-2-9-1-3-8-7-4-5-0
476
(注:
红色表示非最优解)
在该情况下,交叉概率过低将使搜索陷入迟钝状态,得不到最优解。
(3)变异概率对算法结果的影响实验次数:
10
种群规模:
25
最大迭代步数:
100
交叉概率:
0.85
实验结果:
表1-3
变异概率
最好适应度
最差适应度
平均适应度
最优解
运行时间
0.001
29.4717
34.732
32.4911
0-6-2-1-9-3-8-7-4-5
245
0.01
29.0446
34.6591
32.3714
8-4-5-0-2-6-9-1-3-7
274
0.1
28.0934
34.011
30.9417
5-0-2-6-9-1-3-8-7-4
250
0.15
27.0935
32.093
30.2568
6-0-5-4-7-8-3-1-9-2
246
0.2
27.0935
32.2349
30.3144
8-7-4-5-0-6-2-9-1-3
282
0.25
27.0935
32.718
30.1572
4-5-0-6-2-9-1-3-8-7
245
0.3
27.0935
32.4488
30.2854
0-5-4-7-8-3-1-9-2-6
252
0.35
27.0935
33.3167
30.7748
1-3-8-7-4-5-0-6-2-9
266
0.4
29.0446
34.3705
31.3041
2-0-5-4-8-7-3-1-9-6
362
0.45
27.0935
31.374
29.6816
2-6-0-5-4-7-8-3-1-9
438
0.5
27.0935
32.3752
30.2211
2-9-1-3-8-7-4-5-0-6
431
0.55
27.0935
33.3819
30.6623
1-3-8-7-4-5-0-6-2-9
492
0.6
28.0934
33.2512
30.36
1-3-8-7-4-5-0-2-6-9
417
0.65
27.0935
32.7491
30.0201
3-1-9-2-6-0-5-4-7-8
434
0.7
28.7108
32.4238
30.785
1-3-8-7-4-0-5-6-2-9
432
0.75
27.0935
31.8928
30.2451
1-9-2-6-0-5-4-7-8-3
475
0.8
28.0934
31.6135
30.3471
9-1-3-8-7-4-5-0-2-6
327
0.85
29.662
33.2392
31.1585
2-9-1-3-7-8-4-0-5-6
314
0.9
28.0447
32.0387
30.4152
0-5-4-8-7-3-1-9-2-6
396
0.95
28.0447
31.3036
30.0067
9-1-3-7-8-4-5-0-6-2
436
又表1-3可知,当变异概率过大或过低都将导致无法得到最优解。
注:
(2)(3)的实验数据与
(1)的实验数据不同,详见附录。
六、不同变异策略和个体选择概率分配策略对算法结果的影响
(1)两点互换变异与插入变异的比较:
试验次数(CASNUM):
10
城市数(POINTCNT):
10
种群规模(POPSIZE):
100
最大迭代步数(GENERATIONS):
100
交叉概率(PC):
0.85
变异概率(PM):
0.15
选择个体方法:
轮盘赌选择
交叉类型:
PMX交叉
个体选择概率分配方法:
适应度比例方法
a.变异类型:
两点互换变异
表1-4两点互换变异程序结果
骨口.序号
最好适应度
最差适应度
平均适应度
最优解
运行时间
1
28.0934
30.4229
29.0891
6-2-0-5-4-7-8-3-1-9
1199
2
27.0935
31.1417
28.9841
4-5-0-6-2-9-1-3-8-7
1678
3
27.0935
30.4228
29.0604
0-5-4-7-8-3-1-9-2-6
1940
4
27.0935
30.3703
28.8787
1-3-8-7-4-5-0-6-2-9
1756
5
27.0935
31.0619
29.0755
3-1-9-2-6-0-5-4-7-8
1885
6
27.0935
31.1589
29.3942
2-6-0-5-4-7-8-3-1-9
1936
7
28.0447
31.0619
29.7648
6-2-9-1-3-7-8-4-5-0
1772
8
29.0446
31.3475
29.8415
4-5-0-2-6-9-1-3-7-8
1980
9
27.0935
30.6143
29.059
0-6-2-9-1-3-8-7-4-5
1940
10
27.0935
30.5585
29.0811
9-2-6-0-5-4-7-8-3-1
1872
11
27.0935
31.0171
29.4264
0-5-4-7-8-3-1-9-2-6
1517
12
27.0935
31.3036
29.2414
1-9-2-6-0-5-4-7-8-3
1541
13
27.0935
32.0255
29.0789
0-6-2-9-1-3-8-7-4-5
1517
14
P27.0935
31.516
P28.8906
0-6-2-9-1-3-8-7-4-5
1345
15
27.0935
30.4228
29.0226
6-0-5-4-7-8-3-1-9-2
1377
16
27.0935
30.4081
28.9081
0-6-2-9-1-3-8-7-4-5
1853
17
27.0935
30.4081
29.3316
7-8-3-1-9-2-6-0-5-4
1522
18
27.0935
30.0203
28.5243
1-3-8-7-4-5-0-6-2-9
1601
19
28.0447
31.1404
29.567
2-9-1-3-7-8-4-5-0-6
1609
20
27.0935
31.1417
29.5359
7-4-5-0-6-2-9-1-3-8
1311
平均值
27.3361
30.8782
29.1877
1657
b.变异类型:
插入变异
表1-5插入变异程序结果
骨口.序号
最好适应度
最差适应度
平均适应度
最优解
运行时间
1
27.0935
31.4753
28.8453
2-6-0-5-4-7-8-3-1-9
1388
2
27.0935
29.662
28.9168
5-0-6-2-9-1-3-8-7-4
1355
3
27.0935
29.6631
28.902
1-9-2-6-0-5-4-7-8-3
1637
4
28.0447
30.5241
29.5119
4-5-0-6-2-9-1-3-7-8
1164
5
27.0935
31.0575
29.4682
2-6-0-5-4-7-8-3-1-9
1245
6
27.0935
29.662
28.5546
2-6-0-5-4-7-8-3-1-9
1222
7
28.0447
30.8205
29.748
3-1-9-2-6-0-5-4-8-7
1148
8
27.0935
30.5241
29.3907
1-9-2-6-0-5-4-7-8-3
1742
9
27.0935
30.423
:
28.6878
0-6-2-9-1-3-8-7-4-5
2064
10
27.0935
30.4081
28.72
5-0-6-2-9-1-3-8-7-4
1518
11
27.0935
31.374
29.3282
4-5-0-6-2-9-1-3-8-7
1240
12
27.0935
30.523
28.5544
1-3-8-7-4-5-0-6-2-9
1204
13
27.0935
30.8205
29.0508
0-6-2-9-1-3-8-7-4-5
1734
14
27.0935
31.1177
29.5905
0-5-4-7-8-3-1-9-2-6
1532
15
27.0935
30.523
29.1904
4-5-0-6-2-9-1-3-8-7
1483
16
27.0935
30.4081
28.8061
5-0-6-2-9-1-3-8-7-4
1282
17
27.0935
31.7639
29.4591
6-0-5-4-7-8-3-1-9-2
1485
18
27.0935
31.1589
29.1614
4-5-0-6-2-9-1-3-8-7
1601
19
27.0935
30.4081
28.5974
2-6-0-5-4-7-8-3-1-9
1507
20
27.0935
[30.6143
[28.8036
3-1-9-2-6-0-5-4-7-8
1234
平均值
27.18862
30.6465
29.0643
1439
分析:
两点互换变异20次模拟中,4次得到非最优解;而插入变异只有2次;插入变异的最好适应度平均值比两点互换变异小0.14755,最差适应度平均值和总的
适应度平均值都比两点互换下,并且在Release下,运行时间前者比后者快
218.3ms。
可见在该条件下(交叉概率,变异概率,种群规模等),插入变异比两点互换变异的算法效果要好。
(2)个体选择分配策略
试验次数(CASNUM):
10
城市数(POINTCNT):
10
种群规模(POPSIZE):
100
最大迭代步数(GENERATIONS):
100
交叉概率(PC):
0.85
变异概率(PM):
0.15
选择个体方法:
轮盘赌选择
交叉类型:
PMX交叉
变异类型:
两点互换变异
a.个体选择概率分配方法:
适应度比例方法
同表1-4
b.个体选择概率分配方法:
非线性排序方式
表1-6非线性排序方式程序结果
骨口.序号
最好适应度
最差适应度
平均适应度
最优解
运行时间
1
27.0935
32.1721
30.0904
1-9-2-6-0-5-4-7-8-3
824
2
28.0447
31.297
29.9979
4-5-0-6-2-9-1-3-7-8
865
3
28.0934
32.1683
30.5601
2-0-5-4-7-8-3-1-9-6
895
4
27.0935
32.0973
30.3472
3-1-9-2-6-0-5-4-7-8
1067
5
27.0935
31.516
29.8531
4-5-0-6-2-9-1-3-8-7
887
6
27.0935
31.408
29.4637
5-0-6-2-9-1-3-8-7-4
727
7
27.0935
31.3742
29.9476
3-1-9-2-6-0-5-4-7-8
651
8
29.5231
31.8009
30.5543
0-5-4-7-8-1-3-9-2-6
901
9
27.0935
32.7147
30.391
0-5-4-7-8-3-1-9-2-6
749
10
29.5231
31.5688
30.2385
9-3-1-8-7-4-5-0-6-2
840
11
28.0447
31.7639
30.2617
3-7-8-4-5-0-6-2-9-1
1044
12
28.0447
31.6308
30.3267
1-3-7-8-4-5-0-6-2-9
732
13
27.0935
31.5688
29.4332
0-5-4-7-8-3-1-9-2-6
737
14
28.0934
31.1576
29.9646
4-5-0-2-6-9-1-3-8-7
672
15
28.0447
31.6626
29.7761
5-0-6-2-9-1-3-7-8-4
823
16
28.0934
31.5591
30.3473
2-0-5-4-7-8-3-1-9-6
732
17
27.0935
31.618
29.5988
7-8-3-1-9-2-6-0-5-4
697
18
27.0935
32.718
29.7033
1-3-8-7-4-5-0-6-2-9
672
19
28.0934
32.6801
30.2011
3-1-9-6-2-0-5-4-7-8
756
20:
28.7108
31.374
30.1589
4-0-5-6-2-9-1-3-8-7
1031
平均值
27.807545
31.79251
30.060775
815.1
分析:
个体选择概率分配方式采用非线性排序方式时,程序运行结果非常糟糕。
20
次模拟中竟然有11次无法找到最优解。
运行时间也很慢。
可见在该条件下(交叉概率,变异概率,种群规模等),个体选择概率分配方式不宜采用非线性排序方式,简单的适应度比例方法的效果明显更好。
七、实验心得与体会
通过本实验,更加深入体会了参数设置对算法结果的影响。
同一个算法,参数值不同,获得的结果可能会完全不同。
遗传算法是一种智能优化算法,它能较好的近似求解TSP问题,在问题规模比较大的时候,遗传算法的优势就明显体现出来,当然不能完全保证能得到最优解。
遗传算法的实现有些关键点,一是串的编码方式,本质就是冋题编码,串长度及编码形式对算法收敛影响极大;二是适应函数的确定,这是选择的基础,应具体问题具体分析,没有大一统的方法;三是自身参数的设定,其中重要的是种群规模,最大迭代次数,交叉概率和变异概率,通过实验我们可以看到种群规模、最大迭代次数对问题求解的精度有很大影响,交叉概率和变异概率的设定对问题的收敛速度和求解精度也都有极大的影响,但在不同条件下,这种影响表现的程度有很大的不同。
具体参数的设定应根据具体的领域问题。
八:
附录:
种群规模对算法的影响实验数据:
x
o
1.1
3.5
3
7
8
4
4.5
9
2
y
1.1
3
2
4
5.1
8
4
4.5
9
2
变异概率与交叉概率对算法的影响:
x
9
1.1
3.5
3.5
7
8
4
4.5
3
2
y
1.1
3
1
4
5.1
3
1
8.5
9
1