- 17
- 0
- 约2.93千字
- 约 7页
- 2018-08-13 发布于福建
- 举报
一种求解TSP问题粒子群算法设计
一种求解TSP问题的粒子群算法设计
[摘要]旅行商问题(Traveling Salesman Problem,简称TSP)是求一次遍访指定城市并返回出发城市的最短旅行路线的问题,它是图论中一个经典的NP完全问题,用电子计算机需要指数级的时间才能得到解决。尝试用粒子群算法来求解旅行商问题,结合遗传算法的思想,并且给出交叉和变异操作的设计。该算法符合组合优化问题的特点,在求解旅行商问题上有较高的搜索效率。
[关键词]旅行商问题 TSP 粒子群算法 交叉 变异
中图分类号:F590文献标识码:A文章编号:1671-7597 (2008) 0110019-01
从目前各种求解TSP的方法来看,小规模的TSP例子很适合于用全局优化技术求解,但是要考虑城市规模比较大的TSP实例则需要采用启发式方法。对于复杂优化问题,单一机制的优化算法很难实现全局优化,且效率较低。多种优化机制和邻域搜索结构相混合,是能较大程度提高全局优化度的有力途径,并可一定程度上放松对单一算法参数选择的苛刻性。所以混合优化策略会是一种趋势。
一、求解TSP的粒子群算法
(一)初始化
一般都是随机生成规模为N的初始路径 。初始路径中的城市是按访问的顺序排列的,例如:对于一个10个城市的TSP:3-2-5-4-7-1-6-9-8-10,表示从城市3出发依次经过城市2, 5, 4, 7, 1, 6, 9, 8,10然后返回城市3的一条路径。并且这种表达方式满足TSP问题的约束条件。保证了每个城市经过且只经过一次,并且保证任何一个城市子集中不形成回路。
(二)交叉操作
交叉的本质就是从种群中选择父代以生成新的母体群。交叉的方法很多,我在算法中采用了以下策略:
1.交叉策略A:在第2个串中随机选择一个交叉区域;将old2的交叉区域加到old1后面,删除old1中已在old2交叉区中出现过的城市。
2.交叉策略B:在第2个串中随机选择一个交叉区域;将old2的交叉区域加到old1对应的位置,删除old1中已在old2的交叉区中出现过的城市。
3.交叉策略C:在第2个串中随机选择一个交叉区域;将old2的交叉区域加到old1的随机位置,删除old1中在old2的交叉区中已出现的城市。
4.交叉策略D:在第2个串中随机选择一个交叉区域,如交叉区域为:6,5,4,3;将old2的交叉区域加到old1的城市6的位置,删除old1中已在old2的交叉区中出现过的城市。
(三)变异操作
变异的目的是防止种群中的解跑到局部极值去。变异是对子代的随机的改变。我在算法中采用了以下变异策略:
1.变异策略A:在第1-n个访问的城市中随机地选取第J1次和第J2次访问的城市,在路径C0中交换第J1次和第J2次访问的城市,其余不变,此时的路径为C1。
2.变异策略B:在第1-n个访问的城市中随机地选取第J1次访问的城市,在路径C0中交换第J1次和第J1+1次访问的城市,其余不变,此时的路径为C1。
3.变异策略C:也称逆转策略,在第1-n个访问的城市中随机地选取第J1次和第J2次访问的城市,在路径C0中第J1次和第J2次访问的城市之间的子路径以反方向插入,其余不变,此时的路径为C1。
4.变异策略D:在第1-n个访问的城市中随机地选取第J1次和第J2次访问的城市,假设J1J2,在路径C0中将第J1次访问的城市安排到第J2次访问的城市之后,其余不变,此时的路径为C1。
5.变异策略E:在第1-n个访问的城市中随机地选取第J1次访问的城市,选取离J1距离最近的城市J2,在路径中将城市J2安排到城市J1之后,其余不变。
6.变异策略F:计算路径中相邻城市之间距离最大的两个城市J1和J2,然后选取选取离J1距离最近的城市J3,在路径中将城市J3安排到城市J1和J2之间,其余不变。
二、算法步骤
1.初始化,设定粒子数n,设定迭代次数m,随机排列城市顺序产生n条初始路径。
2.根据当前位置计算适应值ltsp0,设置当前适应值为个体极值plbest,当前位置为个体极值位置pcbest,根据各个粒子的个体极值找出全局极值glbest和全局极值位置gcbest。
while(迭代次数规定迭代次数m)do
For j=1:n
3.第j个粒子的路径C(j)与个体极值作交叉操作,产生新的路径C’(j),若新的路径长度变短,则保存结果。C’(j)与全局极值作交叉操作,产生新的路径C”(j), 若新的路径长度变短,则保存结果。C”(j)变异得到新的位置C”’(j),若新的路径长度变短,则保存结果。最后产生的路径为C1(j),若△E
原创力文档

文档评论(0)