自适应差分进化(参数自适应,SaDE)
2026/3/21约 1550 字大约 5 分钟
自适应差分进化(参数自适应,SaDE)
名称
自适应差分进化(Self-adaptive Differential Evolution, SaDE),自适应差分进化(Adaptive Differential Evolution),参数自适应差分进化(Parameter Adaptive Differential Evolution)
分类
自适应差分进化是一种随机优化算法,属于进化计算领域,而进化计算又是计算智能的一个分支。它与其他差分进化算法及进化算法密切相关。
- 计算智能
- 仿生计算
- 进化计算
- 进化算法
- 差分进化
- 自适应差分进化
- 差分进化
- 进化算法
- 进化计算
- 仿生计算
策略
变异与交叉
SaDE 通过变异与交叉操作对当前种群个体进行组合,以生成新的候选解。变异策略及其相关控制参数会在优化过程中根据以往的成功率进行动态调整。该自适应机制使算法能够根据具体问题的特性自动调节其搜索行为。
选择
在生成新候选解之后,SaDE 将每个新解与当前种群中对应的父代个体进行比较。若新解具有更优的适应度值,则在下一代中替换父代;否则,保留父代。该选择机制保证了种群质量会随着迭代逐步提高。
参数自适应
SaDE 维护一组变异策略及其对应的控制参数。各策略的选择概率根据其生成改进解的成功率进行更新。持续产生较优候选解的策略会被赋予更高的选择概率,而效果较差的策略则会逐步被弱化。该自适应机制使算法能够聚焦于对当前问题最有效的搜索机制。
过程
数据结构
- 种群:由候选解构成的数组,其中每个候选解均表示为一个决策变量向量。
- 策略池:由若干变异策略及其对应控制参数组成的集合。
- 策略概率:用于存储各变异策略选择概率的数组。
- 策略成功率:用于记录各变异策略成功率的数组。
参数
- 种群规模:种群中候选解的数量。
- 变异策略:一组预定义的变异策略(例如 “DE/rand/1”、“DE/best/1”、“DE/current-to-best/1”)。
- 交叉概率:生成新候选解时执行交叉操作的概率。
- 缩放因子范围:各变异策略中缩放因子(F)的取值范围。
- 自适应间隔:两次参数自适应更新之间所经历的代数。
主循环
- 在搜索空间边界内随机初始化种群。
- 用预定义的变异策略及其控制参数初始化策略池。
- 将各策略的初始选择概率设为相等。
- 当未满足终止准则时,执行:
- 对种群中的每个个体,执行:
- 根据各策略的选择概率,从策略池中选取一种变异策略。
- 使用所选策略及其控制参数生成一个新的候选解。
- 对当前个体与新候选解执行交叉操作。
- 计算新候选解的适应度。
- 若新候选解优于当前个体,则在种群中进行替换。
- 更新所选策略的成功率。
- 若达到自适应间隔,则执行:
- 根据各策略的成功率更新其选择概率。
- 重置各策略的成功率。
- 对种群中的每个个体,执行:
- 返回找到的最优解。
注意事项
优点
- 自适应性:SaDE 能够根据问题特性自动调整变异策略和控制参数,从而减少人工调参需求。
- 鲁棒性:自适应机制使 SaDE 对初始参数取值不太敏感,并能够在较广泛的问题上保持良好性能。
- 高效性:通过聚焦于更成功的策略,SaDE 相较于非自适应差分进化算法通常能够更快收敛并获得更优解。
缺点
- 复杂度增加:自适应机制为算法引入了额外复杂性,相比标准差分进化更难理解和实现。
- 计算开销增加:维护和更新策略概率与成功率会带来一定计算开销,因此其运行速度可能慢于非自适应变体。
- 参数敏感性:尽管 SaDE 比标准差分进化对参数设置不那么敏感,但其性能仍可能受到自适应间隔和初始策略池设置的影响。
启发式建议
种群规模
- 初始种群规模可设为问题决策变量个数的 5 到 10 倍。
- 对于高维问题(100 维以上),可考虑适当增大种群规模以维持多样性。
变异策略
- 在初始策略池中应包含具有多样性的变异策略,例如 “DE/rand/1”、“DE/best/1” 和 “DE/current-to-best/1”。
- 对于局部最优较多的问题,应优先考虑促进探索的策略,例如 “DE/rand/1”。
- 对于具有明显全局结构的问题,应优先考虑强化优良解利用的策略,例如 “DE/best/1”。
交叉概率
- 对大多数问题,可将交叉概率设置在 0.7 到 0.9 之间。
- 对于变量相关性较强的问题,可适当提高交叉概率,以增强解之间的信息交换。
自适应间隔
- 可根据问题规模和复杂度,将自适应间隔设置在 5 到 20 代之间。
- 对于变化较快的问题,应采用较短的自适应间隔,以便更快响应搜索景观的变化。
- 对于适应度景观较稳定的问题,可采用较长的自适应间隔,以减少自适应带来的额外开销。
缩放因子范围
- 对大多数问题,可将缩放因子范围默认设置为 [0.5, 1.0]。
- 对于可分性较强的问题,可考虑适当减小下界,以鼓励更细致的局部搜索。
- 对于变量交互较强的问题,可考虑适当提高上界,以增强探索能力。