Установите опции для 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
:
x
- Current point
fval
- Значение целевой функции
iteration
- Число итерации
funccount
- Количество вычислений функции
nonlinineq
- Нелинейные ограничения неравенства, отображаемые только, когда задана нелинейная функция ограничения
nonlineq
- Нелинейные ограничения равенства, всегда пустые []
volume
- Объемная мера (см. Определения алгоритма паретозарядов)
averagedistance
- Измерение расстояния (см. Определения для алгоритма паретозаряда)
spread
- Спред-мера (см. Определения алгоритма паретозарядов)
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 | Начальные точки для
Если в | Матрица с |
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
- Алгоритм завершается при текущей итерации.
options
— patternsearch
опции.
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 = true | UseVectorized = false | UseVectorized = true |
---|---|---|
UseParallel = false | Последовательный | Векторизованный |
UseParallel = true | Параллель | Векторизованный |
Таблица доступности опций для всех алгоритмов
Опция | Описание | Доступность алгоритма |
---|---|---|
AccelerateMesh | Ускорите сужение размера сетки. | GPS и GSS |
Cache | С Примечание
| Все |
CacheSize | Размер кэша, в число точек. | Все |
CacheTol | Положительные скалярные величины, определяющие, как закрыть текущую точку сетки, должна быть точка в кэше, порядке для | Все |
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 | Когда | Все |
UseVectorized | Определяет, векторизированы ли функции цели и ограничения. | Все |