Я в процессе написания небольшой генетической схемы алгоритма в C++. Мои хромосомы кодируются как битовые строки, где каждый ген имеет заданный размер. Каждая хромосома хранит свои гены один за другим в битовой строке. Теперь я ищу для реализации оператора кроссовера.Методика кроссовера в генетическом алгоритме
Мой вопрос в том, что, выбирая точку, после которой нужно вставлять биты из другой хромосомы, я делаю это на границе гена или просто обрабатываю хромосому как строку бит и игнорирую деление на гены? Другими словами, обрабатываю ли я наименьшую заменяемую единицу как ген или немного?
Таким образом, я использую границы генов и всегда заменяю целые гены, а не биты. Это достаточно просто. Благодаря! –
Я реализовал его в Python для размещения регуляторов напряжения в оптимальных местах в распределительных сетях с использованием CYME. Однако он был недостаточно эффективным по сравнению с основным «последовательным алгоритмом». – lucas92
Я бы сказал, что это странно. Поправьте меня, если я ошибаюсь, но я бы не сказал, что тело - при воспроизведении - имеет способ узнать, где ген начинается и заканчивается. Поэтому я бы предложил рассматривать наименьшую единицу как аллель, а не ген. – pingul