Каковы различия между генетическими алгоритмами и генетическим программированием? - PullRequest
24 голосов
/ 29 сентября 2010

Я хотел бы получить простое объяснение различий между генетическими алгоритмами и генетическим программированием (без слишком большого жаргона программирования). Примеры также будут оценены.

По-видимому, в генетическом программировании решениями являются компьютерные программы. С другой стороны, генетические алгоритмы представляют решение в виде цепочки чисел. Есть другие отличия?

Ответы [ 6 ]

40 голосов
/ 29 сентября 2010

Генетические алгоритмы (GA) - это алгоритмы поиска, которые имитируют процесс естественной эволюции, где каждый индивид является подходящим решением: индивиды, как правило, являются «необработанными данными» (в любом формате кодировки, который был определен).

Генетическое программирование (GP) считается частным случаем ГА, где каждый человек - это компьютерная программа (а не просто «необработанные данные»). GP исследует алгоритмическое пространство поиска и развивают компьютерные программы для выполнения определенной задачи.

20 голосов
/ 07 января 2016

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

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

Структурные различия

Основным отличием между ними является представление алгоритма / программы.

A генетический алгоритм представлен в виде списка действий и значений, часто в виде строки. например:

1+x*3-5*6

Для этой кодировки должен быть написан синтаксический анализатор, чтобы понять, как превратить это в функцию. Результирующая функция может выглядеть так:

function(x) { return 1 * x * 3 - 5 * 6; }

Синтаксическому анализатору также необходимо знать, как обращаться с недопустимыми состояниями, поскольку операции мутации и пересечения не заботятся о семантике алгоритма, например, может быть получена следующая строка: 1+/3-2*. Необходимо принять решение, чтобы справиться с этими недействительными состояниями.

A генетическая программа представлена ​​в виде древовидной структуры действий и значений, обычно это вложенная структура данных. Вот тот же пример, проиллюстрированный в виде дерева:

      -
   /     \
  *       *
 / \     / \
1   *   5   6
   / \
  x   3

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

Практические отличия

Генетические алгоритмы

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

Генетические программы

  • По своей природе имеют переменную длину, что означает, что они более гибкие, но часто усложняются
  • Редко выдает недопустимые состояния, обычно их можно отбросить
  • Использовать явную структуру, чтобы полностью исключить приоритет операторов
0 голосов
/ 09 апреля 2019

Много хороших частичных ответов выше. Как сказал Коза в своих оригинальных текстах на эту тему, «[если бы ГА было лучшим решением проблемы, то ГП разработал бы ГА для ее решения]». Проще говоря, GP - это тип GA, который развивает программы, которые оцениваются функцией стоимости. Тот факт, что геном является программой, а не набором входных данных для функции стоимости ИМХО, является существенным отличием.

https://en.wikipedia.org/wiki/Genetic_programming

0 голосов
/ 03 декабря 2013

генетическое программирование намного мощнее, чем генетические алгоритмы.результат генетических алгоритмов - это количество, а результат генетического программирования - другая компьютерная программа.

0 голосов
/ 29 сентября 2010

Проще говоря, (по моему мнению), Генетическое Программирование - это применение Генетического Алгоритма.Генетический алгоритм используется для создания другого решения с помощью компьютерной программы.

0 голосов
/ 29 сентября 2010

Практический ответ:

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

GP - это когда по известному определению проблемы генерировать код для лучшего решения проблемы. (GP обычно дает много утверждений if / else, которые объяснят решение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...