2013-07-17 139 views
0

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

想这是我的人口

new_pop = 

0000011001 
0000011001 
0000000100 
0000011001 
0000011001 
0000010001 

我想随机选择从该组2个父母做单阶分频器。我上面给出的集合是有序的,也就是说,钳工个体被放置在上面。我该如何做单阶交叉?

任何帮助将不胜感激!

+0

,如果它是不明确的,我会编辑的问题! – roni

+1

相关问题:[单点有序交叉在matlab](http://stackoverflow.com/questions/16302382/single-point-ordered-crossover-in-matlab) –

回答

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)]; 
+0

我编辑你的答案!请检查一下! – roni

+0

你好,你能告诉我如何选择这样一种方式,选择更适合父母的可能性更高! – roni

+0

所以你想知道如何从矢量中挑选一个元素,其中被选中的概率与幅度成正比?我建议你尝试一下,如果你不能,那就作为一个新问题提出来。 – Dan