Перейти к основному содержимому

Глобальный → локальный (конвейер или pipeline)

КлассВоспроизводимостьСтартовая точкаСвёртка по полосе
связкадаиспользуетсялюбая

Воспроизводимость полная при любом выборе этапов: этап всегда работает с зерном случайных чисел по умолчанию, а собственные настройки методов глобального и локального этапа здесь не применяются (см. «Настройки этапа» ниже).

Назначение

Рекомендуемый метод по умолчанию для поиска в широких диапазонах:

  • этап 1 (глобальная разведка) находит перспективную область,
  • этап 2 (локальный дожим) уточняет лучшую точку в её окрестности; остаток бюджета расходуется на дожим следующих кандидатов (рестарты).

Повторные расчёты одинаковых геометрий исключаются кэшем и бюджет не тратят.

Алгоритм

Собственного алгоритма поиска у конвейера нет: это двухфазная схема над двумя методами каталога.

Общий бюджет B делится долей s (поле Доля глобального этапа): разведка получает s·B расчётов, остаток (1−s)·B и уходит на дожимы.

Разведка работает по всей области и нужна лишь для того, чтобы найти перспективные бассейны притяжения; дожим работает в окне вокруг кандидата x*

x[xr(xmaxxmin),x+r(xmaxxmin)]x \in [x^{\ast} - r (x_{\max} - x_{\min}), \quad x^{\ast} + r (x_{\max} - x_{\min})]

по каждой оси, где r — поле Радиус локального этапа. Сужение области — и есть главный приём схемы: локальному методу не приходится бороться с глобальным рельефом, а глобальному — доводить точку до допуска по параметрам.

Кандидаты дожима берутся из всех точек, посчитанных разведкой: список сортируется (допустимость, затем величина нарушения, затем F) и прореживается по расстоянию d (поле Мин. расстояние рестартов) — кандидат отбрасывается, если он ближе d к уже дожатому. Это тот же фильтр бассейнов, что у Мультистарта, но радиус здесь постоянный и задаётся пользователем, а не убывает по числу проб.

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

Поле Пресет

ПресетПоведение
Авто(рекомендуется)этапы подбираются автоматически (см. лестницу ниже). Поля Глобальный этап / Локальный этап недоступны для правки
Разведка → Дожимоба этапа задаются вручную в полях Глобальный этап / Локальный этап
Тщательныйкак Разведка → Дожим (та же ручная пара этапов, поля доступны), но рестарты по всем кандидатам разведки включены принудительно

Поля этапов при пресете Авто показывают не тот выбор, который будет сделан. Они остаются на паре, сохранённой в проекте, и только гаснут; фактические этапы вычисляются по лестнице ниже в момент запуска прогона, когда известны число переменных, режим агрегации и наличие жёстких ограничений. Какая пара действительно взята, видно в журнале решателя: блок старта печатает её строками «Глобальный этап» / «Локальный этап».

Лестница пресета Авто:

Какие методы доступны как этапы

Списки полей Глобальный этап / Локальный этап строятся из общего списка методов, поэтому названия в них совпадают с названиями в поле выбора метода.

Сам конвейер этапом быть не может и в этих списках отсутствует. Мультистарт (MLSL) предлагается глобальным этапом, хотя в общем списке методов он стоит в группе «С дожимом»: по характеру поиска это глобальный метод (см. Методы оптимизации).

Настройки этапа

От конвейера этап получает свою долю бюджета расчётов и критерий останова по достижению целей (допуск цели). Всё остальное — встроенные значения по умолчанию движка этапа: страница метода в диалоге на этап не влияет. Выбор Ковариационной адаптации (CMA-ES) этапом 1 не берёт sigma0 со страницы CMA-ES — ровно так же, как этап DIRECT-L не берёт флаг Равномерное покрытие со своей страницы.

Встроенные значения по умолчанию этапа — это значения его собственного метода: этап получает ровно то, что страница метода показывает в новом проекте. Начальный шаг и точность по параметрам у этапа Симплекс (SBPLX) — 0,100 и 0,0050, точность у этапа Поиск с ограничениями (COBYLA) — 0,0020, и так далее.

Одно исключение — этапы Систематический глобальный (DIRECT-L) и Эволюционная стратегия (ESCH): им точность по параметрам выставляется в 0, потому что своей сходимости по параметрам у этих методов нет. Это то же значение, с которым они работают при одиночном запуске, — метод не ведёт себя по-разному в зависимости от того, запущен он этапом или сам по себе.

Кроме бюджета и допуска цели конвейер задаёт глобальному этапу ещё две величины:

  • размер популяции — автоматическое значение зажимается так, чтобы в бюджет этапа влезало не меньше примерно четырёх «поколений». Это относится к этапам CRS2, ISRES, ESCH и CMA-ES;
  • порог остановки при стагнации — если разведка перестала улучшать результат, этап 1 завершается досрочно и конвейер раньше переходит к дожиму (у метода, выбранного одиночно, такая остановка по умолчанию выключена). Порог назначает сам конвейер — четверть доли глобального этапа, — поэтому у этапов Систематический глобальный (DIRECT-L), Эволюционная стратегия (ESCH) и Адаптивный глобальный (MaxLIPO), у которых своей сходимости нет, досрочный переход к дожиму всё равно работает. Порог не действует только у этапа Ковариационная адаптация (CMA-ES): у этого метода такой настройки нет, зато есть собственные критерии сходимости.

