В принципе, генотип может быть сделан из всего, что вы хотите, чтобы оно было сделано. Единственный улов заключается в том, что он должен быть «эволюционирующим», т. Е. Должен быть определен определенный оператор рекомбинации и мутации (или, по крайней мере, мутация). Пока у вас есть это, вы можете идти.
Я написал blog post о проблемах с двоичным представлением при работе с числами с плавающей запятой. Решение состоит не в том, чтобы представлять числа в двоичном формате, а в том, чтобы использовать числа непосредственно как парто генотипа. Как только ваш генотип представляет собой последовательность действительных чисел (в отличие от последовательности 0s и 1s), ваши операторы мутации и рекомбинации резко меняются - вы обычно используете стохастические процедуры для генерации и комбинирования новых решений.
Другой пример - генетическое программирование на основе дерева - опять же, это не что иное, как генетический алгоритм, в котором представление отличное от двоичной строки. Хотя это гораздо сложнее, чем обычная GA, это все та же идея - представление с определением оператора кроссовера и мутации.
Другой подход - процедура генотипа-фенотипа. Возьмите, например, Алгоритм грамматической эволюции. Он выполняет генетическое программирование, но представление, которое было изменено во время эволюции, представляет собой двоичную строку (но переменную длину), а контекстная грамматика используется для перевода ее в программу.
Возможности бесконечны :).
Вам не требуется двоичное представление. Вам просто нужно сформулировать каждое решение как совокупность отдельных узлов, которые можно объединить вместе, а затем применить функцию пригодности для каждой конкретной комбинации. –