Проблема в GA заключается в слишком быстром сужении области поиска и достижении локального максимального решения. Вы должны убедиться, что вы не ведете свое решение каким-либо образом, кроме как в функции выбора/фитнеса. Поэтому, когда вы говорите,
зачем брать хорошее решение, а затем выполнять функцию, которая, скорее всего, сделает его хуже?
, причина в том, что вы ХОТИТЕ, чтобы решение сделало шаг назад, скорее всего, оно должно ухудшиться, прежде чем оно станет лучше. Так что на самом деле вы должны убрать любую логику суждений из своих генетических операторов, предоставив это процессу отбора.
Кроме того, скрещивание и мутация должны рассматриваться как два разных способа создания дочерней особи, вы должны использовать один или другой. На практике это означает, что у вас есть шанс выполнить либо мутацию одного родителя, либо скрещивание двух родителей. Обычно вероятность мутации составляет всего 5%, а скрещивание используется для получения остальных 95%.
Кроссовер сохраняет генетическую информацию от обоих родителей (дети — зеркальные отражения), поэтому один ребенок будет хуже родителей, а другой лучше (или оба одинаковы). Так что в этом смысле с кроссовером, если есть изменения, вы всегда получите лучшего человека.
Мутация, с другой стороны, не дает никаких гарантий лучшего индивидуума, но она существует с целью введения новых данных, помогающих отодвинуть ГА от сценария локальных максимумов. Если мутация не улучшает индивидуума и делает его хуже, то у него все равно меньше шансов быть выбранным для воспитания ребенка (т. е. вам не нужна эта логика в самом операторе мутации).
вы выбираете лучшего для мутации
Это не совсем верно, у хороших людей должен быть более высокий ШАНС быть выбранным. Здесь есть тонкая разница в том, что ПЛОХИЕ люди также могут быть выбраны в качестве родителей. Опять же, это помогает уменьшить вероятность достижения решения с локальным максимумом. Это также означает, что лучший человек в своем поколении может (и часто так и происходит) стать еще хуже. Чтобы решить эту проблему, мы обычно реализуем «элитизм», при котором лучший индивидуум всегда копируется в следующее поколение (при этом он не подвергается никаким операциям).
Также было бы полезно, если бы я мог прокомментировать, какие генетические операторы вы используете. По своему опыту я обнаружил, что кроссовер цикла и инверсионная мутация хорошо работают.
person
M. Mansell
schedule
16.01.2018