Локальному этапу конвейер, кроме бюджета и допуска цели, настроек не переопределяет: ни популяцию (у методов дожима её нет), ни порог остановки при стагнации. Область поиска и стартовую точку дожима задаёт сам конвейер — см. «Радиус локального этапа» в таблице параметров.

Персональные настройки этапов в файле проекта не сохраняются — хранятся только сами выбранные методы этапов.

Параметры

ПараметрПо умолчаниюДиапазонНа что влияет
Бюджет расчётов0 = автообщий предел на оба этапа и рестарты
Доля глобального этапа0,600,3–0,8больше — лучше разведка (меньше риск пропустить бассейн), слабее дожим. При стагнации разведки переход к дожиму происходит раньше автоматически
Радиус локального этапа0,1500,05–0,30размер окна вокруг найденной точки, в котором работает дожим. Меньше — быстрее и точнее в найденном бассейне; больше — шанс выбраться из мелкого бассейна ценой скорости
Мин. расстояние рестартов0,1000,05–0,25кандидаты ближе этого расстояния к уже дожатым считаются тем же бассейном и пропускаются
Рестартывклпосле сходимости дожима остаток бюджета тратится на спуски от следующих кандидатов разведки

Рекомендации

  • Начинайте с пресета Авто и авто-бюджета; ручная настройка этапов нужна редко.
  • Заданная стартовая точка считается первой оценкой прогона до разведки и отдельно добавляется кандидатом дожима. Удачная исходная конструкция не потеряется, даже если разведка её не нашла и даже если расчёт прервать в середине разведки: результат конвейера не бывает хуже старта. Лишней оценки это не стоит — точка попадает в кэш и позже берётся оттуда.
  • Куда ушёл бюджет, видно на графике сходимости в виджете мониторинга: этапы разделены нейтральными полосами (разведка, затем дожим и каждый рестарт — своей полосой), а каждый рестарт вдобавок отмечен вертикальной линией с подписью «рестарт N» — полосы дают границы, линия даёт номер. Рестартами считаются дожимы со следующих кандидатов: разведка и первый, плановый дожим рестартами не считаются, поэтому первая линия стоит перед третьим этапом. В таблице шагов первый шаг рестарта помечен токеном «рестарт N», а номера рестарта и поколения видно во всплывающей подсказке любой строки; отдельной колонки с номером этапа в таблице нет, номер этапа хранится только в журнале прогона. Число рестартов печатается в итогах прогона строкой «Рестартов поиска: N». В журнал решателя поитерационные пометки не пишутся; там есть лишь строки «Глобальный этап» / «Локальный этап» блока старта с названием выбранного метода этапа.
  • Если глобальный этап генерационный (ISRES, ESCH, Ковариационная адаптация), на его шагах работает и флажок «Популяция»: разброс поколений виден на этапе разведки, а на локальном дожиме его нет — у локальных методов популяции не бывает.
  • Жёсткие ограничения конвейер соблюдает только локальным этапом. При пресете Auto и наличии целей с признаком «жёсткое ограничение» этапы назначаются автоматически (ISRESCOBYLA), ограничения и их допуск пробрасываются в под-задачу и соблюдаются как условия допустимости. При ручном пресете с локальным этапом BOBYQA или SBPLX эти методы ограничения не поддерживают, поэтому цели-ограничения свёртываются в целевую функцию взвешенным штрафом, а в журнале печатается предупреждение «Локальный этап … не поддерживает ограничения…». См. Цели и целевая функция.
  • Глобальный этап проверяется на поддержку ограничений отдельно. Из методов, доступных этапу 1, ограничения поддерживает только ISRES, поэтому при ручном пресете с любым другим глобальным этапом разведка тратит свою долю бюджета, не видя ограничений: она ищет минимум целевой функции, в которую ограничения не входят. Ограничения при этом всё равно соблюдаются локальным этапом, но в журнале печатается предупреждение «Глобальный этап … не поддерживает ограничения и ведёт разведку без них…». Выход — пресет Авто либо ISRES в качестве этапа 1.
  • Кандидаты дожима упорядочены по допустимости независимо от того, видел ли ограничения глобальный этап. Нарушение измеряется в момент расчёта точки, а не при отборе, поэтому конвейер знает его для каждой посчитанной точки; список сортируется «сначала допустимые, затем по величине нарушения, затем по F», и уже по этому порядку идёт прореживание по полю Мин. расстояние рестартов. Дожим начинается с допустимой точки, если разведка на неё наткнулась, — даже когда лучшая по F точка нарушает ограничения сильнее всех. У прогона без ограничений нарушение всюду нулевое, и порядок вырождается в прежний — по F.
  • Статус завершения различает три случая: «бюджет исчерпан», «сошёлся (достигнута точность)» — когда КАЖДЫЙ выполненный локальный спуск завершился по своей точности, — и «остановлен без улучшения», когда бюджет остался, но сходимость не установлена (спуск закончился по своему лимиту расчётов, список кандидатов был оставлен из-за выключенных рестартов либо ни один спуск не выполнялся). Нерастраченный остаток бюджета печатается отдельной строкой сводки.
  • Хорошо работает с дискретными осями (переменные «с шагом» / «список»).