Опции суррогатной оптимизации

Управление алгоритмом

Чтобы управлять алгоритмом суррогатной оптимизации, используйте следующие опции.

  • ConstraintTolerance - Допуск ограничения не используется в качестве критерия остановки. Он используется для определения допустимости относительно нелинейных ограничений. Допуск удовлетворяется, когда max(fun(x).Ineq) <= ConstraintTolerance, и в противном случае нарушается. Значение по умолчанию 1e-3.

  • InitialPoints - Задайте начальные точки одним из двух способов.

    • Матрица - каждая строка матрицы представляет начальную точку. Длина каждой строки совпадает с количеством элементов в границах lb или ub. Количество строк произвольно. surrogateopt использует все строки, чтобы создать начальный суррогат. Если их меньше MinSurrogatePoints строки, затем surrogateopt генерирует оставшиеся начальные точки. surrogateopt вычисляет целевую функцию в каждой начальной точке.

    • Структура - Структура содержит поле X и, опционально, поля Fval и Ineq. The X поле содержит матрицу, где каждая строка представляет начальную точку. The Fval поле содержит вектор, представляющий значения целевой функции в каждой точке X. Передача Fval экономит время для решателя, потому что в противном случае решатель оценивает значение целевой функции в каждой начальной точке. The Ineq поле содержит матрицу, содержащую нелинейные значения ограничений неравенства. Каждая строка Ineq представляет одну начальную точку, и каждый столбец представляет значение нелинейной функции ограничения в этой точке. Передача Ineq экономит время для решателя, потому что в противном случае решатель оценивает значения ограничительных функций в каждой начальной точке.

  • MinSurrogatePoints - Количество начальных точек, используемых для построения суррогата. Большие значения приводят к более точному законченному суррогату, но занимают больше времени, чтобы закончить суррогат. surrogateopt создает это количество случайных точек после каждого переключения в фазу случайной генерации. См. Алгоритм суррогатной оптимизации.

    Когда BatchUpdateInterval > 1, минимальное количество случайных точек выборки, используемых для создания суррогата, больше из MinSurrogatePoints и BatchUpdateInterval.

  • MinSampleDistance - Эта опция управляет двумя аспектами алгоритма.

    • Во время фазы для оценки минимального значения суррогата алгоритм генерирует случайные точки, в которых можно оценить суррогат. Если какая-либо из этих точек ближе, чем MinSampleDistance до любой предыдущей точки, чье значение целевой функции было оценено, затем surrogateopt отбрасывает вновь сгенерированные точки и не вычисляет их.

    • Если surrogateopt отбрасывает все случайные точки, затем не пытается минимизировать суррогат и вместо этого переключается на фазу случайной генерации. Если на surrogateoptplot функция построения графика выполняется, затем он помечает этот переключатель синей вертикальной линией.

  • BatchUpdateInterval - Эта опция управляет тремя аспектами алгоритма:

    • Количество вычислений функции перед обновлением суррогата.

    • Число точек для прохождения в векторизованной оценке. Когда UseVectorized является true, surrogateopt передает матрицу размера BatchUpdateInterval-by- nvar, где nvar - количество переменных задачи. Каждая строка матрицы представляет одну точку оценки. Для окончательной итерации (той, которая вызывает MaxFunctionEvaluations вычисления функции), если MaxFunctionEvaluations не является целым числом, кратным BatchUpdateInterval, surrogateopt передает матрицу с меньшим числом BatchUpdateInterval строки.

    • Когда BatchUpdateInterval > 1, минимальное количество случайных точек выборки, используемых для создания суррогата, больше из MinSurrogatePoints и BatchUpdateInterval.

    Выходные функции и функции построения графика обновляются после полной оценки каждого пакета.

Для получения дополнительной информации см. Surrogate Optimization Algorithm.

Критерий остановки

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

Опция остановкиОстановка тестаВыходной флаг
MaxFunctionEvaluations

Решатель останавливается после завершения MaxFunctionEvaluations вычисления функции. При параллельных вычислениях решатель останавливает всех работников после возвращения работника с окончательным вычислением функции, оставляя некоторые расчеты незавершенными и неиспользованными.

0
MaxTimeРешатель останавливается, когда достигает MaxTime секунд от начала оптимизации, измеренных tic / toc. Решатель не прерывает вычисления функции в прогресс, поэтому фактическое вычислительное время может превысить MaxTime.0
ObjectiveLimitРешатель останавливается, если получает значение целевой функции меньше ObjectiveLimit.1
OutputFcn или PlotFcnСистема координат OutputFcn или PlotFcn может остановить итерации.-1
Границы lb и ubЕсли запись в lb превышает соответствующую запись в ubрешатель останавливается, потому что границы несогласованны.-2

Отображение командной строки

