exponenta event banner

Параметры поиска по образцу

Параметры поиска по образцу

Задать параметры для patternsearch с помощью optimoptions.

options = optimoptions('patternsearch','Option1','value1','Option2','value2');
  • Некоторые опции перечислены в italics. Эти параметры не отображаются в объявлении, 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');

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

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

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

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

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

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

  • 'psplotmeshsize' - Постройте график размера сетки.

  • 'psplotbestx' - Постройте график текущей лучшей точки.

  • 'psplotmaxconstr' - постройте график максимального нарушения нелинейных ограничений.

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

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

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

  • 'psplotmaxconstr' - постройте график максимального нарушения нелинейных ограничений.

  • 'psplotdistance' - Постройте график метрики расстояния. См. раздел Алгоритм поиска.

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

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

  • 'psplotspread' - Постройте график разворотной метрики. См. раздел Алгоритм поиска.

  • 'psplotvolume' - Постройте график метрики объема. См. раздел Алгоритм поиска.

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

Структура функций графика

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

function stop = plotfun(optimvalues, flag)

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

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

    • x - Текущая точка

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

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

    • meshsize - Текущий размер сетки

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

    • method - Метод, использованный в последней итерации

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

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

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

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

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

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

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

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

    • 'interrupt' - Промежуточная ступень

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

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

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

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

  • false - алгоритм переходит к следующей итерации.

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

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

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

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

  • Шаблон по умолчанию для patternsearch, 'GPSPositiveBasis2N', состоит из следующих векторов 2N, где 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' шаблон состоит из 2N случайно сгенерированных векторов, где N - количество независимых переменных для целевой функции. Это делается путем случайного генерирования N векторов, которые образуют линейно независимое множество, затем, используя это первое множество и отрицательный из этого множества дает 2N векторов. Как показано выше, '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' шаблон использует GSS 2N шаблоны, а также использует [1 1 ... 1] и [-1 -1 ... -1] паттерны.

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

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

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

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

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

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

  • 'Random' - Порядок опроса является случайным.

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

Мультиобъективные опции

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

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

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

ВыборОпределениеРазрешено и {Дефолт} Ценности
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, используется только метод Poll, хотя оба метода используются, когда выбранные параметры различаются.

Значения для 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), деленное на k. (k - количество точек.) Это дает k точки, при этом каждый компонент находится на равном расстоянии друг от друга. Полученные точки затем масштабируются в соответствии с любыми границами. Latin hypercube использует границы по умолчанию -1 и 1.

    Способ выполнения поиска зависит от настроек для UseCompleteSearch вариант.

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

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

    Поиск гиперкубов на латинском языке можно изменить с помощью двух дополнительных параметров:

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

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

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

    options = optimoptions('patternsearch','SearchFcn',...
         {@searchneldermead,iterlim,optionsNM})
    • iterlim - положительное целое число, указывающее число итераций поиска шаблона, для которого выполняется поиск Нелдера-Мид. Значение по умолчанию для 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 - Текущая точка

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

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

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

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

    • x - Текущая точка

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

    • iteration - Номер текущей итерации

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

    • scale - Масштабный коэффициент, используемый для масштабирования расчетных точек

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

    • meshsize - Текущий размер сетки, используемый на шаге поиска

    • method - Метод, использованный в последней итерации

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

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

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

  • xBest,fBest - Наилучшая точка и наилучшее значение функции, найденные методом поиска

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

Пример см. в разделе Поиск и опрос.

Полный поиск

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

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

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

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

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

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

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

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

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

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

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

  • MeshExpansionFactor задает коэффициент увеличения размера сетки после успешного опроса. Значение по умолчанию: 2.0, что означает, что размер сетки умножается на 2.0 после успешного опроса. MeshExpansionFactor должен быть положительным скаляром и используется только при выборе метода GPS или GSS в качестве метода опроса или поиска. MADS использует MeshExpansionFactor из 4.0. Дополнительные сведения см. в разделе Расширение и сжатие сетки.

  • MeshContractionFactor задает коэффициент уменьшения размера сетки после неудачного опроса. Значение по умолчанию: 0.5, что означает, что размер сетки умножается на 0.5 после неудачного опроса. MeshContractionFactor должен быть положительным скаляром и используется только при выборе метода GPS или GSS в качестве метода опроса или поиска. MADS использует MeshContractionFactor из 0.25. Дополнительные сведения см. в разделе Расширение и сжатие сетки.

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

Сведения о значении штрафных параметров см. в разделе Алгоритм решателя нелинейных ограничений.

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

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

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

Параметры кэша

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

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

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

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

Примечание

Cache не работает при параллельном запуске решателя.

Дополнительные сведения см. в разделе Использование кэша.

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

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

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

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

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

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

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

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

Пример см. в разделе Настройка допусков решателя.

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

Параметры функции вывода

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

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

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

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

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

edit psoutputfcntemplate

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

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

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

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

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

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

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

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

    • x - Текущая точка

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

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

    • meshsize - Текущий размер сетки

    • 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 - Текущий размер сетки

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

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

  • Max Constraint - максимальное нарушение нелинейных ограничений (отображается только в том случае, если указана функция нелинейных ограничений);

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

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

Примечание

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

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

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

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

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

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

  • Когда UseParallel является true, patternsearch вызов целевой функции параллельно с использованием созданной параллельной среды (см. раздел Использование параллельной обработки в инструментарии глобальной оптимизации). В командной строке установить 'UseParallel' кому false для последовательного вычисления.

Примечание

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

Оценка целевых функций и функций ограничения

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

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

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

ВыборОписаниеДоступность алгоритма
AccelerateMesh

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

GPS и GSS

Cache

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

Примечание

Cache не работает при параллельном запуске решателя.

Все

CacheSize

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

Все

CacheTol

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

Все

ConstraintTolerance

Допуск для нелинейных зависимостей.

Все

Display

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

Все

FunctionTolerance

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

Все

InitialMeshSize

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

Все

InitialPenalty

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

Все

MaxFunctionEvaluations

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

Все

MaxIterations

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

Все

MaxMeshSize

Максимальный размер сетки, используемый на этапе опроса/поиска.

GPS и GSS

MaxTime

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

Все

MeshContractionFactor

Коэффициент сжатия сетки, используемый при неудачной итерации.

GPS и GSS

MeshExpansionFactor

Коэффициент расширения сетки, расширяет сетку при успешном выполнении итерации.

GPS и GSS

MeshRotate

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

GPS Np1 и GSS Np1

MeshTolerance

Допуск для размера сетки.

Все

OutputFcn

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

Все

PenaltyFactor

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

Все

PlotFcn

Определяет функцию для печати во время выполнения.

Все

PlotInterval

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

Все

PollOrderAlgorithm

Порядок опроса направлений поиска.

GPS и GSS

PollMethod

Стратегия опроса, используемая при поиске шаблона.

Все

ScaleMesh

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

Все

SearchFcn

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

Все

StepTolerance

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

Все

TolBind

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

Все

UseCompletePoll

Завершить опрос вокруг текущего итерата. Оцените все точки в шаге опроса.

Все

UseCompleteSearch

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

Все

UseParallel

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

Все

UseVectorized

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

Все