Параметры поиска шаблона

Приложение оптимизации по сравнению с командной строкой

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

  • Если вы используете приложение Оптимизации, вы задаете опции путем выбора опции из выпадающего списка или путем ввода значения опции в текстовом поле.

  • Если вы вызываете patternsearch из командной строки, вы задаете опции путем создания объекта options с помощью функционального optimoptions, можно следующим образом:

    options = optimoptions('patternsearch','Param1',value1,'Param2',value2,...);
    

    См. Опции Набора для примеров.

В этом разделе каждая опция перечислена двумя способами:

  • Его меткой, как это появляется в приложении Оптимизации

  • Его именем поля в объекте options

Например:

  • Poll method относится к метке опции в приложении Оптимизации.

  • PollMethod относится к соответствующему полю объекта options.

Постройте опции

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

Для patternsearch Plot interval (PlotInterval) задает количество итераций между последовательными вызовами функции построения графика.

Можно выбрать любой из следующих графиков в панели Plot functions для patternsearch или paretosearch с одной целевой функцией.

  • Best function value ('psplotbestf') строит лучшее значение целевой функции.

  • Function count ('psplotfuncount') строит количество функциональных оценок.

  • Mesh size ('psplotmeshsize') строит размер mesh.

  • Best point ('psplotbestx') строит текущую лучшую точку.

  • Max constraint ('psplotmaxconstr') строит максимальное нелинейное ограничительное нарушение.

  • Custom позволяет вам использовать свою собственную функцию построения графика. Задавать функцию построения графика с помощью приложения Оптимизации,

    • Выберите Custom function.

    • Введите @myfun в текстовое поле, где myfun является именем вашей функции.

    Структура Функций построения графика описывает структуру функции построения графика.

Для paretosearch с несколькими целевыми функциями можно выбрать опцию 'psplotfuncount' или пользовательскую функцию, которую вы передаете как указатель на функцию или любая из следующих функций.

  • 'psplotdistance' — Постройте метрику расстояния. См. paretosearch Алгоритм.

  • 'psplotmaxconstr' — Постройте максимальное нелинейное ограничительное нарушение.

  • 'psplotparetof' — Постройте значения целевой функции. Применяется к трем или меньшему количеству целей.

  • 'psplotparetox' — Постройте текущие точки в пространстве параметров. Применяется к трем или меньшему количеству размерностей.

  • 'psplotspread' — Постройте метрику распространения. См. paretosearch Алгоритм.

  • 'psplotvolume' — Постройте метрику объема. См. paretosearch Алгоритм.

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

options = optimoptions('patternsearch','PlotFcn','psplotbestf');

Чтобы отобразить несколько графиков, используйте массив ячеек встроенных имен функции построения графика или cell-массива указателей на функцию:

options = optimoptions('patternsearch','PlotFcn', {@plotfun1, @plotfun2, ...});

где @plotfun1, @plotfun2, и так далее является указателями на функцию в функции построения графика (перечисленный в круглых скобках в предыдущем списке).

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

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

Первая строка функции построения графика имеет форму

function stop = plotfun(optimvalues, flag)

Входные параметры к функции

  • optimvalues — Структура, содержащая информацию о текущем состоянии решателя. Структура содержит следующие поля для patternsearch:

    • x CurrentPoint

    • iteration — Номер итерации

    • fval Значение целевой функции

    • meshsize — Текущий размер mesh

    • funccount — Количество функциональных оценок

    • method — Метод используется в последней итерации

    • TolFun — Допуск на значении функции в последней итерации

    • TolX — Допуск на значении x в последней итерации

    • nonlinineq — Нелинейные ограничения неравенства, отображенные только, когда нелинейная ограничительная функция задана

    • nonlineq — Нелинейные ограничения равенства, отображенные только, когда нелинейная ограничительная функция задана

    Структура содержит следующие поля для paretosearch:

  • флаг Текущее состояние, в котором называется функция построения графика. Возможные значения для flag

    • 'init' — Состояние инициализации

    • 'iter' — Состояние итерации

    • 'interrupt' — Промежуточная стадия

    • сделанный Конечное состояние

    Для получения дополнительной информации flag, смотрите Структуру Выходной функции.

Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

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

  • ложь Алгоритм продолжается к следующей итерации.

  • tRUE Алгоритм останавливается в текущей итерации.

