2015-11-03 5 views
1

Обычно введение в генетические алгоритмы включает двоичное представление для индивидуумов, где мутации происходят путем перевертывания битов. Существуют ли какие-либо другие представления, которые обычно используются?Индивидуальное представление генетического алгоритма

Двоичные представления кажутся неудобными, если вы хотите начать с решения определенных десятичных значений. Существуют ли какие-либо другие схемы представления людей в десятичной форме?

+1

Вам не требуется двоичное представление. Вам просто нужно сформулировать каждое решение как совокупность отдельных узлов, которые можно объединить вместе, а затем применить функцию пригодности для каждой конкретной комбинации. –

ответ

1

Линейное двоичное представление является исходным представлением, но есть много других хорошо известных альтернатив.

У вас могут быть массивы других типов, которые могут использоваться по существу таким же образом.

Вы также можете смешивать типы. Например. конкатенирование нескольких типов гетерогенно кодированных генов позволяет ...

... для решения задач оптимизации, требующих значительно разрозненных областей определения для параметров проблемы. Например, в задачах каскадной настройки контроллера структура внутреннего контроллера цикла может принадлежать обычному регулятору из трех параметров, тогда как внешний цикл может реализовывать лингвистический контроллер (такой как нечеткая система), который имеет по-разному описание. Эта конкретная форма кодирования требует специализированного механизма кроссовера, который рекомбинирует хромосому по разделам и является полезным инструментом для моделирования и моделирования сложных адаптивных систем, особенно эволюционных процессов.

(от Wikipedia)

Просто назвать пример, Differential evolution основан на реальных оцененных векторов и может превзойти «стандартные» Генетические алгоритмы на многих численных задач оптимизации (также см What's differential evolution and how does it compare to a genetic algorithm?).

Редкими изменениями являются длина представления (также были исследованы представления переменной длины, но реализация кроссовера сложнее).

1

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

Я написал blog post о проблемах с двоичным представлением при работе с числами с плавающей запятой. Решение состоит не в том, чтобы представлять числа в двоичном формате, а в том, чтобы использовать числа непосредственно как парто генотипа. Как только ваш генотип представляет собой последовательность действительных чисел (в отличие от последовательности 0s и 1s), ваши операторы мутации и рекомбинации резко меняются - вы обычно используете стохастические процедуры для генерации и комбинирования новых решений.

Другой пример - генетическое программирование на основе дерева - опять же, это не что иное, как генетический алгоритм, в котором представление отличное от двоичной строки. Хотя это гораздо сложнее, чем обычная GA, это все та же идея - представление с определением оператора кроссовера и мутации.

Другой подход - процедура генотипа-фенотипа. Возьмите, например, Алгоритм грамматической эволюции. Он выполняет генетическое программирование, но представление, которое было изменено во время эволюции, представляет собой двоичную строку (но переменную длину), а контекстная грамматика используется для перевода ее в программу.

Возможности бесконечны :).

Смежные вопросы