Подтвердить что ты не робот

Каковы различия между генетическими алгоритмами и генетическим программированием?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

1+x*3-5*6

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

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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