2015-09-11 16 views
0

Пожалуйста, исправьте меня, если я ошибаюсь, но я понимаю, что кроссоверы, как правило, приводят к локальным оптимумам, в то время как мутация увеличивает случайное блуждание поиска, тем самым, как правило, помогает избежать тенденций на локальном оптимальном уровне. Это понимание я получил от чтения: Introduction to Genetic Algorithms и Wikipedia's article on Genetic Operators.Объединение нескольких генетических операторов

Мой вопрос: какой лучший или самый идеальный способ выбрать, какие люди проходят кроссовер и которые проходят мутацию? Есть ли правило для этого? Каковы последствия?

Заранее спасибо. Это довольно конкретный вопрос, который немного сложно для Google (для меня как минимум).

ответ

1

Отбор лиц для участия в работе кроссоверов должны учитывать приспособленность, то есть «лучшие люди более вероятно, будут иметь больше детей программ, чем низших лиц.»: http://cswww.essex.ac.uk/staff/rpoli/gp-field-guide/23Selection.html#7_3

Самый распространенный способ выполнить это использует выбор турнира (см. wikipedia).

Отбор людей для мутации не должен учитывать пригодность, по сути, должен быть случайным. А число элементов мутировавших на поколения (скорость мутации) должно быть очень низким, около 1% (или он может упасть в случайный поиск): http://cswww.essex.ac.uk/staff/rpoli/gp-field-guide/24RecombinationandMutation.html#7_4

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

+0

Это отличный ответ. Возможно, это пропустило это в моих лекциях или еще что-то. Но ваше замечание относительно мутации и того, как это должно произойти только по очень низкой скорости, - это то, что мой профессор мог пропустить. Благодаря! – oaskamay

+0

Я никогда не выбирал людей для мутации случайным образом. Мои GA обычно выбирают человека, а затем определяют, происходит ли кроссовер. Если это так, я выбираю другого человека и пересекаю его, производя ребенка (ren). Затем для каждого из детей (или первого выбранного человека, если xover не произошло), я определяю, будет ли он мутировать. Подводя итог, каждый индивид 1) не пересекается, не мутируется или 2) пересекается, не мутируется или 3) не пересекается, не мутируется или 4) не пересекает и не мутирует. GA - это своего рода алхимия, вам просто нужно попробовать, что работает для вашего домена. – zegkljan

+0

Если вы «посещаете» людей один за другим, как вы можете определить, могут ли они участвовать в кроссовере? Я имею в виду, это звучит сложно, не зная относительной пригодности. –