Опросите опции

Опросите управление опциями, как поиск шаблона опрашивает точки mesh в каждой итерации.

Poll method (PollMethod) задает шаблон использование алгоритма, чтобы создать mesh. Существует два шаблона для каждого из классов прямых алгоритмов поиска: алгоритм обобщенного поиска шаблона (GPS), алгоритм генерации поиска набора (GSS) и алгоритм mesh адаптивного прямого поиска (MADS). Эти шаблоны являются Положительным основанием 2 Н и Положительным основанием N+1:

  • Шаблон по умолчанию для patternsearch, GPS Positive basis 2N ('GPSPositiveBasis2N'), состоит из следующих векторов на 2 Н, где N является количеством независимых переменных для целевой функции.

    [1 0 0...0][0 1 0...0] ...[0 0 0...1][–1 0 0...0][0 –1 0...0][0 0 0...–1].

    Например, если задача оптимизации имеет три независимых переменные, шаблон состоит из следующих шести векторов.

    [1 0 0][0 1 0][0 0 1][–1 0 0][0 –1 0][0 0 –1].

  • Шаблон GSS Positive basis 2N ('GSSPositiveBasis2N') подобен GPS Positive basis 2N, но настраивает базисные векторы, чтобы составлять линейные ограничения. GSS Positive basis 2N более эффективен, чем GPS Positive basis 2N, когда текущая точка около линейного ограничительного контура.

  • Шаблон MADS Positive basis 2N ('MADSPositiveBasis2N') состоит из 2 Н, случайным образом сгенерировал векторы, где N является количеством независимых переменных для целевой функции. Это сделано путем случайной генерации N векторов, которые формируют линейно независимый набор, затем с помощью этого первого набора, и отрицание этого набора дает векторы на 2 Н. Как показано выше, шаблон GPS Positive basis 2N формируется с помощью положительного и отрицательной из линейно независимой идентичности, однако, с MADS Positive basis 2N, шаблон сгенерирован с помощью случайной перестановки N на n линейно независимой нижней треугольной матрицы, которая регенерирована в каждой итерации.

  • Шаблон GPS Positive basis NP1 ('GPSPositiveBasisNp1') состоит из следующего N + 1 вектор.

    [1 0 0...0][0 1 0...0] ...[0 0 0...1][–1 –1 –1...–1].

    Например, если целевая функция имеет три независимых переменные, шаблон состоит из следующих четырех векторов.

    [1 0 0][0 1 0][0 0 1][–1 –1 –1].

  • Шаблон GSS Positive basis Np1 ('GSSPositiveBasisNp1') подобен GPS Positive basis Np1, но настраивает базисные векторы, чтобы составлять линейные ограничения. GSS Positive basis Np1 более эффективен, чем GPS Positive basis Np1, когда текущая точка около линейного ограничительного контура.

  • Шаблон MADS Positive basis Np1 ('MADSPositiveBasisNp1') состоит из N, случайным образом сгенерировал векторы, чтобы сформировать положительное основание, где N является количеством независимых переменных для целевой функции. Затем еще один случайный вектор сгенерирован, давание N+1 случайным образом сгенерировало векторы. Каждая итерация генерирует новый шаблон, когда MADS Positive basis N+1 выбран.

  • Для paretosearch только, шаблон 'GSSPositiveBasis2Np2' по умолчанию использует шаблоны 2N GSS, и также использует шаблоны [-1 -1 ... -1] и [1 1 ... 1].

(UseCompletePoll) Complete poll задает, должны ли все точки в текущей mesh быть опрошены в каждой итерации. Complete Poll может иметь значения On или Off.

  • Если вы устанавливаете Complete poll на on (true), алгоритм опрашивает все точки в mesh в каждой итерации и выбирает точку с наименьшим значением целевой функции как текущая точка в следующей итерации.

  • Если вы устанавливаете Complete poll на off (false), значение по умолчанию, алгоритм останавливает опрос, как только это находит точку, значение целевой функции которой является меньше, чем та из текущей точки. Алгоритм затем устанавливает ту точку как текущую точку в следующей итерации.

  • Для paretosearch только, опция MinPollFraction задает часть направлений опроса, которые исследованы во время опроса вместо двоичного значения UseCompletePoll. Чтобы задать полный опрос, установите MinPollFraction на 1. Чтобы указать, что опрос останавливается, как только он находит точку, которая улучшает все целевые функции, устанавливает MinPollFraction на 0.

