2013-07-17 144 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