Установите Display опция управления тем, что surrogateopt возвращается в командную строку.

  • 'final' - Возвращает только выходное сообщение. Это поведение по умолчанию.

  • 'iter' - Возвращает итеративное отображение.

  • 'off' или эквивалентное 'none' - Нет отображения командной строки.

При итерационном отображении решатель возвращает следующую информацию в формате таблицы.

  • F-count - Количество вычислений функции

  • Time(s) - Время в секундах с момента запуска решателя

  • Best Fval - Получено самое низкое значение целевой функции

  • Current Fval - Последнее значение целевой функции

  • Trial Type - Алгоритм, дающий оцененную точку, либо random или adaptive. Для получения дополнительной информации см. Surrogate Optimization Algorithm.

Когда целевая функция возвращает нелинейное ограничение, итеративное отображение Best Fval и Current Fval изменения. Вместо этого заголовки Best и Current, и в каждом из них отображаются два столбца (Fval, Infeas).

  • Когда точка допустима, surrogateopt отображает значение функции и показывает - как недопустимость.

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

  • Однажды surrogateopt находит допустимую точку, последующие записи в Best столбец показывает только наименьшее найденное значение функции и показывает - как лучшая недопустимость.

При итерационном отображении решатель также возвращает информацию о задаче перед таблицей:

  • Количество переменных

  • Тип целевой функции (скаляр или нет)

  • Количество неравенств

Выходная функция

Выходная функция может остановить решатель или выполнить расчет при каждой итерации. Чтобы включить выходную функцию, установите OutputFcn опция для @myoutputfcn, где myoutputfcn - функция с синтаксисом, описанным в следующем абзаце. Этот синтаксис такой же, как и для Optimization Toolbox™ выходных функций, но с другими значениями x и optimValues аргументы. Для получения информации об этих выходных функциях, смотрите Выходная функция и Синтаксис функции построения графика. Пример выходной функции см. в разделе Целочисленная оптимизация с Пользовательской Выходной Функцией.

Синтаксис выходной функции:

stop = outfun(x,optimValues,state)

surrogateopt передает значения x, optimValues, и state к выходной функции (outfun, в этом случае) при каждой итерации. Выходная функция возвращается stop, логическое значение (true или false), указывающий, следует ли останавливать surrogateopt.

  • x - входной параметр x является лучшей точкой, найденной до сих пор, что означает точку с самым низким значением целевой функции.

  • optimValues - Этот входной параметр является структурой, содержащей следующие поля. Для получения дополнительной информации об этих полях см. Surrogate Optimization Algorithm.

optimValues Структура

Имя поляСодержание
constrviolationМаксимальное нарушение ограничений лучшей точки, max(optimValues.ineq)
currentConstrviolationМаксимальное нарушение ограничений текущей точки, max(optimValues.currentIneq)
currentFlag

Способ создания текущей точки.

  • 'initial' - Начальная точка прошла в options.InitialPoints

  • 'random' - Случайная выборка в границах

  • 'adaptive' - Результат того, что решатель пытается минимизировать суррогат

currentFval

Значение целевой функции в текущей точке

currentIneqВектор нарушения ограничений текущей точки, fun(currentX).Ineq
currentX

Current point

elapsedtime

Время в секундах с момента запуска решателя

flag

Как была создана лучшая точка

  • 'initial' - Начальная точка прошла в options.InitialPoints

  • 'random' - Случайная выборка в границах

  • 'adaptive' - Результат того, что решатель пытается минимизировать суррогат

funccount

Общее количество целевых вычислений функции

fval

Встретилось самое низкое значение целевой функции

incumbentConstrviolationМаксимальное нарушение ограничений текущей точки, max(optimValues.incumbentIneq)
incumbentIneqВектор нарушения ограничений действующей точки, fun(incumbentX).Ineq
incumbentFlag

Как была создана действующая точка

  • 'initial' - Начальная точка прошла в options.InitialPoints

  • 'random' - Случайная выборка в границах

  • 'adaptive' - Результат того, что решатель пытается минимизировать суррогат

incumbentFval

Значение целевой функции в действующей точке

incumbentX

Действующая точка, означающая лучшую точку, найденную со времени последнего сдвига фазы к случайной выборке

ineqВектор нарушения ограничений лучшей точки, fun(x).Ineq
iteration

То же, что и funccount; позволяет surrogateopt использовать те же функции построения графика, что и некоторые другие решатели

surrogateReset

Логическое значение, указывающее, что текущая итерация сбрасывает модель и переключается на случайную выборку

surrogateResetCount

