第2章进化计算
2.3.2 基本差分进化的变种 2.3.2.1 混合差分进化策略 基本的差分进化非常高效和鲁棒,原始差分进化策略的一些自适应方法被发展出来以进一步的提高性能。基本进化策略已经与其它的进化算法,比如梯度下降法、粒子群算法、人工神经网络、模拟退火算法等相结合。下面主要介绍基于梯度的混合差分进化。 最早的混合差分进化之一由Chiou和 Wang发展出来,被称为混合差分进化。混合差分进化引入了两种新的算子:为了提高收敛性能的加速算子(不以牺牲多样性为代价)和提供差分进化挣脱局部极值能力的迁移算子。 如果变异和交叉算子未能提升最佳个体的适应度,则加速算子使用梯度下降法以调整最佳个体的朝向以获得更佳的位置。令 表示当前种群pop(t)在应用变异和交叉算子前的最优个体,令 为经过应用于变异和交叉于所有的个体的下一代种群中的最佳个体。则假设一个最小化问题,加速算子计算如下向量: 式中 是学习率或步长; 是目标函数f的梯度。新的向量x(t)替换新的种群pop(t)中最差的个体。 讲学习率初始化为1,例如 。如果梯度下降未能产生一个具有更好适应度的新向量x(t),学习率以一个因子削减。梯度下降不断重复直到 足够趋近于0,或者已经达到梯度下降步的最大次数。 结合加速和迁移的混合差分进化 设定代计数器,t=0; 初始化控制参数β和pr; 产生并初始化具有ns个个体的种群pop(0); while 终止条件不为真 do 当需要时应用迁移算子; for 每个个体xi(t)∈pop(t) do 计算适应度f(xi(t)); 通过应用变异算子产生测试向量ui(t); 通过应用交叉算子产生一个子代x’i(t); if f(x’i(t))优于f(xi(t)) then 将x’i(t)加入pop(t+1); end else 将xi(t)加入pop(t+1); end end 当需要时应用加速算子; end 将最佳适应度的个体作为结果返回。 使用梯度下降可以显著的加速搜索,但其也存在着会陷入局部极值的缺陷。迁移算子通过增加种群多样性以解决这个问题。这是通过将最佳个体繁殖出多个新个体,并将这些个体替代当前种群而做到的。个体按如下方式繁殖: 式中 。繁殖出的个体 称为 。 迁移算子仅当当前种群多样性变得太小时使用,这就是说,当: 式中: 式中ε1和ε2分别表示考虑最佳个体 种群多样性和基因型多样性的忍耐性。如 ,那么个体i的第j个元素的值就接近于最佳个体的第j个元素的值。 2.3.2.2 基于种群的差分进化 为了提高差分进化的探索能力,有学者提出使用两个种群集。第二个种群被称为备用种群popa(t),作为那些被差分进化选择算子拒绝的亲代的存档。在初始化过程中,随机选择出ns对向量。两个向量中间最佳的那个作为一个个体被插入到种群pop(0)中,另一个向量xia(0)被插入备份种群popa(0)之中。在每一代中,对于每个被产生的子代,如果子代的适应度不优于亲代,与抛弃子代x’i(0)不同,其考虑在备份种群中包括子代。如果f(x’i(t))优于xia(t),那么x’i(t)替换xia(t)。备份集合周期性的被用于替换pop(t)中最差个体为popa(t)中的最佳个体。 2.3.3 高级话题——约束控制方法 使用如下的方法以应用差分进化以解决第2.2.2节中所定义的约束优化问题。 (1)罚方法。通过增加一个函数以惩罚与约束冲突的解来调整目标函数。 (2)通过在一个扩展拉格朗日中嵌入约束将约束问题转化为一个非约束问题。 (3)为了保持初始解的可行性,采用一些方法决定步长和搜索方向。 (4)通过改变差分进化的选择算子,可以拒绝非可行解,并且促进非可行解的修理。为了达到此目的,选择算子接受一个满足如下条件的子代x’i: a)如果x’i满足所有的约束且f(x’i)≤f(xi),那么x’i替换其亲代xi(假设是一个最小化问题)。 b)如果x’i是可行的且xi是不可行的,那么x’i替换xi。 c)如果x’i和xi都是不可行的,那么如果x’i违反的约束的数量小于等于xi违反的约束的数量,那么x’i替换xi。 在亲代和子代都表示可行解的情况下,没有朝向更好
原创力文档

文档评论(0)