system: [SYSTEM]

user: 4. 精英势场蚁群算法 4.1. 精英策略 在传统蚁群算法中，所有个体均扮演同样的角色，所有个体遗留的信息素浓度相同。为了加快算法收敛速度，本研究将种群个体中表现前5% (即路径长度较短的前5%)的个体试作精英个体，重构信息素浓度更新公式如式(10)所示 τ i j ( t + 1 ) = ( 1 − λ ) τ i j ( t ) + Δ τ i j + ( Δ τ i j ) + (10) 式中：(Δτ ij ) + 即为精英个体产生的增量信息素。迭代前期，精英个体的增量信息素应设置较小，以尽可能提高蚂蚁种群的多样性，随着迭代，精英个体逐渐接近最优解，在迭代后期，应该较大程度发挥精英个体的引导作用，即增大增量信息素，以促进种群收敛。基于上述思路，本文设置的增量信息素公式如式(11) ( Δ τ i j ) + = { ( i t i t max ) 3 × 1 L k                     k 是 精 英 个 体 0                                                                                                                   k 非 精 英 个 体 (11) 式中：it为当前迭代次数；it max 为最大迭代次数； i t / i t max ∈ [ 0 ， 1 ] ，因此用幂函数构造精英个体信息素增量可以弱化精英个体的前期引导能力，并增强后期引导能力，以保证种群前期的多样性，并促进算法后期加快收敛。 4.2. 双向搜索策略 传统蚁群算法在搜索时采用单向搜索的方式，即仅设置一队蚂蚁从出发点向目标点进发，这种搜索方式效率较低，且在复杂地形情况下易陷入局部最优。在出发点和目标点已知的情况下，采用双向搜索的策略能够有效解决上述不足，即设置两队蚂蚁，一队从出发点向目标点进发，另一队则从目标点向出发点进发。两个蚂蚁队伍相互独立，具有自己的信息素，每队中蚂蚁个体只会受到所在队伍信息素的影响。在迭代过程中，若不同队伍中的两只蚂蚁个体相遇，则将两个蚂蚁已走的路径相连，形成一条完整路径，并锁定两只蚂蚁不再继续运动，上述过程的具体步骤如下： 步骤1：构建种群大小相同的正向蚁群R1和逆向蚁群R2， R1 = { r 11 ， r 12 ， ⋯ ， r 1 m ， ⋯ ， r 1 M } ， R1 = { r 21 ， r 22 ， ⋯ ， r 2 m ， ⋯ ， r 2 M } ； 步骤2：记录每个个体经过的节点，并建立节点记录列表，如List(r 1m )； 步骤3：如果正向蚁群R1中的某个体的节点记录列表与逆向蚁群R2中的某个体的节点记录列表产生重叠，则在该节点处，将两个列表合并，进而产生一条从出发点向目标点的可行路径，并锁定两只蚂蚁不再继续运动。 4.3. 人工势场初始化信息素浓度 传统蚁群算法各节点初始信息素浓度相同，会降低蚂蚁个体的搜索效率和迭代速度。因此，本文引入人工势场法的引力和斥力势场初始化信息素浓度分布。 引力势场和引力值函数与传统的人工势场法相同，如式(5)和(6)。同时，不同于二维情形，三维地图往往不存在严格的障碍物，本文重构斥力势场，以初始点的高度作为基准，高度越高的位置斥力越强，高度低于基准高度的位置斥力置为0。对于任意一点 ( x ， y ， z ) ，初始点 ( x 0 ， y 0 ， z 0 ) 的三维环境而言，其产生的斥力势场函数 U ′ r e p 的斥力值 F ′ r e p 表示如式(12)和(13)所示 U ′ r e p = { 1 2 θ ⋅ ( z − z 0 ) ⋅ ( 1 ρ − 1 ρ 0 ) 2                                   ρ ≤ ρ 0 | | z > z 0 0                                                                                                                                                                                                                           ρ > ρ 0 | | z ≤ z 0 (12) F ′ r e p = − g r a d ( U ′ r e p ) = { θ ⋅ ( z − z 0 ) ⋅ ( 1 ρ − 1 ρ 0 ) 1 ρ 2                                     ρ ≤ ρ 0 | | z > z 0 0                                                                                                                                                                                                                                 ρ > ρ 0 | | z ≤ z 0 (13) 其合力 F ′ t o t 可作为系数，初始化任意一点 ( x ， y ， z ) 信息素浓度如式(14)所示 τ 0 ( x ， y ， z ) = F ′ t o t ( x ， y ， z ) ⋅ τ 0 (14) 式中：τ 0 是信息素浓度初始化基准值。 4.4. 方向扩展搜索策略 传统蚁群算法，通常采用8邻域搜索的方式，如图1(a)所示，即从当前节点可以抵达的下一节点为其相邻的8个节点，这种方式会限制蚂蚁个体的搜索方向，本研究将传统8邻域搜索的方式拓展为了16邻域搜索，如图1(b)所示。 4.5. 基于人工势场的启发信息改进 传统蚁群算法仅考虑距离启发信息，没有考虑障碍物的影响，本研究引入势场启发信息函数，即将距离启发信息函数η ij (t)重构如式(12)所示 η i j ( t ) = ( i t max − i t i t max ) 3 × a F t o t ⋅ cos φ × 1 d i j (12) 式中：a > 0且为常数；φ为蚂蚁当前节点和下一步节点连线与势场合力的夹角。人工势场虽能加快蚁群的收敛速度，但有可能会导致蚁群个体集中于势场分布的梯度方向上。为此，本研究引入幂函数构造自适应权重系数，以增强算法前期人工势场合力对蚂蚁个体的引导作用，弱化算法后期人工势场合力对蚂蚁个体的影响。 图1. 蚁群个体搜索方向策略对比 综上，改进的精英势场蚁群算法流程图如图2所示。 图2. 改进的精英势场蚁群算法流程图 具体步骤如下： (1) 初始化算法参数，输入三维地图环境，并对环境进行栅格化建模； (2) 创建相同规模正向和逆向两个蚂蚁种群，分别置于起点和终点，对每个蚂蚁个体建立节点记录列表； (3) 算法开始，蚂蚁按照改进后的启发信息和转移概率选择下一节点，并实时更新信息素浓度； (4) 将选择的节点加入对应的蚂蚁个体节点记录列表中，并记录路径长度； (5) 如果正向蚁群R1中的某个体的节点记录列表与逆向蚁群R2中的某个体的节点记录列表产生重叠，则在该节点处，将两个列表合并，进而产生一条从出发点向目标点的可行路径，并锁定两只蚂蚁不再继续运动；否则返回步骤(3)； (6) 找出精英个体，并更新全局信息素； (7) 判断迭代是否结束，是则输出最优路径；否则返回(3)。