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

Смежные вопросы