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