Polling order (PollOrderAlgorithm) задает порядок, в котором алгоритм ищет точки в текущей mesh. Опции

  • 'Random' — Порядок опроса случаен.

  • 'Success' — Первое поисковое направление в каждой итерации является направлением, в котором алгоритм нашел лучшую точку в предыдущей итерации. После первой точки алгоритм опрашивает точки mesh в том же порядке как Consecutive.

  • 'Consecutive' — Алгоритм опрашивает точки mesh в последовательном порядке, то есть, порядке векторов шаблона, как описано в Методе Опроса.

Многоцелевые опции

Решатель paretosearch в основном использует опции patternsearch. Несколько из доступных встроенных функций построения графика отличаются; см. Опции Графика. Следующие опции применяются только к paretosearch.

В таблице N представляет количество переменных решения.

Многоцелевые параметры поиска шаблона

ОпцияОпределениеПозволенный и { значения Default}
ParetoSetSizeЧисло точек во Множестве Парето.Положительное целое число | {max(60,number of objectives) }
ParetoSetChangeToleranceДопуск на изменении в объеме или распространении решений. Когда любая из этих мер относительно изменяется меньше, чем ParetoSetChangeTolerance, концом итераций. Для получения дополнительной информации смотрите Останавливающиеся Условия.Положительная скалярная величина | {1e-4}
MinPollFractionМинимальная часть шаблона, чтобы опросить.Скаляр от 0 до 1 | {0}
InitialPoints

Начальные точки для paretosearch. Используйте один из этих типов данных:

  • Матрица со столбцами nvars, где каждая строка представляет одну начальную точку.

  • Структура, содержащая следующие поля (все поля являются дополнительными кроме X0):

    • X0 Матрица со столбцами nvars, где каждая строка представляет одну начальную точку.

    • Fvals — Матрица со столбцами numObjectives, где каждая строка представляет значения целевой функции в соответствующей точке в X0.

    • Cineq — Матрица со столбцами numIneq, где каждая строка представляет нелинейные значения ограничения неравенства в соответствующей точке в X0.

Если там пропускают записи в полях Fvals или Cineq, paretosearch вычисляет отсутствующие значения.

Матрица со столбцами nvars | структура | {[]}

Параметры поиска

Параметры поиска задают дополнительный поиск, который алгоритм может выполнить в каждой итерации до опроса. Если поиск возвращает точку, которая улучшает целевую функцию, использование алгоритма, которое указывает на следующую итерацию и не использует опрос. Отметьте, если вы выбрали тот же Search method и Poll method, только опция, выбранная в методе Опроса, будет использоваться, несмотря на то, что оба будут использоваться, когда выбранные опции будут отличаться.

Complete search (UseCompleteSearch) применяется, когда вы устанавливаете Search method на GPS Positive basis Np1, GPS Positive basis 2N, GSS Positive basis Np1, GSS Positive basis 2N, MADS Positive basis Np1, MADS Positive basis 2N или Latin hypercube. Complete search может иметь значения on (true) или off (false).

Для GPS Positive basis Np1, MADS Positive basis Np1, GPS Positive basis 2N или MADS Positive basis 2N, Complete search имеет то же значение как опция опроса Complete poll.

