Page 373 - 《软件学报》2024年第4期
P. 373

徐怡 等: 基于遗传算法的划分序乘积空间问题求解层选择                                                     1951


                  2.3   自适应选择算子
                    选择算子用于对群体进行优胜劣汰操作, 轮盘赌选择                 [28] 和精英保留策略   [32] 是两种常用的选择算子. 轮盘赌选
                 择能增大优秀个体被选中的概率, 但无法保证最优秀个体一定能被保留到下一代. 精英保留策略能保证最优秀个
                 体能被保留到下一代, 但无法对种群其他个体进行控制. 由于轮盘赌选择和精英保留策略都是通过牺牲种群的多
                 样性来获得更快的收敛速度, 因此在种群进化的前期, 种群多样性较高, 为了使算法尽快收敛, 将轮盘赌选择和精
                 英保留策略结合使用, 在保证最优个体得以保留的同时加快收敛速度                       [33] . 在种群进化的后期, 种群的多样性逐渐
                 降低, 仅使用精英保留策略, 在保留最优个体的同时降低对种群多样性的破坏. 为此, 本文提出一种随种群进化迭
                 代次数动态变化的自适应选择算子.
                    首先通过设置阈值将种群进化过程分为前期与后期. 假设遗传算法的最大迭代次数为                              T, 当前迭代次数为     t  ,
                                             t                             t
                                                                                    t
                                                      t
                 0 ⩽ t ⩽ T  . 给定阈值  0 ⩽ γ ⩽ 1 , 则当   ⩽ γ  时, 第   次迭代属于进化前期, 当   > γ  时, 第   次迭代属于进化后期. 通
                                            T                              T
                   γ 的值可以设置为     0.5.
                 常
                    自适应选择算子的伪代码描述如下.
                 伪代码   1. 自适应选择算子.
                 1. 初始化最大迭代次数      T, 当前迭代次数    t , 阈值  γ ;
                     t
                 2. if    ⩽ γ   then
                     T
                 3.  选择算子同时使用轮盘赌选择和精英保留策略;
                 4. else
                 5.  选择算子仅使用精英保留策略;

                    自适应选择算子, 在种群进化的前期, 能够保证最优个体得以保留的同时加快算法收敛速度. 在种群进化的后
                 期, 能够在保留最优个体的同时降低对种群多样性的破坏.
                  2.4   自适应交叉算子
                    交叉算子用于维持种群的多样性            [34] , 交叉算子以交叉概率为基础, 较高的交叉概率能增加交叉操作发生频率,
                 加快搜索过程, 但可能会破坏适应度值高的染色体. 较低的交叉概率能降低适应度值高的染色体被破坏的可能性,
                 但会使得进化速度变慢        [35] . 因此, 在种群进化的前期, 我们希望设置较大的交叉概率, 在种群进化的后期, 设置较
                 小的交叉概率. 同时, 在进化过程中, 适应度值较小的个体应该获得较大的交叉概率来优化其基因型, 适应度值较
                 大的个体应该获得较小的交叉概率来保留其基因型. 为此, 本文提出一种交叉概率随当前种群进化迭代次数以及
                 交叉个体适应度值动态变化的自适应交叉算子. 和第                  2.3  节一样, 通过设置阈值    γ  将种群进化过程分为前期与后
                 期. 自适应交叉概率定义如下.
                    定义  11. 给定当前进行交叉的父本染色体           p 1  和母本染色体  p 2  , 假设  T  是遗传算法的最大迭代次数,     t 是当前
                 迭代次数,    0 ⩽ t ⩽ T  ,    f(p 1 )  和   f(p 2 )  是  p 1  和  p 2  的适应度值,    f pavg = avg( f(p 1 ), f(p 2 ))  是   f(p 1 )  和   f(p 2 )  的平均值,   P b
                 是给定的交叉概率分界值,         0.5 ⩽ P b ⩽ 1 . 则  p 1  和   p 2  的自适应交叉概率  P c  定义为:
                                                                     t
                                                   P b +(1− P b )×(1− f pavg ),  ⩽ γ
                                                  
                                                  
                                                                     T
                                                  
                                                  
                                                                                                      (5)
                                              P c = 
                                                                     t
                                                  
                                                   P b −(1− P b )× f pavg ,  > γ
                                                  
                                                  
                                                                      T
                      t                            t
                                                             t
                                t
                 其中,    ⩽ γ  表示第   次迭代属于进化前期,        > γ  表示第   次迭代属于进化后期.
                      T                            T
                    由定义   11  可以看出, 进化前期的交叉概率大于进化后期的交叉概率. 此外, 不论在进化前期还是进化后期, 适
                 应度值较小的染色体会获得较高的交叉概率, 适应度值较大的染色体则会获得较低的交叉概率.
                    本文采用多点交叉的方式进行交叉操作              [35] . 自适应交叉算子的伪代码描述如下.
   368   369   370   371   372   373   374   375   376   377   378