2016-05-10 4 views
1

Какова вероятность кроссовера в генетическом алгоритме?Вероятность кроссовера в генетических алгоритмах

Общая процедура генетического алгоритма: генерируется (source)

Во-первых начальная популяция. Затем используется метод выбора (в данном случае выбор турнира), чтобы выбрать пару лиц, которые создадут пару детей.

Дети добавляются к детской популяции до тех пор, пока ее размер не достигнет желаемого значения.

Следующий шаг - объединить население родителей размера N и детского населения с размером M, либо путем замены одного на другого, сохраняя лучших N лиц из обеих популяций.

N = population size 
P = create parent population by randomly creating N individuals 
while not done 
    C = create empty child population 
    while not enough individuals in C 
     parent1 = select parent ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION ***** 
     parent2 = select parent ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION ***** 
     child1, child2 = crossover(parent1, parent2) 
     mutate child1, child2 
     evaluate child1, child2 for fitness 
     insert child1, child2 into C 
    end while 
    P = combine P and C somehow to get N new individuals 
end while 

Конечно, мы могли бы выполнить мутацию с заданной вероятностью, например, каждые 1 из 100 детей будут мутировал.

Но я не вижу точки кроссовера. Что происходит, когда пары родителей выбираются при выборе турнира, а кроссовер не происходит? Должны ли родители быть добавлены к детскому населению? В этом случае мы получим двойных членов в родительском и детском населении.

Целью здесь является создание как можно большего количества детей в каждом поколении, и это должно произойти с помощью кроссовера. Как изменить этот алгоритм так, чтобы скорость кроссовера имела смысл?

Если вероятность кроссовера равна 100%, то все потомки производятся кроссовером . Если это 0%, все новое поколение производится из точных копий хромосом из старой популяции (но это не означает, что новое поколение !). Source

Если вероятность Кроссовер 0%, то целое поколение состоит из точных копий хромосомы от старого населения. Тогда как получилось, что новое поколение не такое же?

+0

«Тогда почему новое поколение не то же самое?» Мутация. –

+0

@JohnColeman говорит, что новые хромосомы являются точными копиями хромосом от старого населения, так что, конечно же, нет. – user5539357

+0

Они, вероятно, ошибаются, но даже если обе мутации и вероятности будут установлены в 0, не каждый представитель населения будет воспроизводить, поэтому население в целом по-прежнему будет меняться. –

ответ

1

Это зависит от применения, генетические алгоритмы не должны быть реализованы строго. Вы можете видеть, что в псевдокоде есть много неопределенных утверждений.

В этом примере, если кроссовер не происходит, родители и дети одинаковы, и шаг мутации применяется, как обычно. Это не проблема, потому что основной цикл будет оцениваться столько раз, что будет достаточно переходов. Основная цель заключается в улучшении обучения, создание большого количества детей может не всегда достигать этой цели в каждом приложении.

Примером является то, что агрессивный кроссовер может фактически испортить некоторых действительно хороших родителей, чтобы качество обучения могло уменьшиться. Частота кроссовера может в некоторой степени защитить, но, как я сказал, это зависит от приложения.

Лучший.

+0

Предположим, что желаемый размер популяции равен N, каждое поколение. Мы можем просто запустить цикл от 1 до N и каждый раз находить пару родителей (используя выбор турнира), выполнять кроссовер с заданной вероятностью, а если это произойдет, выполнить мутацию с заданной вероятностью - и добавить обоих детей к совокупности следующее поколение. Если бы кроссовер не произошел, я мог бы добавить обоих родителей к популяции следующего поколения. Думаю, это имеет смысл? – user5539357

0

Все дети нового поколения являются «клонами» одного родителя в старом поколении. Но даже если у вас 4 родителя с хромосомами «A, B, C, D», у вас может быть 6 детей, у которых хромосомы «A, A, A, C, C, D», поэтому они не одинаковы.

PS: И, конечно, если применяется мутация, то разница еще больше.

+0

Итак, предположим, что я выбираю двух родителей для кроссовера и решаю, выполнять ли кроссовер или нет. Если в решении нет, то следует ли добавить клонов обоих родителей к новому населению? Но если я получу это правильно, я все равно могу выполнить мутацию на этих клонах. – user5539357

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

  • Нет связанных вопросов^_^