Переходите к оригинальной гораздо более длинной статье по рабочим ссылкам.

Предостережения в изобилии

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

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

Новые включения в 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)

Надеюсь, это ускорит ваш поиск или побудит вас попробовать некоторые пакеты, которые вы иначе пропустили бы.

О, и теперь есть документы!