Search method (SearchFcn) задает дополнительный поисковый шаг. Опции

  • None ([]) (значение по умолчанию) не задает поискового шага.

  • GPS Positive basis 2N ('GPSPositiveBasis2N')

  • GPS Positive basis Np1 ('GPSPositiveBasisNp1')

  • GSS Positive basis 2N ('GSSPositiveBasis2N')

  • GSS Positive basis Np1 ('GSSPositiveBasisNp1')

  • MADS Positive basis 2N ('MADSPositiveBasis2N')

  • MADS Positive basis Np1 ('MADSPositiveBasisNp1')

  • Genetic Algorithm ('searchga') задает поиск с помощью генетического алгоритма. Если вы выбираете Genetic Algorithm, две других опции появляются:

    • Iteration limit — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется поиск генетического алгоритма. Значение по умолчанию для Iteration limit равняется 1.

    • Опции Опции для генетического алгоритма, который можно установить использование optimoptions.

    Чтобы изменить значения по умолчанию Iteration limit и Options в командной строке, используйте синтаксис

    options = optimoptions('patternsearch','SearchFcn',...
           {@searchga,iterlim,optionsGA})

    где iterlim является значением Iteration limit, и optionsGA является объектом опций генетического алгоритма. Если вы не задаете опций searchga, то searchga использует тот же UseParallel и настройки опции UseVectorized как patternsearch.

    Примечание

    Если вы устанавливаете Search method на Genetic algorithm или Nelder-Mead, мы рекомендуем, чтобы вы оставили набор Iteration limit значению по умолчанию 1, потому что выполнение этих поисковых запросов несколько раз вряд ли улучшит результаты.

  • Latin hypercube ('searchlhs') задает латинский поиск гиперкуба. patternsearch генерирует каждую точку для поиска можно следующим образом. Для каждого компонента возьмите случайную перестановку векторного [1,2,...,k] минус rand(1,k), разделенный на k. (k является числом точек.) Это приносит очки k с каждым компонентом близко к равномерно расположенному с интервалами. Получившимся точкам затем масштабируют для соответствия любые границы. Latin hypercube использует границы по умолчанию -1 и 1.

    Путем поиск выполняется, зависит от установки для Complete search:

    • Если вы устанавливаете Complete search на on (true), алгоритм опрашивает все точки, которые случайным образом сгенерированы в каждой итерации латинским поиском гиперкуба, и выбирает тот с наименьшим значением целевой функции.

    • Если вы устанавливаете Complete search на off (false) (значение по умолчанию), алгоритм останавливает опрос, как только это находит одну из случайным образом сгенерированных точек, значение целевой функции которых является меньше, чем та из текущей точки и выбирает ту точку для следующей итерации.

    Если вы выбираете Latin hypercube, две других опции появляются:

    • Iteration limit — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется латинский поиск гиперкуба. Значение по умолчанию для Iteration limit равняется 1.

    • Design levelDesign level является числом точек поисковые запросы patternsearch, положительное целое число. Значением по умолчанию для Design level является 15 раз количество размерностей.

    Чтобы изменить значения по умолчанию Iteration limit и Design level в командной строке, используйте синтаксис

    options = optimoptions('patternsearch','SearchFcn', {@searchlhs,iterlim,level})

    где iterlim является значением Iteration limit, и level является значением Design level.

  • Nelder-Mead ('searchneldermead') задает поиск с помощью fminsearch, который использует алгоритм Nelder-меда. Если вы выбираете Nelder-Mead, две других опции появляются:

    • Iteration limit — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется поиск Nelder-меда. Значение по умолчанию для Iteration limit равняется 1.

    • Опции Опции для функционального fminsearch, который можно создать использование функционального optimset.

    Чтобы изменить значения по умолчанию Iteration limit и Options в командной строке, используйте синтаксис

    options = optimoptions('patternsearch','SearchFcn',...
         {@searchneldermead,iterlim,optionsNM})

    где iterlim является значением Iteration limit, и optionsNM является опциями для поисковой функции.

  • Custom позволяет вам записать свою собственную поисковую функцию. Задавать поисковую функцию с помощью приложения Оптимизации,

    • Установите Search function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете patternsearch в командной строке, наборе

    options = optimoptions('patternsearch','SearchFcn',@myfun);

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

    edit searchfcntemplate

    Следующий раздел описывает структуру поисковой функции.

Структура поисковой функции

Ваша поисковая функция должна иметь следующий синтаксис вызова.

function [successSearch,xBest,fBest,funccount] = 
searchfcntemplate(fun,x,A,b,Aeq,beq,lb,ub, ...
    optimValues,options)

Поисковая функция имеет следующие входные параметры:

  • fun — Целевая функция

  • x CurrentPoint

  • A, B Линейные ограничения неравенства

  • Aeq,beq — Линейные ограничения равенства

  • lb,ub — Ограничения нижней и верхней границы

  • optimValues — Структура, которая позволяет вам установить параметры поиска. Структура содержит следующие поля:

    • x CurrentPoint

    • fval Значение целевой функции в x

    • iteration — Текущий номер итерации

    • funccount — Счетчик для оценки функции пользователя

    • шкала Масштабный коэффициент раньше масштабировал точки проекта

    • проблемный тип Флаг передал поисковым стандартным программам, указав, является ли проблемой 'unconstrained', 'boundconstraints' или 'linearconstraints'. Это поле является подпроблемным типом для нелинейных ограниченных проблем.

    • meshsize — Текущий размер mesh используется на поисковом шаге

    • method — Метод используется в последней итерации

  • Параметры поиска options — Pattern

