Существует фаза в генетическом алгоритме, где мы должны выбрать кроссовер хромосом от родителей к потомству.Как перекрещивать родителей при использовании метода кодирования значений в генетическом алгоритме?
Это легко сделать через двоичную форму.
Но что делать, если мы кодируем хромосомы, используя кодировку значений?
Скажем, один бит в моих хромосомах является значением типа DOUBLE, скажем, 0.99, его диапазон равен (0-1), так как он будет представлять вероятность.
Как выполнить кроссовер этого ДВОЙНОГО номера?
Конвертировать в двоичный код в кроссовер, а затем конвертировать обратно ...?
По вероятности вы имеете в виду, что каждая аллель хромосомы должна составлять 1? Или вы имеете в виду, что каждый аллель имеет свою собственную вероятность? Если это последний, вы, вероятно, можете просто сделать одноточечный кроссовер ... – DMML
@DMlash Привет, спасибо за ответ, каждый аллель имеет свою собственную вероятность. Как сделать одноточечный кроссовер против двойного типизированного значения? Я знаю, как это сделать против двоичного значения. –
Я полагаю, это зависит от проблемы, которую вы решаете, и имеет ли смысл иметь в этом смысл в первую очередь. Если это имеет смысл, то, как вы говорите, каждая хромосома представляет собой вектор вещественных аллелей длины n. Затем вы рисуете равномерное случайное значение в диапазоне от [1, n]; мы назовем это значение S. Для каждого из родителей вы держите аллели до положения пола (S) (т.е. если значение 5.333, то вы сохраняете элементы в позиции 1,2,3,4,5) и пересекают значения на потолке (S) до n позиций (Ie, 6,7,8, ..., n). – DMML