我在一个研究小组工作,以解决多目标工程问题,我专注于 NSGA-II 算法,但现在我卡住了我需要了解SBX交叉如何使用数值示例所以我可以实现它,或者即使有一个现成的代码我可以根据我们的问题进行调整但首先我需要看到数字示例所以我可以继续,任何可用的资源我只在http://www.slideshare.net/找到了一个演示文稿,但只有方程式没有例子。
答案 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)
这个问题很老,但是我建议阅读学术文章:
此link上的文章也可能会有所帮助。
在github上还有一个msu-coinlab/pymoo NSGA python实现,其中有一个 simulated_binary_crossover.py 文件,其中包含可以构建的实现。
要计算的孩子数量为:
AZEVEDO(1)使用不同的公式:
要计算beta(β i)的函数,请使用概率分布:
要计算beta(β i):
η是用户定义的分布的索引(不是负数)
计算交叉产生的浮点数的步骤是:
(1)阿泽维多,卡洛斯·雷纳托·贝洛。在多米尼加共和国多种族的最佳时机。 2011。Dissertaçãode Mestrado。伯南布哥联邦大学。