Функция имеет следующие выходные аргументы:

  • successSearch — Булев идентификатор, указывающий, успешен ли поиск или нет

  • xBest,fBest — Лучше всего укажите и лучшее значение функции, найденное методом поиска

  • funccount — Количество оценки функции пользователя в методе поиска

Смотрите Используя Метод поиска для примера.

Поймайте в сети опции

Сцепитесь опции управляют mesh, что шаблон ищет использование. Следующие опции доступны.

Initial size (InitialMeshSize) задает размер начальной mesh, которая является длиной самого короткого вектора от начальной точки до точки mesh. Initial size должен быть положительной скалярной величиной. Значением по умолчанию является 1.0.

Max size (MaxMeshSize) задает максимальный размер для mesh. Когда максимальный размер достигнут, размер mesh не увеличивается после успешной итерации. Max size должен быть положительной скалярной величиной и только используется, когда GPS или алгоритм GSS выбраны как Опрос или Метод поиска. Значением по умолчанию является Inf. MADS использует максимальный размер 1.

Accelerator (AccelerateMesh) задает, умножается ли, когда размер mesh является небольшим, Contraction factor на 0.5 после каждой неудачной итерации. Accelerator может иметь значения On или Off, значение по умолчанию. Accelerator применяется к GPS и алгоритмам GSS.

Rotate (MeshRotate) только применяется, когда Poll method установлен в GPS Positive basis Np1 или GSS Positive basis Np1. Это задает, умножаются ли векторы mesh на –1, когда размер mesh является меньше, чем 1/100 допуска mesh (минимальный размер mesh MeshTolerance) после неудачного опроса. Другими словами, после первого неудачного опроса с небольшим размером mesh, вместо того, чтобы опросить в направлениях ei (модуль положительные направления) и –Σei, алгоритм опрашивает в направлениях –ei и Σei. Rotate может иметь значения Off или On (значение по умолчанию). Когда проблема имеет ограничения равенства, Rotate отключен.

Rotate особенно полезен для разрывных функций.

Примечание

Изменение настроек Rotate не имеет никакого эффекта на опрос, когда Poll method установлен в GPS Positive basis 2N, GSS Positive basis 2N, MADS Positive basis 2N или MADS Positive basis Np1.

(ScaleMesh) Scale задает, масштабирует ли алгоритм точки mesh путем тщательного умножения векторов шаблона на константы, пропорциональные логарифмам абсолютных значений компонентов текущей точки (или, для неограниченных проблем, начальной точки). Scale может иметь значения Off или On (значение по умолчанию). Когда проблема имеет ограничения равенства, Scale отключен.

(MeshExpansionFactor) Expansion factor задает фактор, которым размер mesh увеличен после успешного опроса. Значением по умолчанию является 2.0, что означает, что размер mesh умножается на 2.0 после успешного опроса. Expansion factor должен быть положительной скалярной величиной и только используется, когда GPS или метод GSS выбраны как Опрос или Метод поиска. MADS использует фактор 4.0.

(MeshContractionFactor) Contraction factor задает фактор, которым размер mesh уменьшен после неудачного опроса. Значением по умолчанию является 0.5, что означает, что размер mesh умножается на 0.5 после неудачного опроса. Contraction factor должен быть положительной скалярной величиной и только используется, когда GPS или метод GSS выбраны как Опрос или Метод поиска. MADS использует фактор 0.25.

Смотрите Расширение Mesh и Сокращение для получения дополнительной информации.

Параметры ограничения

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

  • Initial penalty (InitialPenalty) — Задает начальное значение параметра штрафа, который используется нелинейным ограничительным алгоритмом. Initial penalty должен быть больше, чем или равным 1 и имеет значение по умолчанию 10.

  • Penalty factor (PenaltyFactor) — Увеличивает параметр штрафа, когда проблема не решена к требуемой точности, и ограничения не удовлетворены. Penalty factor должен быть больше, чем 1 и имеет значение по умолчанию 100.

