【问题标题】:Simulated Binary Crossover (SBX) crossover operator example [closed]模拟二元交叉 (SBX) 交叉运算符示例 [关闭]
【发布时间】:2014-03-17 15:08:41
【问题描述】:

我在一个研究团队工作以解决多目标工程问题,我专注于 NSGA-II 算法,但现在我坚持我需要了解 SBX 交叉如何与数值示例一起工作,这样我才能实现它,或者即使有一个现成的代码我可以根据我们的问题进行调整,但首先我需要查看数字示例以便我可以继续,任何可用的资源我只在http://www.slideshare.net/ 上找到了一个演示文稿,但只有方程式没有示例.

【问题讨论】:

标签: genetic-algorithm crossover


【解决方案1】:

这些天我也花了更多时间在 SBX 因为它是数字编码问题交叉的更好选择。我检查了原始论文和您指出的幻灯片。虽然我不知道SBX的完整流程,但我可以告诉你我所学到的,或许可以帮助你进一步了解SBX。

1:这个想法来自于单点交叉的二进制编码。例如,父染色体 p1 和 p2,它们的子染色体 c1 和 c2。

2:在二进制编码中,具有性质:(p1+p2)/2=(c1+c2)/2。我们表示|(c1-c2)/(b1-b2)|为 beta,根据模拟,b 有时等于 1。

3:当我们在数字编码中使用这个思想时,应该保留这个属性,为此,在数字编码中c1和c2的一个解决方案:

c1 = (p1+p2)/2 +0.5*beta(p1-p2) 和 c2 = (p1+p2)/2-0.5*beta(p1-p2) 和 p1>p2 此外,beta 值是我们的目标。

以上都是我从 SBX 学到的。 不完整,抱歉!

【讨论】:

  • 嗨伙计,现在我已经完成了算法。也许下面的伪代码列表将有助于学习这个算法。如果满足sbx的条件:选择父p1和p2 u = rand(1) if
【解决方案2】:

这个问题很老,但我建议阅读学术文章:

  • DEB, Kalyanmoy;阿格拉瓦尔,拉姆·布尚。连续搜索空间的模拟二元交叉。复杂系统,v. 9,n。 2,第115-148,1995。
  • VARGAS,丹尼斯 EC。 Um Estudo dos Parâmetros do Algoritmo NSGA-II com o operador SBX em Problemas de Otimização Estrutural Multiobjetivo。巴西计算与应用数学学会论文集,第 7 卷,第 n。 2018 年 1 月 1 日。
  • 克鲁兹,弗雷德里科罗德里格斯博尔赫斯达等人。 Abordagem multiobjetivo para otimização de redes de filas finitas。 2012 年。

link 上的文章也可能会有所帮助。

在 github 上还有一个 msu-coinlab/pymoo NSGA python 实现,其中有一个 simulated_binary_crossover.py 文件,其中包含一个您可以构建的实现。

计算要制定的孩子的数量是:

AZEVEDO (1) 使用不同的公式:

要计算 beta (βi) 的函数,请使用概率分布:

计算 beta (βi):

η是用户定义分布的索引(非负数)

计算交叉产生的浮点数的步骤是:

  1. 设置一个随机数 µ ~ (0,1);
  2. 根据上述公式计算要共享的βi
  3. 使用上述公式使用 βi 生成孩子

Adicional 参考:

(1) 阿泽维多,卡洛斯·雷纳托·贝洛。 Geração de diversidade na otimização dinâmica multiobjetivo evolucionária por paisagens de não-dominância。 2011. 梅斯特拉多论文。伯南布哥联邦大学。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 2019-07-13
    • 2020-11-25
    • 2021-10-07
    • 2020-01-03
    • 2010-10-17
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多