【发布时间】:2017-08-01 21:20:24
【问题描述】:
如何在 Java 中为遗传算法实现统一交叉方法?
目前,我正在使用 2 个需要在程序继续之前互连的 ArrayList。下面是我一直使用的方法的开始:
private void UniformCrossOver(int ListOne,int ListTwo)
{
...
}
我现在的立场是,我假设我需要再制作 2 个 ArrayList,它们会将数据拆分成,但我不知道从哪里开始进行交叉。我会使用以新数组的大小为定义键的 for 循环吗?
非常感谢您的帮助。
【问题讨论】:
-
您需要一个
ArrayList来存储结果。在每一点,您以 0.5 的概率从两个输入ArrayLists之一中随机选择一个元素。您可以使用随机数生成器在 0 和 1 之间进行选择,例如 (Random::nextInt(0,2))。您将结果元素存储在结果 arrayList 中。 -
好的。那么这是否意味着我需要创建递增的
for循环,该循环为ArrayList中的每个元素运行。即:随机数生成器是决定新节点是从父节点 A 还是父节点 B 获取的不确定因素? -
是的。如果两个输入列表的长度不同(我不确定在您的场景中是否有可能),您必须决定在这种情况下该怎么做。
标签: java algorithm computer-science genetic-algorithm