Bind tolerance (TolBind) задает допуск к расстоянию от текущей точки до контура выполнимой области относительно линейных ограничений. Это означает, что Bind tolerance задает, когда линейное ограничение активно. Bind tolerance не является останавливающимся критерием. Активные линейные ограничения изменяют шаблон точек использование patternsearch для того, чтобы опросить или искать. Значением по умолчанию Bind tolerance является 1e-3.

Опции кэша

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

Cache (Cache) задает, используется ли кэш. Опциями является On и Off, значение по умолчанию. Когда вы устанавливаете Cache на On, алгоритм не выполняет целевую функцию ни в каких точках mesh, которые являются в Tolerance точки в кэше.

Tolerance (CacheTol) задает, как близко точка mesh должна быть к точке в кэше для алгоритма, чтобы не использовать опрос его. Tolerance должен быть положительной скалярной величиной. Значением по умолчанию является eps.

Size (CacheSize) задает размер кэша. Size должен быть положительной скалярной величиной. Значением по умолчанию является 1e4.

Смотрите Кэш Использования для получения дополнительной информации.

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

Критерий остановки определяет то, что заставляет алгоритм поиска шаблона останавливаться. Поиск шаблона использует следующие критерии:

Mesh tolerance (MeshTolerance) задает минимальный допуск к размеру mesh. GPS и алгоритмы GSS останавливаются, если размер mesh становится меньшим, чем Mesh tolerance. 2 Н MADS останавливаются, когда размер mesh становится меньшим, чем MeshTolerance^2. MADS Np1 останавливается, когда размер mesh становится меньшим, чем (MeshTolerance/nVar)^2, где nVar является числом элементов x0. Значением по умолчанию MeshTolerance является 1e-6.

Max iteration (MaxIterations) задает максимальное количество итераций, которые выполняет алгоритм. Алгоритм останавливается, если количество итераций достигает Max iteration. Можно выбрать также

  • 100*numberOfVariables — Максимальное количество итераций является 100 раз количеством независимых переменных (значение по умолчанию).

  • Specify — Положительное целое число для максимального количества итераций

Max function evaluations (MaxFunctionEvaluations) задает максимальное количество оценок целевой функции. Алгоритм останавливается, если количество функциональных оценок достигает Max function evaluations. Можно выбрать также

  • 2000*numberOfVariables — Максимальное количество функциональных оценок является 2000 раз количеством независимых переменных.

  • Specify — Положительное целое число для максимального количества функциональных оценок

Time limit (MaxTime) задает максимальное время в секундах выполнения алгоритма поиска шаблона перед остановкой. Это также включает, любой заданный приостанавливает время для алгоритмов поиска шаблона.

X tolerance (StepTolerance) задает минимальное расстояние между текущими точками в двух последовательных итерациях. Не применяется к опросу MADS. После неудачного опроса останавливается алгоритм, если расстояние между двумя последовательными точками является меньше, чем X tolerance и размер mesh меньше, чем X tolerance. Значением по умолчанию является 1e-6.

Function tolerance (FunctionTolerance) задает минимальный допуск к целевой функции. Не применяется к опросу MADS. После неудачного опроса останавливается алгоритм, если различием между значением функции в предыдущей лучшей точке и значением функции в текущей лучшей точке являются меньше, чем Function tolerance, и если размер mesh также меньше, чем X tolerance. Значением по умолчанию является 1e-6.

Смотрите Допуски Решателя Установки к примеру.

Constraint tolerance (ConstraintTolerance) — Constraint tolerance не используется в качестве останавливающегося критерия. Это используется, чтобы определить выполнимость относительно нелинейных ограничений.

Опции выходной функции

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

  • Выберите Custom function.

  • Введите @myfun в текстовое поле, где myfun является именем вашей функции. Запишите myfun с соответствующим синтаксисом.

  • Чтобы передать дополнительные параметры в выходной функции, используйте Анонимные функции (Optimization Toolbox).

  • Для нескольких выходных функций введите массив ячеек указателей выходной функции: {@myfun1,@myfun2,...}.

В командной строке, наборе

options = optimoptions('patternsearch','OutputFcn','myfun');

Для нескольких выходных функций введите cell-массив указателей на функцию:

options = optimoptions('patternsearch','OutputFcn',{@myfun1,@myfun2,...});

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

edit psoutputfcntemplate

в командной строке MATLAB®.

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

