编程语言
首页 > 编程语言> > java – 遗传算法中的重组?

java – 遗传算法中的重组?

作者:互联网

我正在使用遗传算法编写应用程序,其中我使用两个个体的基因是实数(双数,因为我用Java编写).所以我想知道使用实数而不是位进行重组的最佳方法是什么.

我试过这样做:

如果p1 =(x1,y1)和p2 =(x2,y2)是父母而r是0到1之间的一些随机数,那么我会得到这样的孩子:

c1 = (  r*x1   + (1-r)*x2 ,   r*y1   + (1-r)*y2)
c2 = ((1-r)*x1 +   r*x2   , (1-r)*y1 +   r*y2  )

但是我对这个解决方案给我的结果不是很满意.似乎孩子并不总是比父母好,但他们应该基于遗传算法的主要概念.

如果有人能给我另一个想法或暗示,我将不胜感激.

解决方法:

我同意所有的意见.也许你可以将你的遗传算法与局部搜索结合起来(即在交叉/变异之后对每个孩子实施本地搜索).已经证明该技术在各种期刊文章中是有用的.

与交叉/变异不同,本地搜索只会在有改进时改变解决方案,否则解决方案将保持不变.

在您的情况下,本地搜索解决方案(x1,y1)可以是“x1 / – 0.01(和/或任何其他少量,可以在本地搜索中测试多于1个值)的详尽测试,并且y1保持不变“和其他人一样.

标签:java,genetic-algorithm
来源: https://codeday.me/bug/20190710/1424779.html