Общее количество раз, surrogateReset является true

  • state - Этот входной параметр является состоянием алгоритма, заданным в качестве одного из следующих значений.

    • 'init' - Алгоритм находится в начальном состоянии перед первой итерацией. Когда алгоритм находится в этом состоянии, можно настроить оси графика или другие структуры данных или открыть файлы.

      Примечание

      Когда state является 'init', входные параметры x и optimValues.fval пусты ([]) потому что surrogateopt предназначен для длительных целевых функций и поэтому не вычисляет целевую функцию перед вызовом шага инициализации.

    • 'iter' - Алгоритм только что оценил целевую функцию. Вы выполняете большинство вычислений и просматриваете большинство отображений, когда алгоритм находится в этом состоянии.

    • 'done' - Алгоритм выполнил окончательную оценку целевой функции. Когда алгоритм находится в этом состоянии, можно закрыть файлы, закончить графики или подготовиться другими способами к surrogateopt чтобы остановить.

Функция построения графика

A функции построения графика отображает информацию при каждой итерации. Можно приостановить или остановить решатель, нажав кнопки на графике. Чтобы включить функцию построения графика, установите PlotFcn опция для имени функции или указателя на функцию или массива ячеек из имен функции или указателей для функций построения графика. Четыре встроенные функции построения графика:

  • 'optimplotfvalconstr' (по умолчанию) - постройте график наилучшего допустимого значения целевой функции, найденного как линейный график. Если целевой функции нет, постройте график максимального нелинейного нарушения ограничений как линейный график.

    • График показывает недопустимые точки как красные и допустимые точки как синие.

    • Если нет целевой функции, заголовок графика показывает количество возможных решений.

  • 'optimplotfval' - Показывает лучшее значение функции. Если вы не выбираете функцию построения графика, surrogateopt использует @optimplotfval.

  • 'optimplotx' - Показывает лучшую точку, найденную как штриховой график.

  • 'surrogateoptplot' - Показывает текущее значение целевой функции, лучшее значение функции и информацию о фазе алгоритма. См. «Интерпретация суррогатеоптплота».

Вы можете записать пользовательскую функцию построения графика с помощью синтаксиса выходной функции. Для получения примера исследуйте код на surrogateoptplot путем ввода type surrogateoptplot в MATLAB® командная строка.

Параллельные вычисления

Когда вы устанавливаете UseParallel опция для true, surrogateopt вычисляет параллельно. Для параллельных вычислений требуется лицензия Parallel Computing Toolbox™. Для получения дополнительной информации см. Surrogate Optimization Algorithm.

Вы не можете задать оба UseParallel = true и UseVectorized = true. Если вы оба задаете trueрешатель игнорирует UseVectorized и пытается вычислить параллельно с помощью параллельного пула, если это возможно.

Векторизованные вычисления

Когда вы устанавливаете UseVectorized опция для true, surrogateopt передает матрицу в целевую функцию. Каждая строка матрицы представляет одну точку для вычисления. Матрица имеет options.BatchUpdateInterval строки; однако матрица может иметь меньше строк во время окончательной итерации. Используйте эту опцию для пользовательских параллельных вычислений, как показано на Vectorized Surrogate Optimization for Custom Parallel Simulation.

Вы не можете задать оба UseParallel = true и UseVectorized = true. Если вы оба задаете trueрешатель игнорирует UseVectorized и пытается вычислить параллельно с помощью параллельного пула, если это возможно.

Файл контрольной точки

Когда вы задаете имя файла контрольной точки используя CheckpointFile опция, surrogateopt записывает данные в файл после каждой итерации, что позволяет функции возобновить оптимизацию из текущего состояния. При перезапуске, surrogateopt не оценивает значение целевой функции в ранее оцененных точках.

Файл контрольной точки может быть путем к файлу, таким как "C:\Documents\MATLAB\check1.mat" или имя файла, например 'checkpoint1June2019.mat'. Если вы задаете имя файла без пути, surrogateopt сохраняет файл контрольной точки в текущей папке.

При возобновлении оптимизации можно изменить только следующие опции:

  • BatchUpdateInterval

  • CheckpointFile

  • Display

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

  • UseVectorized

Чтобы возобновить оптимизацию из файла контрольной точки, вызовите surrogateopt с именем файла в качестве первого аргумента.

[x,fval,exitflag,output] = surrogateopt('check1.mat')

Чтобы возобновить оптимизацию с помощью новых опций, включите новые опции в качестве второго аргумента.

opts = optimoptions(options,'MaxFunctionEvaluations',500);
[x,fval,exitflag,output] = surrogateopt('check1.mat',opts)

Во время перезапуска, surrogateopt запускает любые выходные функции и функции построения графика, основанные на исходных вычислениях функции. Так, например, можно создать другой график на основе уже запущенной оптимизации. См. «Работа с файлами контрольных точек».

Примечание

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

Примечание

Выгрузки требуют времени. Эти накладные расходы особенно заметны для функций, которым в противном случае требуется мало времени для оценки.

Предупреждение

Не возобновлять surrogateopt из файла контрольной точки, созданного с другой версией MATLAB. surrogateopt может выдать ошибку или дать несогласованные результаты.

См. также

Похожие темы