论文:An Empirical Study on Evolutionary Algorithms for Traveling Salesman Problem 2019
这篇文章讨论了Evolutionary computation (EC) 进化算法在组合优化问题中的应用,例如TSP。EC算法包括genetic algorithm (GA), ant colony optimization (ACO) , particle swarm optimization (PSO) , estimation of distribution algorithm (EDA)等,在组合优化中发挥了很好的作用。一些算法的设计是用于解决discrete problems 离散问题的,如ACO和GA,有些算法是用于解决连续空间中的问题,如PSO,不过PSO被改进后也可可以处理组合优化问题(COP)了,如set-based PSO(S-PSO)。而EDA既可以处理离散问题也可以处理连续问题,取决于建立的模型。
旅行商问题 Traveling Salesman Problem (TSP)是已经被证明的NP-hard问题。
1)GA for TSP
已经发现GA在解决TSP的组合优化问题具有很好的效果。而交叉crossover和变异mutation在解决TSP时非常重要,常用的交叉方法有:
- Edge recombination crossover (ERX) operator 1991
- sequential constructive crossover (SCX) 2010
- partially mapped crossover operator (PMX) 1985
- order crossover operator (OX) 1985
- cycle crossover operator (CX) 1987
- inver-over algorithm 1998
- CX2 2017
这篇文章对11个对称的TSP进行了测试,对比了vanilla GA, CX2 和 inver-over算法的性能,在原始参数的设置下,所有TSP问题中,inver-over算法的结果更好。然后验证了inver-over算法不同参数设置对实验的影响。a)population size N,种群数量在大于100时结果更好,在200-250时最佳,但并不是越大越好,因为更大的种群导致更大的搜索空间,会让收敛更慢。b)inver-over operator p,表示以概率p进行变异操作,1-p进行交叉操作,当变异率小于0.1时可以防止陷入局部最优,同时也不会降低收敛速度,更大的变异率会使得算法具有多样性。实验中p从0.01-0.3,每次变化0.01,发现当p小于0.1时效果最好。
2)ACO for TSP
ACO应用于TSP问题最好的算法是ACS,实验测试了不同ants数量和distribution of pheromones accumulated的影响。参数β用于确定pheromones与distance之间的相对重要性, decay parameter α(0<Į<1)用于更新pheromone,随机参数 q0 (0<q0<1)作为greedy parameter,在选择下一个城市时,以q0概率exploration和1-p的概率 exploration. 这个参数可以防止算法陷入局部最优。根据原文的设置α=0.1,β=2,q0=0.9.
在GA中种群数量大的效果也好,但是ACO中蚂蚁数量多将导致运行时间增加效果下降,一般当蚂蚁数量在5-30时,结果较好。小数据集20是不错的选择,大的数据集,蚂蚁数量设置为10有好的结果。
3)PSO for TSP
S-PSO主要用于解决离散的组合优化问题,PSO中的positions和velocities被一组probabilities表示,文中对比了集中提出的S-PSO方法,如original PSO (S-PSO), global version PSO (S-GPSO) and comprehensive learning PSO (S-CLPSO)。
实验参数设置:c=c1=c2=2, rg=7,N=40,权重系数从0.9-0.4递减,20000次迭代
S-PSO由于没有有效的local search 效果最差
GPSO可以平衡global和local search,效果好一些
CLPSO效果最好,因为使用了historical best information更新速度,同时在exploration中采用锦标赛选择,可以避免过早收敛并保持良好的多样性。
对CLPSO参数的实验,设置particles数量20-300之间,当大于100时结果变得稳定,实验取为75.对于rg参数(refresh gap),决定了candidate set被重新计算的频率。实验中rg设置为2-20步长为2,结果表明rg对结果影响不大,CLPSO取原始取值rg=7.关于参数c,c是exploration and exploitation的平衡,c的值小于1时结果不好,大于1.5时没有改变,因此可以取为1-1.5.当数据集比较大时,可以取c=1.
4)三种算法的比较
- 初始化:有两种Random initialization 和 greedy initialization,greedy initialization是对每一个个体随机选一个城市然后选择离这个城市最近的那个作为下一个城市。对三种算法分别采用两种初始化方法比较收敛速度,greedy initialization在开始时可以获得更好的解,但是Random initialization收敛更。inver-over在greedy initialization中最终没有达到最优。CLPSO在两种初始化方法方面没有受到影响。
- 候选集Candidate set:对ACS 和S-CLPSO分别测试有无候选集的情况,实验表明,有候选集的算法收敛的更快,结果也更好。
- 局部搜索Local search:Local search是一种改变适应度值的策略而不是构造路径的策略,它通过交换路径中的边而减少路径的长度。常用的三种Local search方法有:2-opt, 3-opt和Lin-Kernighan,他们分别交换2个,3个和可变的边。实验在候选集上应用了2-opt, 3-opt方法。对比使用和不使用局部搜索方法的S-CLPSO和ACS,使用局部搜索方法可以获得更好的适应度值,但是ACS并不稳定。