exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения см. в разделе Алгоритм суррогатной оптимизации.

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

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

Опция остановкиИспытание остановкиФлаг выхода
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. Дополнительные сведения см. в разделе Алгоритм суррогатной оптимизации.

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

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

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

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

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

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

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

  • Число неравенств

Функция вывода

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

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

stop = outfun(x,optimValues,state)

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

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

  • optimValues - Этот входной аргумент представляет собой структуру, содержащую следующие поля. Дополнительные сведения об этих полях см. в разделе Алгоритм суррогатной оптимизации.

optimValues Структура

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

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

  • 'initial' - Начальная точка, переданная options.InitialPoints

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

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

currentFval

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

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

Текущая точка

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 чтобы остановиться.

Функция графика

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

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

    • На графике невидимые точки отображаются как красные, а возможные точки - как синие.

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

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

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

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

Можно написать пользовательскую функцию печати, используя синтаксис функции вывода. Например, изучите код для surrogateoptplot путем ввода type surrogateoptplot в командной строке MATLAB ®.

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

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

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

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

При установке UseVectorized опция для true, surrogateopt передает матрицу целевой функции. Каждая строка матрицы представляет одну точку для вычисления. Матрица имеет options.BatchUpdateInterval строки; однако матрица может иметь меньше строк во время конечной итерации. Используйте этот параметр для пользовательских параллельных вычислений, как показано в разделе Векторизированная суррогатная оптимизация для пользовательского параллельного моделирования.

Вы не можете указать оба 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 может вызвать ошибку или привести к противоречивым результатам.

См. также

Связанные темы