我熟悉二进制表示中的交叉和变异索引,但在实际编码中,我遇到了几篇使用交叉索引和变异索引作为参数的文章值。
例如,我们的人口规模为 300
和 30
决策变量,那么交叉指数 = 0.25 意味着什么?
也对100+当前世代数
的突变指数感到困惑。
最佳答案
交叉指数
已经开发了许多实编码的交叉运算符,可以从两个父解决方案创建两个子解决方案。
也许您正在阅读的论文使用模拟二元交叉 (SBX)。
对于该算子,交叉指数 (η
) 是一个非负实数参数。较大的 η
值会提高创建近父解决方案的概率,较小的 η
值允许选择较远的解决方案作为子解决方案。
SBX算法的逐步过程是:
C 中可能的实现是 here (另请查看 Simulated Binary Crossover (SBX) crossover operator in Scala genetic algorithm (GA) library 和 Simulated Binary Crossover (SBX) crossover operator example )。
因此,当 η=2
/η=5
时,创建连续变量子解的概率分布为:
父项标有 o
,您可以看到较大的值如何为创建近父项解决方案提供更高的概率。
SBX 的引用论文是:
Simulated Binary Crossover for Continuous Search Space
Kalyanmoy Deb, Ram Bhushan Agrawal
1995 (PDF here)
突变指数
变异指数 (ηₘ
)(可能)是 Deb 和 Agrawal (1999) 建议的多项式变异算子的参数。
ηₘ
在变量中引入 O((b – a)/ηₘ)
的扰动效果,其中 a
和 b
是变量的下限和上限。
那么对于后续几代使用更大的 ηₘ
是合理的。
关于mathematical-optimization - 在实数编码的遗传算法中,交叉指数 0.25 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56263132/