matlab交叉遗传算法

时间:2013-07-17 09:40:07

标签: matlab genetic-algorithm

我正在尝试实施遗传算法。我正在尝试实现单阶交叉。我无法这样做。请帮忙!

假设这是我的人口

new_pop =

0000011001
0000011001
0000000100
0000011001
0000011001
0000010001

我想从这个集合中随机选择2个父母并进行单个订单交叉。我上面给出的集合是有序的,即意味着更健康的人被放置在上面。我怎样才能进行单阶交叉?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这是让你入门的东西:

%Randomly choose 2 individuals

n = size(new_pop, 1);
l = size(new_pop, 2);

breeders = new_pop(randperm(n,2),:);

%Choose a crossover point

cp = randperm(l, 1);

%Crossover

b1 = [breeders(1, 1:cp), breeders(2, cp+1:end)];
b2 = [breeders(2, 1:cp), breeders(1, cp+1:end)];