TSP
1.1问题描述
给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起 始城市的最短回路。这里给定 10 个城市和两两之间的距离。如图 2.1 所示。
1.2 粒子群算法求解
1.2.1 求解思路
粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解, 通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。
在 TSP 问题中,我们将每一条访问城市的顺序编码为一个个体,每个种群有 n 个个体,即有 n 种访问顺序,同时,每个个体又有 9 个染色体,即[2,10]的随 机排列(城市 1 作为起始和终止城市,不进行粒子操作),代表访问城市的顺序。 通过每一代的演化,对粒子群进行位置、速度更新操作,选择合适个体(最优的 顺序)。
(1)编码:位置(巡回顺序):符号编码。速度编码:定义为交换子序列。 单个交换子 si ={n,m}对个体的第 n 个和第 m 个元素进行交换,则速度表示为 交换子序列 ss = {s1,s2…sm}由 m 个交换子组成,同时交换子序列有顺序, 从第一个交换子操作。
(2)适应度:为了能够让适应度高的个体保存下来,定义适应度为:其中 distance 为每个个体(路径)的距离。显然,如果距离最短,则适应 度最高,更利于遗传给后代。
(3)速度更新:
为速度,
、
为学习因子,
、
为个体最优位置和全局最优位置,
为当前位置,
、
为随机数。
定义:
[1] c*ss 定义为取前 c(c 为小数)个交换子构成新的交换子序列。
[2](p-x)定义为两个元素之间的交换子。
[3] 交换子和交换子的“+”定义为将交换子合并。
(4)位置更新: ,其中
为速度,
为位置。序列和交换子 的“+”定义为对序列进行交换子操作。
1.2.2 流程图
1.3 实验结果
1.4 结果分析
粒子群算法同遗传算法一样,都是不稳定的,每次运行的结果都会不一致。 但是,每次运行的结果不会相差很大,最短距离都在 40 左右,以上仅仅给出了 三次结果。 粒子群算法在计算最优解会出现陷入局部最优的情况,但是它的运行效率 高,在实际的应用中有很好的效果。
1.5 源码