我想實現遺傳算法。我正在嘗試實施單階交叉。我無法這樣做。請幫忙!matlab交叉遺傳算法
想這是我的人口
new_pop =
0000011001
0000011001
0000000100
0000011001
0000011001
0000010001
我想隨機選擇從該組2個父母做單階分頻器。我上面給出的集合是有序的,也就是說,鉗工個體被放置在上面。我該如何做單階交叉?
任何幫助將不勝感激!
我想實現遺傳算法。我正在嘗試實施單階交叉。我無法這樣做。請幫忙!matlab交叉遺傳算法
想這是我的人口
new_pop =
0000011001
0000011001
0000000100
0000011001
0000011001
0000010001
我想隨機選擇從該組2個父母做單階分頻器。我上面給出的集合是有序的,也就是說,鉗工個體被放置在上面。我該如何做單階交叉?
任何幫助將不勝感激!
這裏的東西,讓你開始:
%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)];
,如果它是不明確的,我會編輯的問題! – roni
相關問題:[單點有序交叉在matlab](http://stackoverflow.com/questions/16302382/single-point-ordered-crossover-in-matlab) –