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

StackOverflow https://stackoverflow.com/questions/1075628

  •  21-08-2019
  •  | 
  •  

Вопрос

Некоторые структуры генетических алгоритмов, такие как http://www.aforgenet.com/ требует многих параметров, таких как частота мутаций, размер популяции и т. д.

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

Есть идеи получше?

Это было полезно?

Решение

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

Другие советы

Я считаю, что полезно думать об этих проблемах как о ландшафте, в котором вы пытаетесь найти самую низкую точку.

Такие методы, как генетические алгоритмы, используются, когда ландшафт слишком велик, чтобы просто проверить все точки, а «форма» ландшафта такова, что методы вроде градиентного спуска заставят вас застрять в локальных минимумах.

Хорошим примером является функция Растригина (ссылка на изображение): alt text
(источник: Scientific-Computing.com)
:

Ваш выбор:

Размер поколения:

  • Слишком большой:У вас будет длительное время эпоха, ограничивая, сколько шансов каждый человек должен исследовать его район.
  • Слишком маленький:Вы не получаете хорошего покрытия места поиска.

Скорость мутации:

  • Слишком высоко:Вы рискуете людям «прыгать» из -за решения, к которому они были близки.
  • Слишком низко:Все они собираются застрять в местных минимумах.

Так что это действительно зависит от вашего конкретного пространства поиска.Экспериментируйте с параметрами и постарайтесь найти оптимальное сочетание.Я согласен, что использование другого ГА для оптимизации параметров не решит проблему.

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

Кроме того, Теорема об отсутствии бесплатных обедов ни в коем случае не мешает вам найти лучшие параметры, так как уже была дискуссия, оспаривающая этот факт:

Существует два типа настройки параметров:

  • Настройка параметров (поиск параметров в автономном режиме — до запуска ГА)
  • Управление параметрами (настройка параметров онлайн – во время запуска GA)
    • Адаптивный
    • Самоадаптирующийся
    • Детерминированный

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

Вот несколько примеров для поиска «лучших» параметров:

Настройка параметров:

Контроль параметров:

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

Это непросто.

Почему?Из-за Нет бесплатного обеда теорема.По сути это означает, что нет общий алгоритм поиска, который хорошо работает для все проблемы.

Лучшее, что вы можете сделать, это настроить поиск по специфический Проблемное пространство.Вам придется вручную настроить параметры в соответствии с вашим решением.Извини.

Использование ГА для поиска параметров ГА усложняется.Как найти оптимальные параметры для поиска GAGA?Еще один ГА...?

На самом деле не существует автоматического способа сделать это для данного набора данных.Если бы они были, они бы не раскрывали эти параметры.Использование второго ГА для настройки параметров первого ГА опасно — используете ли вы третий ГА для настройки параметров второго?Даже если вы это сделали, в любом случае это рецепт переобучения.

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

Грязная тайна ГА заключается в том, что их настройка – это искусство, а не наука.

Как сказали все остальные, однозначного ответа нет.Хотя существует некоторая тенденция использовать скорость кроссовера на уровне 0,7-0,9 и мутацию на уровне 0,1-0,3, это действительно зависит.Зависит от проблемы, может зависеть от функции приспособленности и определенно зависит от самого генетического алгоритма.Вариаций ГА множество, оптимальные параметры для одной и той же задачи могут различаться.

Что касается использования ГА для настройки параметров целевого ГА, то такие подходы есть, но, как было указано, как настроить параметры первого ГА?Имейте в виду, что, возможно, скорость мутаций вначале должна быть выше, а затем снижаться, в то время как скорость кроссинговера должна увеличиваться.Это вопрос разведки и эксплуатации.Существуют подходы, позволяющие сделать GA более адаптивным и позволить ему изменять свои параметры по мере поиска решения.Нечеткие контроллеры иногда используются для управления параметрами ГА.Есть и другие подходы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top