Ваша выходная функция должна иметь следующий синтаксис вызова:

[stop,options,optchanged] = myfun(optimvalues,options,flag)

MATLAB передает optimvalues, state и данные flag к вашей выходной функции, и выходная функция возвращает stop, options и данные optchanged.

Выходная функция имеет следующие входные параметры:

  • optimvalues — Структура, содержащая информацию о текущем состоянии решателя. Структура содержит следующие поля:

    • x CurrentPoint

    • iteration — Номер итерации

    • fval Значение целевой функции в x

    • meshsize — Текущий размер mesh

    • funccount — Количество функциональных оценок

    • method — Метод используется в последней итерации, такой как 'Update multipliers' или 'Increase penalty' для нелинейно ограниченной проблемы, или 'Successful Poll', 'Refine Mesh' или 'Successful Search', возможно с суффиксом '\Rotate', для проблемы без нелинейных ограничений

    • TolFun — Абсолютное значение изменения в значении функции в последней итерации

    • TolX — Норма изменения в x в последней итерации

    • nonlinineq — Нелинейные значения функции ограничения неравенства в x, отображенном только, когда нелинейная ограничительная функция задана

    • nonlineq — Нелинейные ограничительные значения функции равенства в x, отображенном только, когда нелинейная ограничительная функция задана

  • опции Опции

  • флаг Текущее состояние, в котором называется выходная функция. Возможные значения для flag

    • 'init' — Состояние инициализации

    • 'iter' — Состояние итерации

    • 'interrupt' — Итерация подпроблемы нелинейно ограниченной проблемы

      • Когда flag является 'interrupt', значения полей optimvalues применяются к подпроблемным итерациям.

      • Когда flag является 'interrupt', patternsearch не принимает изменения в options и игнорирует optchanged.

    • сделанный Конечное состояние

Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры выходной функции.

Выходная функция возвращает следующие аргументы в patternsearch:

  • остановка Обеспечивает способ остановить алгоритм в текущей итерации. stop может иметь следующие значения.

    • ложь Алгоритм продолжается к следующей итерации.

    • tRUE Алгоритм останавливается в текущей итерации.

  • опции опции patternsearch.

  • optchanged — Указание булева флага изменяется на options. Чтобы изменить options для последующих итераций, установите optchanged на true.

Отобразитесь к опциям командного окна

Level of display ('Display') задает, сколько информации отображено в командной строке, в то время как поиск шаблона запускается. Доступные параметры

  • Off ('off') — No вывод отображен.

  • Iterative ('iter') — Информация отображена для каждой итерации.

  • Diagnose ('diagnose') — Информация отображена для каждой итерации. Кроме того, диагностика перечисляет некоторую информацию о проблеме и опции, которые изменяются от значений по умолчанию.

  • Final ('final') — Причина остановки отображена.

И Iterative и Diagnose отображают следующую информацию:

  • Iter — Номер итерации

  • FunEval — Совокупное число функциональных оценок

  • MeshSize — Текущий размер mesh

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

  • Method — Результат текущего опроса (без нелинейной ограничительной заданной функции). С нелинейной ограничительной функцией Method отображает метод обновления, используемый после того, как подпроблема будет решена.

  • Max Constraint — Максимальное нелинейное ограничительное нарушение (отобразился только, когда нелинейная ограничительная функция была задана),

Значение по умолчанию Level of display

  • Off в приложении Оптимизации

  • 'final' в опциях, созданных с помощью optimoptions

Векторизованные и параллельные опции (оценка функции пользователя)

Можно принять решение иметь цель и ограничительные функции, выполненные в последовательном, параллельном, или векторизованным способом. Эти опции доступны в разделе User function evaluation панели Options приложения Оптимизации, или путем установки 'UseVectorized' и опций 'UseParallel' с optimoptions.

Примечание

Необходимо установить 'UseCompletePoll' на true для patternsearch использовать векторизованный или параллельный опрос. Точно так же установите 'UseCompleteSearch' на true для векторизованного или параллельного поиска.

