TSP

1.1问题描述

    给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起 始城市的最短回路。这里给定 10 个城市和两两之间的距离。如图 2.1 所示。

pso粒子群算法 Python举例 pso粒子群优化算法例题_算法

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)适应度:为了能够让适应度高的个体保存下来,定义适应度为:pso粒子群算法 Python举例 pso粒子群优化算法例题_pso粒子群算法 Python举例_02其中 distance 为每个个体(路径)的距离。显然,如果距离最短,则适应 度最高,更利于遗传给后代。

(3)速度更新:

pso粒子群算法 Python举例 pso粒子群优化算法例题_matlab_03

pso粒子群算法 Python举例 pso粒子群优化算法例题_pso粒子群算法 Python举例_04 为速度,pso粒子群算法 Python举例 pso粒子群优化算法例题_pso粒子群算法 Python举例_05pso粒子群算法 Python举例 pso粒子群优化算法例题_matlab_06为学习因子,pso粒子群算法 Python举例 pso粒子群优化算法例题_子序列_07pso粒子群算法 Python举例 pso粒子群优化算法例题_子序列_08为个体最优位置和全局最优位置,pso粒子群算法 Python举例 pso粒子群优化算法例题_算法_09 为当前位置,pso粒子群算法 Python举例 pso粒子群优化算法例题_子序列_10pso粒子群算法 Python举例 pso粒子群优化算法例题_matlab_11为随机数。

  定义:
  [1] c*ss 定义为取前 c(c 为小数)个交换子构成新的交换子序列。
  [2](p-x)定义为两个元素之间的交换子。
  [3] 交换子和交换子的“+”定义为将交换子合并。

(4)位置更新: pso粒子群算法 Python举例 pso粒子群优化算法例题_算法_12 ,其中pso粒子群算法 Python举例 pso粒子群优化算法例题_pso粒子群算法 Python举例_04为速度, pso粒子群算法 Python举例 pso粒子群优化算法例题_算法_09为位置。序列和交换子 的“+”定义为对序列进行交换子操作。

1.2.2 流程图

pso粒子群算法 Python举例 pso粒子群优化算法例题_粒子群_15

1.3 实验结果

pso粒子群算法 Python举例 pso粒子群优化算法例题_粒子群_16


pso粒子群算法 Python举例 pso粒子群优化算法例题_算法_17

1.4 结果分析

    粒子群算法同遗传算法一样,都是不稳定的,每次运行的结果都会不一致。 但是,每次运行的结果不会相差很大,最短距离都在 40 左右,以上仅仅给出了 三次结果。 粒子群算法在计算最优解会出现陷入局部最优的情况,但是它的运行效率 高,在实际的应用中有很好的效果。

1.5 源码

    GitHub传送门!!!