一、背景介绍
1.1 问题介绍
约束优化在现实世界中很常见。解决约束优化问题具有挑战性,因为约束将搜索空间分为两部分:不可行搜索空间和可行搜索空间。
一个约束实参优化问题可以被描述为:
其中, 是向量 , 表示问题维度。 具有边界约束 ,. 约束函数包括了 个不等式约束和 个等式约束。
当 时,即认为满足等式约束, 通常设置为 .
1.2 DE 变种介绍
“DE/rand/1”: 最广泛使用,但是收敛慢,没有用到的信息
“DE/best/1”: 可能在许多问题上过早收敛
“DE/current-to-best/1”:
“DE/best/2”:
“DE/rand/2”:
JADE 算法引入了 DE/current-to-best/1 变异策略(对“DE/current-to-best/1”一般化的改进),其核心思想是不仅利用最好解的信息,也利用了其他较好解的信息。以维持种群的多样新和避免过早收敛。在 JADE 中使用 代替 ,其中, 是当前种群前 的个体 。此外,JADE 还利用参数自适应技术,根据成功的历史记录对突变因子和交叉概率进行演化。
DE 在不同问题上高度依赖目标向量的生成策略以及控制参数的设置( 和 ),因此需要自适应的策略去选择变异策略以及控制参数。
jDE 算法在执行中自适应 和
SaDE 算法自适应变异策略以及控制参数( 和 ),策略池中包括了 DE/rand/1/bin, DE/rand/2/bin, DE/current-to-rand/1, and DE/rand-to-best/2/bin。通过学习之前一段时间生成有希望解的经验,逐步自适应目标向量的生成以及生成相关参数对应的概率。
CoDE 算法使用多个变异策略和多个控制参数组,随机结合生成新的目标向量。在 CoDE 中,策略池包括DE/rand/1/bin,DE/rand/2/bin,DE/current-to-rand/1。参数池包括三组控制参数:[F =1.0, CR=0.1], [F =1.0, CR=0.9], [F =0.8, CR=0.2]。在每一代中,策略池中的每一个变异策略和参数池中的任意一种相结合,形成目标向量,即,一个目标向量会生成三个子代向量,其中,最好的一个子代向量与父代竞争。
SaJADE 算法在 JADE 设置了参数自适应,并且整合了 SaM 策略适应方法。策略池中包括了 DE/current-to-best without archive, DE/current-to-best with archive, DE/rand-to-best without archive, and DE/rand-to-best with archive
Ranking-based Mutation:一般而言,DE 的变异算子使用的父代个体在当前种群中随机挑选。有一种观点认为,好的个体总是包含了好的信息,因此应该给他们更多的机会去引导其它个体。在 Ranking-based Mutation 中,一部分父代个体是根据他们在当前种群的排名按比例选取的。首先,对种群中的个体进行降序排序。随后,对每个个体分配排名 ,其中 是种群大小,每个个体的选择概率 被计算为 。在 Ranking-based Mutation 中,只有 base vector 和 terminal point of the difference vector 依照选择概率选择,其他向量按照标准的 DE 算法选择。
用于解决约束优化的 DE 变种:
jDEsoco 算法使用 DE/best/1 变异策略,并以很小的概率重新初始化,使用 -比较处理约束。
DEag 算法提出了一种包括存档集,梯度变异,以及 -比较的方法。
ECHT-DE (DE with ensemble of constraint handling techniques)。
constraint-consensus mutation based DE 在进化搜索过程中帮助减少约束冲突的机制。
1.3 约束处理方法介绍
- 惩罚函数
- -比较
- 可行解方法的优越性
近年来,基于保留种群中的不可行解的方法在求解约束优化问题方面也显示了巨大的潜力
二、算法介绍
UDE (unified differential evolution) 结合了 CoDE、JADE、SaDE、基于排序的变异算子的主要特征,以及基于 DE 的局部搜索算子。
UDE 使用了一个策略池,包含了三个基于排序的变异策略,以及一个参数池,包含了两组控制参数设置。
UDE 的策略池中包括了 rank-DE/rand/1/bin,rank-DE/current-to-rand/1 和 rank-DE/current-to-best/1(没有二项式交叉算子)。
在每一代中,UDE将当前种群分为两个子种群。在 top 子种群中,UDE 对每个目标向量都使用了三种变异策略,类似于 CoDE。在 bottom 子种群中, UDE 采用了策略适应,变异策略将周期性学习顶部种群成功策略的经验。为了提高性能,UDE 周期性采用了基于局部搜索的 DE 算子。在约束处理上,UDE采用了静态惩罚函数
2.1 策略池
在 CoDE 算法所使用的变异策略中,没有能够提高开采效率的。因此在 UDE 中,使用了 DE/current-to-best/1 替代 DE/rand/2/bin 策略。
Ranking-based vector selection 被用于进一步提高开采性能,同时,对该算法做了部分修改:
base vector and terminal vector 是从当前种群(即:top种群)中选取个体,而不是全部种群。
因此,在 UDE 的策略池中包括 rank-DE/rand/1/bin, rank-DE/current-to-rand/1, and rank-DE/current-to-best/1。 其中,rank-DE 表示使用了算法 2 中的 ranking-based vector selection。ranking-based 的选择概率设置为 5% 时表现最好。
2.2 参数池
在 UDE 中,参数池包括两组:[F =0.9, CR=0.9] and [F =0.5, CR=0.5]。
2.3 策略适应
在 CoDE 中,每个目标向量对应 3 个子代向量,这会严重浪费评估次数。
因此在 UDE 中,每一代,分为两个子种群。在 top 子群中包括了 个成员,变异策略被用于每个目标向量,生成 3 个子代向量。子代向量相互比较,得到最佳子代向量的变异策略获胜。
每隔 L 代,计算各个变异策略在区间 L 代的成功率。在 L 代期间,bottom 子群包括了 个个体,依照上个阶段 top 子群的成功率来确定变异策略。
2.4 约束处理
在 UDE 中,使用静态惩罚函数来处理约束,每个个体 的适应值根据下式:
其中, 分别表示个体 适应值,目标函数值,总约束冲突值。 是静态惩罚因子。
2.5 置换
在传统的 DE 算法中,父代和子代是一对一比较进入下一代,而在 UDE 中,是父代整体和子代整体结合起来,选择 个个体进入下一代。
2.6 局部搜索
局部搜索策略可以显著提高 EAs 的性能。在 UDE 中,考虑了一个基于 DE 的局部搜索算子。
每隔 代,在当前种群中除了最优个体外的最好的 个个体实现一种 DE 变异策略 (没有交叉操作),如下:
其中, 是当前种群中第 个个体通过局部搜索生成的解, 是当前种群的最优解, 是变异因子, 是在当前全部种群中随机选择的个体, 是使用修改的 ranking-based 向量选择策略,从当前种群的 top 子群中选择。
在使用局部搜索生成的 个个体中,最好的个体 与 比较,如果 优于 ,最差的个体 被 替代,否则,被 替代。随后根据适应值对种群重新排序。
[1] Trivedi A, Sanyal K, Verma P, et al. A unified differential evolution algorithm for constrained optimization problems[C]//2017 IEEE Congress on Evolutionary Computation (CEC). IEEE, 2017: 1231-1238.