matlab中的单点有序交叉

时间:2013-04-30 14:29:55

标签: matlab genetic-algorithm

我需要在matlab中创建有序交叉。我有父母P1和P2如下:

P1=[1 2 3 4 ; 0 1 1 0],
P2=[3 2 1 4 ; 0 1 0 0].

前1 [在P1(2,2)和P2(2,2)处]是我的交叉点。现在我需要跟随后代:

O1=[1 2 3 4 ; 0 1 0 0],
O2=[3 2 1 4 ; 0 1 0 0].
你能帮帮我吗?最好的,Elnaz

1 个答案:

答案 0 :(得分:2)

要查找交叉点,请在父项的第二行使用逻辑AND运算符:

idx = find(P1(2, :) & P2(2, :));

然后我们通过在交叉点之后切换父级之间的值来创建后代:

O1 = [P1(:, 1:idx), P2(:, idx + 1:end)];
O2 = [P2(:, 1:idx), P1(:, idx + 1:end)];

希望这有帮助!

相关问题