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

Опции для поиска шаблона

Установите опции для patternsearch при помощи optimoptions.

options = optimoptions('patternsearch','Option1','value1','Option2','value2');
  • Некоторые опции перечислены в italics. Эти опции не появляются в листинге это optimoptions возвращается. Видеть почему'optimoptions скрывает эти значения опции, см. Опции, которые Скрывает optimoptions.

  • Убедитесь, что вы передаете опции решателю. В противном случае, patternsearch использует значения опции по умолчанию.

    [x,fval] = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

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

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

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

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

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

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

Доступные функции построения графика для patternsearch или для paretosearch с одной целевой функцией:

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

  • 'psplotfuncount' — Постройте количество вычислений функции.

  • 'psplotmeshsize' — Постройте размер mesh.

  • 'psplotbestx' — Постройте текущую лучшую точку.

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

  • Можно также создать и использовать собственную функцию построения графика. Структура Функций построения графика описывает структуру пользовательской функции построения графика. Передайте любую пользовательскую функцию как указатель на функцию.

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

  • 'psplotfuncount' — Постройте количество вычислений функции.

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

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

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

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

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

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

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

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

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

function stop = plotfun(optimvalues, flag)

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

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

    • x CurrentPoint

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 'done' — Конечное состояние

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

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

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

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

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

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

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

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

  • Шаблон по умолчанию для patternsearch, '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].

  • 'GSSPositiveBasis2N' шаблон похож на 'GPSPositiveBasis2N', но настраивает базисные векторы с учетом линейных ограничений. 'GSSPositiveBasis2N' более эффективно, чем 'GPSPositiveBasis2N' когда текущая точка около линейной границы ограничений.

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

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

  • 'GSSPositiveBasisNp1' шаблон похож на 'GPSPositiveBasisNp1', но настраивает базисные векторы с учетом линейных ограничений. 'GSSPositiveBasisNp1' более эффективно, чем 'GPSPositiveBasisNp1' когда текущая точка около линейной границы ограничений.

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

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

UseCompletePoll задает, должны ли все точки в текущей mesh быть опрошены в каждой итерации. UseCompletePoll может иметь значения true или false.

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

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

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

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

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

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

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

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

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 столбцы | структура | {[]}

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

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

Значения для SearchFcn описаны ниже.

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

  • Любой встроенный алгоритм опроса: 'GPSPositiveBasis2N', 'GPSPositiveBasisNp1', 'GSSPositiveBasis2N', 'GSSPositiveBasisNp1', 'MADSPositiveBasis2N', или 'MADSPositiveBasisNp1'.

  • 'searchga' задает поиск с помощью генетического алгоритма. Можно изменить поиск генетического алгоритма использование двух дополнительных параметров:

    options = optimoptions('patternsearch','SearchFcn',...
           {@searchga,iterlim,optionsGA})
    • iterlim — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется поиск генетического алгоритма. Значение по умолчанию для iterlim 1. Рекомендация не состоит в том, чтобы изменить это значение, потому что выполнение этих длительных поисковых запросов несколько раз вряд ли улучшит результаты.

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

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

    Путем поиск выполняется, зависит от установки для UseCompleteSearch опция.

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

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

    Можно изменить латинский поиск гиперкуба использование двух дополнительных параметров:

    options = optimoptions('patternsearch','SearchFcn',...
        {@searchlhs,iterlim,level})
    • iterlim — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется латинский поиск гиперкуба. Значение по умолчанию для iterlim 1.

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

  • 'searchneldermead' задает поисковое использование fminsearch, который использует алгоритм Nelder-меда. Можно изменить поиск Nelder-меда использование двух дополнительных параметров:

    options = optimoptions('patternsearch','SearchFcn',...
         {@searchneldermead,iterlim,optionsNM})
    • iterlim — Положительное целое число, задающее количество итераций поиска шаблона, который выполняется поиск Nelder-меда. Значение по умолчанию для iterlim 1.

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

  • Custom позволяет вам записать свою собственную поисковую функцию.

    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 — Счетчик для оценки функции пользователя

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

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

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

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

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

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

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

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

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

Смотрите Поиск и Опрос для примера.

Полный поиск

UseCompleteSearch опция применяется, когда вы устанавливаете SearchFcn к 'GPSPositiveBasis2N', 'GPSPositiveBasisNp1', 'GSSPositiveBasis2N', 'GSSPositiveBasisNp1', 'MADSPositiveBasis2N', 'MADSPositiveBasisNp1', или 'searchlhs'. UseCompleteSearch может иметь значения true или false.

Для поисковых функций, которые являются алгоритмами опроса, UseCompleteSearch имеет то же значение как опция опроса UseCompletePoll. Для значения UseCompleteSearch для латинского поиска гиперкуба смотрите 'searchlhs' запись в Параметрах поиска.

