Каковы различия между генетическими алгоритмами и стратегиями эволюции? - PullRequest
18 голосов
/ 17 октября 2011

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

Каковы различия между генетическими алгоритмами и стратегиями эволюции? Что отличает их, и где они похожи?

Ответы [ 5 ]

22 голосов
/ 20 октября 2011

В стратегиях эволюции индивиды кодируются как векторы действительных чисел.При воспроизведении родители выбираются случайным образом, а наиболее подходящие потомки отбираются и вставляются в следующее поколение.Индивидуумы ES самоадаптируются.Размер шага или «сила мутации» кодируется в индивидууме, поэтому хорошие параметры получают следующее поколение, выбирая хороших индивидуумов.

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

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

3 голосов
/ 08 мая 2013

В большинстве новых учебников по GA реальное кодирование вводится как альтернатива целочисленному, то есть индивиды могут кодироваться как векторы действительных чисел.Это называется непрерывным параметром GA (см., Например, Haupt & Haupt, "Practical Genetic Algorithms", J.Wiley & Sons, 1998).Так что это практически идентично кодированию реальных чисел ES.

Что касается выбора родителей, то для ГА опубликовано много разных стратегий.Я не знаю их всех, но я предполагаю выбор среди всех (не только лучшее использовалось для некоторых приложений).

1 голос
/ 09 января 2019

Просто наткнулся на эту тему при исследовании Evolution Strategies (ES).

Как заметил Пол ранее, кодировка здесь не является большой разницей, поскольку это деталь реализации конкретных алгоритмов, хотя в ES она встречается чаще.

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

Индивид k состоит из двух частей:

  • y (k) - набор параметров объекта (например, вектор значений real / int), которые обозначают отдельный генотип
  • s (k) - набор параметров стратегии (например, вектор значений real / int снова), которые, например, может контролировать статистические свойства мутации)

Эти два вектора отбираются, мутируют, рекомбинируют вместе .

Основное различие между GA и ES состоит в том, что в классическом GA нет различия между типами параметров алгоритма. Фактически все параметры устанавливаются «извне», поэтому в терминах ES они экзогенные.

Есть и другие незначительные различия, например, в ES политика выбора обычно одна и та же, а в GA есть несколько разных подходов, которые можно менять.

Более подробное объяснение вы можете найти здесь (см. Главу 3): Стратегии эволюции. Комплексное введение

0 голосов
/ 18 октября 2011

Как сказал источник из Википедии (http://en.wikipedia.org/wiki/Genetic_algorithm) и @Vaughn Cato), разница в обоих методах зависит от реализации. Использование EA действительные числа и GA используют целые числа.

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

0 голосов
/ 17 октября 2011

Основное различие заключается в том, что генетический алгоритм представляет решение, использующее последовательность целых чисел, тогда как в стратегии эволюции используется последовательность действительных чисел - ссылка: http://en.wikipedia.org/wiki/Evolutionary_algorithm#

...