Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个2D阵列之间执行交叉(JAVA)_Java_Logic_Genetic Algorithm - Fatal编程技术网

在两个2D阵列之间执行交叉(JAVA)

在两个2D阵列之间执行交叉(JAVA),java,logic,genetic-algorithm,Java,Logic,Genetic Algorithm,我正在尝试做一个遗传算法来优化一个座位问题,在这个问题上,人们有自己想要坐在谁旁边的偏好。我遇到的问题是交叉阶段。我有两个成员的人口,我想繁殖和生产一个儿童成员。通常,一个人会从一个父母身上获取一个“基因”,从另一个父母身上获取一个不同的基因。问题是在餐桌上就座时的位置问题 下面是一个随机生成的示例: i j Child Value Mother Value Father Value 0 0 P08 P00 0 1

我正在尝试做一个遗传算法来优化一个座位问题,在这个问题上,人们有自己想要坐在谁旁边的偏好。我遇到的问题是交叉阶段。我有两个成员的人口,我想繁殖和生产一个儿童成员。通常,一个人会从一个父母身上获取一个“基因”,从另一个父母身上获取一个不同的基因。问题是在餐桌上就座时的位置问题

下面是一个随机生成的示例:

i   j   Child Value  Mother Value    Father Value
0   0                  P08             P00
0   1                  P11             P06
0   2                  P02             P05
0   3                  P12             P09  
0   4                  P07             P04
1   0                  P09             P10  
1   1                  P01             P01
1   2                  P03             P13  
1   3                  P06             P03  
1   4                  P13             P11  
2   0                  P00             P12  
2   1                  P10             P07  
2   2                  P04             P02  
2   3                  P05             P08      
2   4                  P14             P14  
我想生成一个子对象,它具有双亲的特征,但也没有重复的对象(PXX不应该在子对象中出现两次)

i:表示表格编号。这里有三张桌子 j:代表座位号。这里有5个座位 总共15人

如果我的解释令人困惑,请原谅。
注:我不能使用任何遗传算法库。

对于此类问题,解决方案通常是“修复”孩子。您需要一个修复函数,该函数将接受一个不可行的子项(一个具有重复项的子项)并使其可行(删除重复项并用缺少的值替换它们)

对于您的特定情况,解决此问题的另一种方法是从家长处获取所有不重叠的表,并将它们放在子表中,然后用剩余的人填充缺少的子表(例如,在你的例子中,从母亲那里取表1,从父亲那里取表2——它们没有共同点——将其余的人放在表0中)