Суррогатные опции оптимизации

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

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

  • 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.

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

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

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

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

Остановка опцииОстановка тестаExitflag
MaxFunctionEvaluations

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

0
MaxTimeОстановки решателя после того, как это достигает MaxTime секунды от запуска оптимизации, как измерено tic / toc. Решатель не прерывает происходящее вычисление функции, таким образом, фактические вычисляют время, может превысить MaxTime.0
ObjectiveLimitРешатель останавливается, если он получает значение целевой функции меньше, чем ObjectiveLimit.1
OutputFcn или PlotFcnOutputFcn или 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™, но с различными значениями 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

CurrentPoint

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

Функция plot

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

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

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

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

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

  • 'optimplotx' — Показывает лучшую точку, найденную как столбиковую диаграмму.

  • 'surrogateoptplot' — Показывает текущее значение целевой функции, лучшее значение функции и информацию о фазе алгоритма. Смотрите Интерпретируют 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 может выдать ошибку или дать противоречивые результаты.

Смотрите также

Похожие темы