Настройки сетки

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

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

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

  • AccelerateMesh задает, ли, когда размер mesh мал, MeshContractionFactor умножается на 0.5 после каждой неудачной итерации. AccelerateMesh может иметь значения true (используйте акселератор), или false (не используйте акселератор), значение по умолчанию. AccelerateMesh применяется к GPS и алгоритмам GSS.

  • MeshRotate применяется только когда PollMethod 'GPSPositiveBasisNp1' или 'GSSPositiveBasisNp1'. MeshRotate = 'On' указывает, что векторы mesh умножаются на –1, когда размер mesh меньше 1/100 MeshTolerance опция после неудачного опроса. Другими словами, после первого неудачного опроса с небольшим размером mesh, вместо того, чтобы опросить в направлениях ei (модульные положительные направления) и –Σei, алгоритм опрашивает в направлениях –ei и Σei. MeshRotate может иметь значения 'Off' или 'On' (значение по умолчанию).

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

    • Когда проблема имеет ограничения равенства, MeshRotate отключен.

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

  • MeshExpansionFactor задает фактор, на который размер mesh увеличен после успешного опроса. Значением по умолчанию является 2.0, что означает, что размер mesh умножается на 2.0 после успешного опроса. MeshExpansionFactor должен быть положительная скалярная величина и только используется, когда GPS или метод GSS выбраны как Опрос или Метод поиска. MADS использует MeshExpansionFactor из 4.0. Смотрите Расширение Mesh и Сокращение для получения дополнительной информации.

  • MeshContractionFactor задает фактор, которым размер mesh уменьшен после неудачного опроса. Значением по умолчанию является 0.5, что означает, что размер mesh умножается на 0.5 после неудачного опроса. MeshContractionFactor должен быть положительная скалярная величина и только используется, когда GPS или метод GSS выбраны как Опрос или Метод поиска. MADS использует MeshContractionFactor из 0.25. Смотрите Расширение Mesh и Сокращение для получения дополнительной информации.

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

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

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

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

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

Опции кэша

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

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

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

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

Примечание

Cache не работает, когда вы запускаете решатель параллельно.

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

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

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

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

MaxIterations задает максимальное количество итераций, которые выполняет алгоритм. Алгоритм останавливается, если количество итераций достигает MaxIterations. Значением по умолчанию является 100 раз количество независимых переменных.

MaxFunctionEvaluations задает максимальное количество оценок целевой функции. Алгоритм останавливается, если количество вычислений функции достигает MaxFunctionEvaluations. Значением по умолчанию является 2000 раз количество независимых переменных.

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

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

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

Смотрите Устанавливающие Погрешности Решателя для примера.

ConstraintTolerance не используется в качестве останавливающегося критерия. Это используется, чтобы определить выполнимость относительно нелинейных ограничений. Значением по умолчанию является 1e-6.

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

OutputFcn задает функции, которые вызывает на каждой итерации алгоритм поиска шаблона. Для файла выходной функции myfun.mНабор

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

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

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

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

edit psoutputfcntemplate

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

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

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

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

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

MATLAB передает optimvaluesОпции, и flag данные к вашей выходной функции и выходной функции возвращают stopОпции, и 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, отображенный только, когда нелинейная ограничительная функция задана

  • options Опции

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

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

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

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

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

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

    • 'done' — Конечное состояние

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

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

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

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

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

  • optionspatternsearch опции.

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

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

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

  • 'final' (значение по умолчанию) — Причина остановки отображена.

  • 'off' или эквивалентный 'none' — Никакой вывод не отображен.

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

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

Оба 'iter' и 'diagnose' отобразите следующую информацию:

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

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

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

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

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

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

Векторизованные и параллельные опции

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

Примечание

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

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

  • Когда UseVectorized false, patternsearch вызывает целевую функцию на одной точке за один раз, когда это циклично выполняется через точки mesh. (Это принимает UseParallel в его значении по умолчанию false.)

  • UseVectorized true, patternsearch вызывает целевую функцию на всех точках в mesh целиком, i.e., в одном вызове целевой функции.

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

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

  • Когда UseParallel 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 запуски медленно, потому что требуется много времени, чтобы вычислить целевую функцию. Если целевая функция является стохастической, рекомендуется не использовать эту опцию.

Примечание

Cache не работает, когда вы запускаете решатель параллельно.

Все

CacheSize

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

Все

CacheTol

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

Все

ConstraintTolerance

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

Все

Display

Level of 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

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

Все

PollOrderAlgorithm

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

GPS и GSS

PollMethod

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

Все

ScaleMesh

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

Все

SearchFcn

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

Все

StepTolerance

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

Все

TolBind

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

Все

UseCompletePoll

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

Все

UseCompleteSearch

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

Все

UseParallel

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

Все

UseVectorized

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

Все