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

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

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

5 ответов


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

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

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

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

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

1+x*3-5*6

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

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

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

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

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

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

практические различия

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

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

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

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

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

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


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


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

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

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


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