gpt4 book ai didi

java - 在两个二维数组之间执行交叉(JAVA)

转载 作者:行者123 更新时间:2023-11-30 10:19:49 25 4
gpt4 key购买 nike

我正在尝试制作一种遗传算法来优化座位问题,在该问题中,人们对坐在谁旁边有偏好。我遇到的问题是交叉阶段。我有两个人口成员,我想繁殖并生产一个 child 成员。通常,一个人会从一个 parent 那里获取一个“基因”,而从另一个 parent 那里获取一个不同的基因。问题是在餐 table 就座的情况下的位置问题。

这是一个随机生成的例子:

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

我想生成一个具有 parent 双方特征但没有重复对象的 child (PXX 不应该在 child 身上出现两次)。

i : 代表表编号。这里有3张 table j :表示座位号。这里有5个座位共15人。

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

最佳答案

对于这类问题,解决办法往往是“修复” child 。您需要一个修复函数,它将接受一个不可行的 child (一个有重复项)并使其可行(删除重复项并用缺失值替换它们)。

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

关于java - 在两个二维数组之间执行交叉(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com