В колледже я немного поработал (примечание: очень мало) и недавно поиграл с этим. Мой вопрос касается начальных настроек запуска (размер популяции, количество поколений, минимальная/максимальная глубина деревьев, минимальная/максимальная глубина начальных деревьев, проценты для использования для различных операций воспроизведения и т. д.). Какова обычная практика установки этих параметров? Какие документы/сайты люди используют в качестве хорошего руководства?
Исходные параметры генетического программирования
Ответы (5)
Вы обнаружите, что это очень сильно зависит от вашей проблемной области, в частности от характера фитнес-функции, вашей реализации DSL и т. д.
Немного личного опыта:
- Кажется, что большие размеры популяции работают лучше, когда у вас есть шумная фитнес-функция, я думаю, это потому, что рост подгрупп в популяции в последующих поколениях дает больше выборок фитнес-функции. Я обычно использую 100 для менее шумных/детерминированных функций, 1000+ для шумных.
- Для количества поколений лучше всего измерять улучшения в фитнес-функции и останавливаться, когда она соответствует вашим целевым критериям. Обычно я запускаю несколько сотен поколений и смотрю, какие ответы выходят, если они не показывают никаких улучшений, то, вероятно, у вас есть проблема в другом месте.
- Требования к глубине дерева действительно зависят от вашего DSL. Иногда я пытаюсь реализовать реализацию без явных ограничений, но наказываю или удаляю программы, которые работают слишком долго (вероятно, это то, что вас действительно волнует...). Я также обнаружил, что общее количество узлов около 1000 является весьма полезным жестким ограничением.
- Проценты для различных операторов мутации/рекомбинации, похоже, не имеют большого значения. Пока у вас есть полный набор мутаций, обычно работает любое разумно сбалансированное распределение. Я думаю, причина этого в том, что вы в основном ищете благоприятные улучшения, поэтому основная цель — просто убедиться, что пробные улучшения достаточно хорошо распределены по всем возможностям.
Почему бы вам не попробовать использовать генетический алгоритм для оптимизации этих параметров для вас? :)
Любая проблема в информатике может быть решена с помощью еще одного уровня косвенности (за исключением слишком большого количества уровней косвенности).
-Дэвид Дж. Уилер
Когда я начал изучать генетические алгоритмы, у меня был тот же вопрос.
Я хотел собрать данные, изменяющие параметры для очень простой задачи, и связать данные операторы и значения параметров (такие как скорость мутации и т. д.) с заданными результатами в зависимости от размера популяции и т. д.
Как только я начал немного больше вникать в ГА, я понял, что, учитывая огромное количество переменных, это огромная задача, а обобщение чрезвычайно сложно.
говоря из моего (ограниченного) опыта, если вы решите упростить проблему и использовать фиксированный способ реализации кроссовера, отбора и просто играть с размером популяции и скоростью мутации (реализованной заданным образом), пытаясь получить общие результаты, вы скоро поймете, что слишком много переменных все еще играет роль, потому что в конце концов количество поколений, после которых статистически вы получите достойный результат (независимо от того, как вы хотите определить достойный), по-прежнему очевидно зависит в первую очередь от проблемы, которую вы решаете, и, следовательно, от размера генома (представление одной и той же проблемы по-разному, очевидно, приведет к разным результатам с точки зрения влияния заданных параметров ГА!).
Безусловно, можно разработать набор руководящих принципов — как доказывает литература (редкая, но хорошая), — но вы сможете эффективно обобщать результаты в статистических терминах только тогда, когда решаемая задача может быть закодирована точно таким же образом и пригодность оценивается каким-то эквивалентным образом (что чаще всего означает, что вы столкнулись с очень похожей проблемой).
Взгляните на многотомные тома Козы по этим вопросам.
Существуют очень разные точки зрения даже в сообществе врачей общей практики. Некоторые считают численность населения в (небольшие) тысячи достаточными, в то время как Коза и другие часто не считают достойным запускать программу общей практики с менее чем миллионом человек в популяции врачей общей практики. ;-)
Как упоминалось ранее, это зависит от вашего личного вкуса и опыта, ресурсов и, возможно, используемой системы GP!
Привет, Ян