mathematical-optimization - 在实数编码的遗传算法中,交叉指数 0.25 意味着什么?

标签 mathematical-optimization genetic-algorithm heuristics mutation crossover

我熟悉二进制表示中的交叉和变异索引,但在实际编码中,我遇到了几篇使用交叉索引变异索引作为参数的文章值。

例如,我们的人口规模为 30030 决策变量,那么交叉指数 = 0.25 意味着什么?

也对100+当前世代数的突变指数感到困惑。

最佳答案

交叉指数

已经开发了许多实编码的交叉运算符,可以从两个父解决方案创建两个子解决方案。

也许您正在阅读的论文使用模拟二元交叉 (SBX)。

对于该算子,交叉指数 (η) 是一个非负实数参数。较大的 η 值会提高创建近父解决方案的概率,较小的 η 值允许选择较远的解决方案作为子解决方案。


SBX算法的逐步过程是:

  1. 选择一个随机数u ∈ [0; 1[.
  2. 计算βq:

    β

  3. 使用这些方程计算子解:

    children

    这里 Xi(1, t+1)Xi(2, t+1) 是从两个父项 Xi(1, t )Xi(2, t)

C 中可能的实现是 here (另请查看 Simulated Binary Crossover (SBX) crossover operator in Scala genetic algorithm (GA) librarySimulated Binary Crossover (SBX) crossover operator example )。

因此,当 η=2/η=5 时,创建连续变量子解的概率分布为:

probability distribution

父项标有 o,您可以看到较大的值如何为创建近父项解决方案提供更高的概率。


SBX 的引用论文是:

Simulated Binary Crossover for Continuous Search Space

Kalyanmoy Deb, Ram Bhushan Agrawal

1995 (PDF here)

突变指数

变异指数 (ηₘ)(可能)是 Deb 和 Agrawal (1999) 建议的多项式变异算子的参数。

ηₘ 在变量中引入 O((b – a)/ηₘ) 的扰动效果,其中 ab 是变量的下限和上限。

那么对于后续几代使用更大的 ηₘ 是合理的。

关于mathematical-optimization - 在实数编码的遗传算法中,交叉指数 0.25 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56263132/

相关文章:

python - 零和游戏16位版

algorithm - 类(class)安排算法 : why use of DFS or Graph coloring is not suggested?

python - 如何用CVXPY解决8皇后问题?

python - 设置封面: Generating test instances

artificial-intelligence - 什么启发式评估函数或算法可以被视为 Not Acceptable

algorithm - 线程间负载均衡的启发式算法

java - P^N 与整数(内核)的组合,如何生成它们?

c++ - 为遗传算法分配和检索按位存储值

c# - 我将如何编写这个遗传算法?

artificial-intelligence - 隐形游戏 AI 求解器