Начинаясь в R2019a, когда вы устанавливаете опцию 'UseParallel' на true, patternsearch внутренне заменяет установку 'UseCompletePoll' к true, таким образом, это опрашивает параллельно.

  • Когда Evaluate objective and constraint functions ('UseVectorized') является in serial (false), patternsearch вызывает целевую функцию на одной точке за один раз, когда это циклично выполняется через точки mesh. (В командной строке это принимает, что 'UseParallel' в его значении по умолчанию false.)

  • Когда Evaluate objective and constraint functions ('UseVectorized') является vectorized (true), patternsearch вызывает целевую функцию на всех точках в mesh целиком, т.е. в одном вызове целевой функции.

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

    Для получения дополнительной информации и пример, смотрите, Векторизуют Функции Цели и Ограничения.

  • Когда Evaluate objective and constraint functions ('UseParallel') является in parallel (true), patternsearch вызывает целевую функцию параллельно, с помощью параллельной среды, которую вы установили (см., Как Использовать Параллельную обработку в Global Optimization Toolbox). В командной строке, набор 'UseParallel' к false, чтобы вычислить последовательно.

Примечание

Вы не можете одновременно использовать векторизованный и найти что-либо подобное вычислениям. Если вы устанавливаете 'UseParallel' на true и 'UseVectorized' к true, patternsearch оценивает вашу цель и ограничительные функции векторизованным способом, не параллельно.

Как объективный и ограничительные функции оценены

Примите UseCompletePoll = trueUseVectorized = falseUseVectorized = true
UseParallel = falseПоследовательныйВекторизованный
UseParallel = trueПараллельВекторизованный

Таблица опций для алгоритмов поиска шаблона

Таблица доступности опции для всех алгоритмов

ОпцияОписаниеДоступность алгоритма
AccelerateMesh

Ускорьте сокращение размера mesh.

GPS и GSS

Cache

С набором Cache к 'on' patternsearch сохраняет историю точек mesh, это опрашивает и не опрашивает точки близко к ним снова в последующих итерациях. Используйте эту опцию, если patternsearch медленно запускается, потому что требуется много времени, чтобы вычислить целевую функцию. Если целевая функция является стохастической, рекомендуется не использовать эту опцию.

Все

CacheSize

Размер кэша, в числе точек.

Все

CacheTol

Положительная скалярная величина, задающая, как близко текущая точка mesh должна быть к точке в кэше для patternsearch, чтобы не опрашивать его. Доступный, если опция 'Cache' установлена в 'on'.

Все

ConstraintTolerance

Допуск на нелинейных ограничениях.

Все

Display

Уровень отображения к Командному окну.

Все

FunctionTolerance

Допуск на значении функции.

Все

InitialMeshSize

Начальный размер mesh используется в алгоритмах поиска шаблона.

Все

InitialPenalty

Начальное значение параметра штрафа.

Все

MaxFunctionEvaluations

Максимальное количество оценок целевой функции.

Все

MaxIterations

Максимальное количество итераций.

Все

MaxMeshSize

Максимальный размер mesh используется на шаге опроса/поиска.

GPS и GSS

MaxTime

Общее время (в секундах) допускало оптимизацию. Также включает, любой заданный приостанавливает время для алгоритмов поиска шаблона.

Все

MeshContractionFactor

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

GPS и GSS

MeshExpansionFactor

Поймайте в сети фактор расширения, расширяет mesh, когда итерация успешна.

GPS и GSS

MeshRotate

Вращайте шаблон прежде, чем объявить, что точка оптимальна.

GPS Np1 и GSS Np1

MeshTolerance

Допуск на размере mesh.

Все

OutputFcn

Заданная пользователями функция, что поиск шаблона заходит в каждую итерацию.

Все

PenaltyFactor

Параметр обновления штрафа.

Все

PlotFcn

Задает функцию, чтобы построить во время выполнения.

Все

PlotInterval

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

Все

PollingOrder

Закажите, в котором опрашиваются поисковые направления.

GPS и GSS

PollMethod

Опрос стратегии используется в поиске шаблона.

Все

ScaleMesh

Автоматическое масштабирование переменных.

Все

SearchFcn

Задает метод поиска, используемый в поиске шаблона.

Все

StepTolerance

Допуск на независимой переменной.

Все

TolBind

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

Все

UseCompletePoll

Полный опрос вокруг тока выполняет итерации. Оцените все точки на шаге опроса.

Все

UseCompleteSearch

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

Все

UseParallel

Когда true, вычислите целевые функции опроса или поиска параллельно. Отключите путем установки на false.

Все

UseVectorized

Задает, векторизованы ли цель и ограничительные функции.

Все