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

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

Установите опции для 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 в окне plot. Для примера, чтобы отобразить лучшее значение функции, установите options следующим образом:

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

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

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 - Current point

    • 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) и алгоритм сетчатого адаптивного прямого поиска (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].

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

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

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

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

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

  • Для paretosearch только значение по умолчанию 'GSSPositiveBasis2Np2' шаблон использует GSS 2N шаблоны, а также использует [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 в последовательном порядке, то есть порядке векторов шаблона, как описано в Poll Method.

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

  • 'Success' - Первое направление поиска при каждой итерации является направлением, в котором алгоритм нашел лучшую точку при предыдущей итерации. После первой точки алгоритм опрашивает mesh в том же порядке, как '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 столбцы | структура | {[]}

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

The 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 - The 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 - Current point

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

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

  • lb,ub - Нижняя и верхняя ограничения

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

    • x - Current point

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

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

    • funccount - Счетчик для вычисления функции

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

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

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

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

  • options - Опции поиска шаблона

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

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

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

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

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

Полный поиск

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

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

Опции сетки

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

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

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

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

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

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

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

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

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

  • MeshContractionFactor задает коэффициент, на который уменьшается размер сетки после неудачного опроса. Значение по умолчанию 0.5, что означает, что размер mesh умножается на 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 задает, насколько близко mesh-точка должна быть к точке в кэше, чтобы алгоритм пропустил опрос. CacheTol должен быть положительная скалярная величина. Значение по умолчанию eps.

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

Примечание

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

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

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

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

MeshTolerance задает минимальный допуск для размера сетки. Алгоритмы GPS и GSS останавливаются, если размер сетки становится меньше MeshTolerance. MADS 2N останавливается, когда размер сетки становится меньше MeshTolerance^2. MADS Np1 останавливается, когда размер сетки становится меньше (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, set

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

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

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 - Current point

    • 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, т.е. одним вызовом целевой функции.

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

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

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

Примечание

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

Как оцениваются функции Object и Constraint

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

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

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

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

Ускорите сужение размера сетки.

GPS и GSS

Cache

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

Примечание

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

Все

CacheSize

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

Все

CacheTol

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

Все

ConstraintTolerance

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

Все

Display

Level of display в Командном окне.

Все

FunctionTolerance

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

Все

InitialMeshSize

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

Все

InitialPenalty

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

Все

MaxFunctionEvaluations

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

Все

MaxIterations

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

Все

MaxMeshSize

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

GPS и GSS

MaxTime

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

Все

MeshContractionFactor

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

GPS и GSS

MeshExpansionFactor

Коэффициент расширения сетки, расширяет mesh, когда итерация успешна.

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

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

Все