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

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

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

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

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

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

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

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

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

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

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

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

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

Остановка опцииОстановка теста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 — Количество функциональных оценок

  • \times Время в секундах начиная с запущенного решателя

  • Best Fval — Самое низкое значение целевой функции получено

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

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

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

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

stop = outfun(x,optimValues,state)

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

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

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

Структура optimValues

Имя поляСодержимое
currentFlag

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

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

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

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

currentFval

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

currentX

CurrentPoint

elapsedtime

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

flag

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

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

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

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

funccount

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

fval

С самым низким значением целевой функции сталкиваются

incumbentFlag

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

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

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

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

incumbentFval

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

incumbentX

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

iteration

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

surrogateReset

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

surrogateResetCount

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

  • state — Этот входной параметр является состоянием алгоритма, заданного как одно из этих значений.

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

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

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

Функция plot

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

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

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

  • @surrogateoptplot — Показывает текущее значение целевой функции, лучшее значение функции и информацию о фазе алгоритма. Смотрите Интерпретируют surrogateoptplot.

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

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

Если вы устанавливаете опцию 'UseParallel' на true, surrogateopt вычисляет параллельно. Вычисление параллельно требует лицензии Parallel Computing Toolbox™. Для получения дополнительной информации см. Суррогатный Алгоритм Оптимизации.

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

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

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

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

  • CheckpointFile

  • Display

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

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

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

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

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

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

Примечание

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

Примечание

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

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

Похожие темы