Переходите к оригинальной гораздо более длинной статье по рабочим ссылкам.
Предостережения в изобилии
Для читателей моей первой статьи на эту тему, в которой я пытался по-новому взглянуть на производительность оптимизатора, здесь есть некоторые знакомые символы и нет больших сюрпризов — хотя я повторяю предостережение, что некоторые приемы (например, суррогатная) может быть одобрена несколько стилизованными целевыми функциями, которые я использую здесь.
Гибкость некоторых пакетов (например, параллелизм, дискретная оптимизация, вложенные домены и т. д.) не может блистать. Моя цель не в том, чтобы преуменьшить хитрость конструктивных особенностей этих библиотек. По мере введения большего количества реальных целевых функций будет интересно посмотреть, как изменится Эло. Я отсылаю вас к текущей таблице лидеров, так как я не буду пытаться обновлять здесь рекомендации вручную.
Новые включения в Facebook работают довольно хорошо, что является облегчением, учитывая, что я вроде как испортил их фирменный пакет временных рядов (гм). В прошлом году они организовали открытый конкурс на улучшение Nevergrad и IOHprofiler (ссылка).
Мой новый выбор — dlib. Он использует подход, разработанный Малербом и Вайатисом (бумага), как отмечалось выше, который является элегантным. В блоге есть красивое видео и очень понятное объяснение. Мало того, что производительность чрезвычайно высока, но и время выполнения, вероятно, будет незначительным для любых реальных, дорогих целевых функций. Библиотека не позволит вам запускать задачи с более чем 34 измерениями, но это, похоже, единственное ограничение.
Некоторым оптимизаторам, в том числе SHGO, очень трудно ограничить себя фиксированным количеством оценок, и это может повредить им в очных матчах при игре черными. Будет ли это наказание считаться справедливым, зависит от ваших потребностей. Прочтите о методологии Эло, чтобы углубиться в это замечание.
Рекомендательные утилиты лучше моих советов
Напомню, что вы можете поискать в разделе humpday/comparison утилиты, которые сгенерируют рекомендуемые оптимизаторы. Они так же хороши, как и рейтинги Elo категорий, которые стоят за ними, которым требуется больше времени для уравновешивания, но, скажем, вам нужен быстрый совет о том, какие оптимизаторы лучше всего работают в 8-мерных задачах, когда им дают 130 оценок функций для игры. Возможно, вы хотите ограничить общее время вычислений оптимизатора (в отличие от целевой функции) до 5 минут.
from humpday.comparison.suggestions import suggest
from pprint import pprint
pprint(suggest(n_dim=8, n_trials=130, n_seconds=300))
Или это:
from humpday import recommend
def my_objective(u): time.sleep(0.01) return u[0]*math.sin(u[1])
recommendations = recommend(my_objective, n_dim=21, n_trials=130)
Надеюсь, это ускорит ваш поиск или побудит вас попробовать некоторые пакеты, которые вы иначе пропустили бы.
О, и теперь есть документы!