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

Я нахожу проблему с методом getDate () / setDate () в том, что он слишком легко превращает все в миллисекунды, и мне иногда сложно следовать синтаксису.

Вместо этого мне нравится отрабатывать тот факт, что 1 день = 86 400 000 миллисекунд.

Итак, для вашего конкретного вопроса:

today = new Date()
days = 86400000 //number of milliseconds in a day
fiveDaysAgo = new Date(today - (5*days))

Работает как шарм.

Я все время использую этот метод для расчета 30/60/365 дней.

Вы можете легко экстраполировать это, чтобы создать единицы времени для месяцев, лет и т. Д.

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

5 ответов

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

5
ответ дан 8 December 2019 в 02:09
поделиться

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

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

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

Ваш выбор:

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

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

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

  • Слишком высокая: вы рискуете индивидуумами "перепрыгивая" через решение, которое они рядом с.
  • Слишком низко: все они получат застрял в локальных минимумах.

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

17
ответ дан 8 December 2019 в 02:09
поделиться

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

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

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

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

7
ответ дан 8 December 2019 в 02:09
поделиться

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

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

Это грязный секрет ГА, что их настройка - это искусство, а не наука.

4
ответ дан 8 December 2019 в 02:09
поделиться

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

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

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

2
ответ дан 8 December 2019 в 02:09
поделиться
Другие вопросы по тегам:

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