模拟二进制交叉(SBX)交叉运算符示例

时间:2014-03-17 15:08:42

标签: genetic-algorithm crossover

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

2 个答案:

答案 0 :(得分:3)

这些天我也花了更多时间在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 *β(p1-p2)和c2 =(p1 + p2)/2-0.5 *β(p1-p2)和p1> p2 此外,beta的价值是我们的目标。

以上都是我从SBX学到的东西。 对不起,它还没有完成!

答案 1 :(得分:0)

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

  • DEB,Kalyanmoy;拉格拉·布珊(Ram Bhushan)农业。用于连续搜索空间的模拟二进制交叉。复杂系统,第9版,n。 2,第第115-148页,1995年。
  • VARGAS,DênisEC。运营商SBX和运筹学多目标公司的问题。巴西计算与应用数学学会会刊,第7卷,第n页。 2018年1月1日。
  • CRUZ,Frederico Rodrigues Borges da等。取消对多人交易的限制。 2012。

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

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

要计算的孩子数量为:

  • enter image description here
  • enter image description here

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

  • enter image description here
  • enter image description here

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

enter image description here

要计算beta(β i):

enter image description here

  

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

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

  1. 设置一个随机数µ〜(0,1);
  2. 根据上述公式计算βi以便共享;
  3. 使用βi
  4. 使用上述公式生成儿童

专业参考文献:

(1)阿泽维多,卡洛斯·雷纳托·贝洛。在多米尼加共和国多种族的最佳时机。 2011。Dissertaçãode Mestrado。伯南布哥联邦大学。