2016-05-15 7 views
0

Angenommen, ich habe zwei Eltern Zeilen.Code für genetischen Algorithmus Cross-Over in Matlab

Mutter 1: 3-1-2-5-4
Elternteil 2: 1-4-5-2-3

Jetzt, nach Cross-Over, möchte ich folgendes Kind Reihen haben:

Kind 1: 1-4- | 2-5 | -3
Kind 2: 3-1- | 5-2 | -4

Eine einzelne Position Cross-Over durch bezeichnet werden "|". Bitte, wenn es einen Code gibt, der mir die obigen Kindsequenzen gibt.

Antwort

0

Verwendung:

%initilizes parents 
parent1 = [3 1 2 5 4]; 
parent2 = [1 4 5 2 3]; 

%determines which rows should be swapped 
rowsToSwap = [3 4]; 

%generates child1 and child2 
child1 = parent2; 
child1(rowsToSwap) = parent1(rowsToSwap); 
child2 = parent1; 
child2(rowsToSwap) = parent2(rowsToSwap); 

Ergebnisse:

child1 = 

3  1  5  2  4 

child2 = 

1  4  2  5  3 

In diesem Code-Schnipsel, rowsToSwap sind hart codded bestimmt.

rowsToSwap = randsample(1:length(parent1),2) 
+0

dank drorco, ja, es funktioniert: , wenn Sie möchten, können Sie sie mit Hilfe randsample Funktion zufällig wählen. – Jelly

Verwandte Themen