Техника кроссовера в генетическом алгоритме

Я нахожусь в процессе написания небольшой структуры генетического алгоритма на C++. Мои хромосомы закодированы в виде битовых строк, где каждый ген имеет заранее определенный размер. Каждая хромосома хранит свои гены один за другим в битовой строке. Теперь я ищу реализацию оператора кроссовера.

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


person Philip Bennefall    schedule 05.12.2013    source источник


Ответы (2)


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

person lucas92    schedule 05.12.2013
comment
Поэтому я использую границы генов и всегда меняю местами целые гены, а не их биты. Это достаточно просто. Спасибо! - person Philip Bennefall; 06.12.2013
comment
Я реализовал его на Python, чтобы разместить регуляторы напряжения в оптимальных местах распределительных сетей с помощью CYME. Однако он был недостаточно эффективен по сравнению с базовым последовательным алгоритмом. - person lucas92; 06.12.2013
comment
Я бы сказал, что это странно. Поправьте меня, если я ошибаюсь, но я бы не сказал, что тело — при размножении — имеет способ узнать, где начинается и заканчивается ген. Поэтому я бы предложил рассматривать наименьшую единицу как аллель, а не как ген. - person pingul; 24.12.2013

Ответ на этот вопрос лучше всего понять, рассмотрев биологические процессы, на которых основана ГА.

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

введите здесь описание изображения

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

person Roney Michael    schedule 12.12.2013