Начальные генетические параметры программирования

Я сделал немного GP (note:very мало), работают в колледже и играли вокруг с ним недавно. Мой вопрос в отношении начальных настроек выполнения (численность населения, количество поколений, минимальной глубины / макс. глубины деревьев, минимальной глубины / макс. глубины начальных деревьев, проценты для использования для различных операций воспроизведения, и т.д.). Какова нормальная практика для установки этих параметров? Какие бумаги/сайты люди используют в качестве хорошего руководства?

9
задан Jon Seigel 17 May 2010 в 04:21
поделиться

4 ответа

Вы обнаружите, что это очень сильно зависит от вашей проблемной области - в частности, от характера фитнес-функции, вашей реализации DSL и т. Д.

Из личного опыта:

  • Большие размеры популяции, похоже, работают {{1 }} лучше, когда у вас есть шумная функция пригодности , я думаю, это потому, что рост подгрупп в популяции в течение последующих поколений действует , чтобы дать больше выборок { {1}} фитнес-функция. Я обычно использую 100 для менее шумных / детерминированных функций, 1000 + для шумных.
  • По количеству поколений лучше всего измерить улучшения функции пригодности и прекратить, когда она соответствует вашим целевым критериям. Обычно я использую несколько сотен поколений и смотрю, какие ответы приходят, если нет улучшений, значит, у вас, вероятно, проблема в другом месте.
  • Требования к глубине дерева действительно зависят от вашего DSL. Иногда я пытаюсь реализовать без явных ограничений, но наказываю или исключаю программы, которые работают слишком долго (что, вероятно, то, что вас действительно волнует .. ..). Я также обнаружил, что общее количество узлов ~ 1000 является весьма полезными жесткими ограничениями.
  • Кажется, что процентные значения для различных операторов мутации / рекомбинации не имеют большого значения. Пока у вас есть исчерпывающий набор мутаций, любое разумно сбалансированное распределение обычно будет работать. Я думаю, что причина этого в том, что вы в основном занимаетесь поиском благоприятных улучшений, поэтому основная цель - просто убедиться, что пробные улучшения достаточно хорошо распределены по всем возможностям.
3
ответ дан 4 December 2019 в 23:38
поделиться

Взгляните на объемные фолианты Козы по этим вопросам.

0
ответ дан 4 December 2019 в 23:38
поделиться

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

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

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

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

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

1
ответ дан 4 December 2019 в 23:38
поделиться

Почему бы вам не попробовать использовать генетический алгоритм для оптимизации этих параметров для вас? :)

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

-Дэвид Дж. Уиллер

2
ответ дан 4 December 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: