exponenta event banner

patternsearch

Найти минимум функции с помощью поиска шаблона

Описание

пример

x = patternsearch(fun,x0) находит локальный минимум, x, к дескриптору функции fun вычисляет значения целевой функции. x0 - действительный вектор, задающий начальную точку для алгоритма поиска шаблона.

Примечание

В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как передать дополнительные параметры целевой функции и, при необходимости, нелинейным функциям ограничения.

пример

x = patternsearch(fun,x0,A,b) минимизирует fun с учетом линейных неравенств A*x ≤ b. См. раздел Ограничения линейного неравенства.

x = patternsearch(fun,x0,A,b,Aeq,beq) минимизирует fun в зависимости от линейных уравнений Aeq*x = beq и A*x ≤ b. Если линейных неравенств не существует, установите A = [] и b = [].

пример

x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub) определяет набор нижних и верхних границ для конструктивных переменных в x, чтобы решение всегда находилось в диапазоне lb  x  ub. Если линейных уравнений не существует, установите Aeq = [] и beq = []. Если x(i) не имеет нижней границы, набор lb(i) = -Inf. Если x(i) не имеет верхней границы, набор ub(i) = Inf.

пример

x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) подвергает минимизацию нелинейным неравенствам c(x) или равенства ceq(x) определено в nonlcon. patternsearch оптимизирует fun такой, что c(x) ≤ 0 и ceq(x) = 0. Если границ не существует, установите lb = [], ub = []или и то и другое.

пример

x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) минимизирует fun с опциями оптимизации, указанными в options. Использовать optimoptions для установки этих параметров. Если нет нелинейных ограничений неравенства или равенства, установите nonlcon = [].

x = patternsearch(problem) находит минимальное значение для problem, структура, описанная в problem.

пример

[x,fval] = patternsearch(___)для любого синтаксиса возвращает значение целевой функции fun на решении x.

пример

[x,fval,exitflag,output] = patternsearch(___) дополнительно возвращает exitflag, значение, которое описывает условие выхода patternsearchи структура output с информацией о процессе оптимизации.

Примеры

свернуть все

Минимизация неограниченной проблемы с помощью patternsearch решатель.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Найти минимум, начиная с точки [0,0].

x0 = [0,0];
x = patternsearch(fun,x0)
Optimization terminated: mesh size less than options.MeshTolerance.

x =

   -0.7037   -0.1860

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

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Задайте два линейных ограничения неравенства.

A = [-3,-2;
    -4,-7];
b = [-1;-8];

Найти минимум, начиная с точки [0.5,-0.5].

x0 = [0.5,-0.5];
x = patternsearch(fun,x0,A,b)
Optimization terminated: mesh size less than options.MeshTolerance.

x =

    5.2824   -1.8758

Найдите минимум функции, имеющей только ограничивающие ограничения.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Найдите минимум, когда$0 \le x(1) \le\infty$ и.$-\infty \le x(2) \le -3$

lb = [0,-Inf];
ub = [Inf,-3];
A = [];
b = [];
Aeq = [];
beq = [];

Найти минимум, начиная с точки [1,-5].

x0 = [1,-5];
x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub)
Optimization terminated: mesh size less than options.MeshTolerance.

x =

    0.1880   -3.0000

Найдите минимум функции, подверженной нелинейному ограничению неравенства.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Создание нелинейного ограничения

$$ \frac{{xy}}{2} + {\left( {x + 2} \right)^2} + \frac{{{{\left( {y - 2}
\right)}^2}}}{2} \le 2. $$

Для этого по пути MATLAB сохраните следующий код в файле с именем ellipsetilt.m.

function [c,ceq] = ellipsetilt(x)
ceq = [];
c = x(1)*x(2)/2 + (x(1)+2)^2 + (x(2)-2)^2/2 - 2;

Начать patternsearch от начальной точки [-2,-2].

x0 = [-2,-2];
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = @ellipsetilt;
x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Optimization terminated: mesh size less than options.MeshTolerance
 and constraint violation is less than options.ConstraintTolerance.

x =

   -1.5144    0.0874

Настройка параметров для наблюдения за ходом выполнения patternsearch способ решения проблемы.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Набор options для обеспечения итеративного отображения и построения графика целевой функции на каждой итерации.

options = optimoptions('patternsearch','Display','iter','PlotFcn',@psplotbestf);

Найти неограниченный минимум цели, начиная с точки [0,0].

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

Iter     f-count          f(x)      MeshSize     Method
    0        1              1             1      
    1        4       -5.88607             2     Successful Poll
    2        8       -5.88607             1     Refine Mesh
    3       12       -5.88607           0.5     Refine Mesh
    4       16       -5.88607          0.25     Refine Mesh

(output trimmed)

   63      218       -7.02545     1.907e-06     Refine Mesh
   64      221       -7.02545     3.815e-06     Successful Poll
   65      225       -7.02545     1.907e-06     Refine Mesh
   66      229       -7.02545     9.537e-07     Refine Mesh
Optimization terminated: mesh size less than options.MeshTolerance.

x =

   -0.7037   -0.1860

Найдите минимальное значение функции и сообщите как местоположение, так и значение минимума.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Найти неограниченный минимум цели, начиная с точки [0,0]. Возвращает расположение минимального значения, xи значение fun(x).

x0 = [0,0];
[x,fval] = patternsearch(fun,x0)
Optimization terminated: mesh size less than options.MeshTolerance.

x =

   -0.7037   -0.1860


fval =

   -7.0254

Для проверки patternsearch процесс решения, получение всех выходных данных.

Создайте следующую целевую функцию с двумя переменными. В пути MATLAB ® сохраните следующий код в файле с именемpsobj.m.

function y = psobj(x)

y = exp(-x(1)^2-x(2)^2)*(1+5*x(1) + 6*x(2) + 12*x(1)*cos(x(2)));

Задайте для целевой функции значение @psobj.

fun = @psobj;

Найти неограниченный минимум цели, начиная с точки [0,0]. Верните решение, x, значение целевой функции в решении, fun(x), флаг выхода и структуру вывода.

x0 = [0,0];
[x,fval,exitflag,output] = patternsearch(fun,x0)
Optimization terminated: mesh size less than options.MeshTolerance.

x =

   -0.7037   -0.1860


fval =

   -7.0254


exitflag =

     1


output = 

  struct with fields:

         function: @psobj
      problemtype: 'unconstrained'
       pollmethod: 'gpspositivebasis2n'
    maxconstraint: []
     searchmethod: []
       iterations: 66
        funccount: 229
         meshsize: 9.5367e-07
         rngstate: [1x1 struct]
          message: 'Optimization terminated: mesh size less than options.MeshTolerance.'

exitflag является 1, указывающее сходимость к локальному минимуму.

output структура включает информацию, например, сколько итераций patternsearch и сколько оценок функций. Сравните эту структуру вывода с результатами поиска массива с опциями по умолчанию. В этом примере вы получаете часть этой информации, но не получаете, например, количество аналитических отчетов функций.

Входные аргументы

свернуть все

Функция, подлежащая минимизации, указывается как дескриптор функции или имя функции. fun функция принимает вектор x и возвращает действительный скаляр f, которая является объективной функцией, оцениваемой на x.

Можно указать fun как дескриптор функции для файла

x = patternsearch(@myfun,x0)

Здесь, myfun является функцией MATLAB, такой как

function f = myfun(x)
f = ...            % Compute function value at x

fun также может быть дескриптором функции для анонимной функции

x = patternsearch(@(x)norm(x)^2,x0,A,b);

Пример: fun = @(x)sin(x(1))*cos(x(2))

Типы данных: char | function_handle | string

Начальная точка, заданная как действительный вектор. patternsearch использует количество элементов в x0 для определения количества переменных, которые fun принимает.

Пример: x0 = [1,2,3,4]

Типы данных: double

Линейные ограничения неравенства, заданные как вещественная матрица. A является Mоколо-nvars матрица, где M - число неравенств.

A кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца nvars переменные x(:), и b - вектор столбца с M элементы.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения неравенства, заданные как действительный вектор. b является M-элементный вектор, связанный с A матрица. Если вы проходите b как вектор строки, решатели внутренне преобразуют b к вектору столбца b(:).

b кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца N переменные x(:), и A является матрицей размера Mоколо-N.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения равенства, заданные как вещественная матрица. Aeq является Meоколо-nvars матрица, где Me - количество уравнений.

Aeq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и beq - вектор столбца с Me элементы.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

Типы данных: double

Линейные ограничения равенства, заданные как действительный вектор. beq является Me-элементный вектор, связанный с Aeq матрица. Если вы проходите beq как вектор строки, решатели внутренне преобразуют beq к вектору столбца beq(:).

beq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и Aeq является матрицей размера Meqоколо-N.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

Типы данных: double

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

x(i) >= lb(i)

для всех i.

Если numel(lb) < numel(x0), то lb указывает, что

x(i) >= lb(i)

для

1 <= i <= numel(lb)

В этом случае решатели выдают предупреждение.

Пример: Чтобы указать, что все управляющие переменные являются положительными, lb = zeros(size(x0))

Типы данных: double

Верхние границы, заданные как вещественный вектор или вещественный массив. Если количество элементов в x0 равно значению ub, то ub указывает, что

x(i) <= ub(i)

для всех i.

Если numel(ub) < numel(x0), то ub указывает, что

x(i) <= ub(i)

для

1 <= i <= numel(ub)

В этом случае решатели выдают предупреждение.

Пример: Чтобы указать, что все управляющие переменные меньше единицы, ub = ones(size(x0))

Типы данных: double

Нелинейные ограничения, указанные как дескриптор функции или имя функции. nonlcon - функция, принимающая вектор или массив; x и возвращает два массива, c(x) и ceq(x).

  • c(x) - массив нелинейных ограничений неравенства в x. patternsearch попытки удовлетворить

    c(x) <= 0

    для всех записей c.

  • ceq(x) - массив нелинейных ограничений равенства в x. patternsearch попытки удовлетворить

    ceq(x) = 0

    для всех записей ceq.

Например,

x = patternsearch(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)

где mycon является функцией MATLAB, такой как

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = ...   % Compute nonlinear equalities at x.
Дополнительные сведения см. в разделе Нелинейные ограничения.

Типы данных: char | function_handle | string

Параметры оптимизации, указанные как объект, возвращаемый optimoptions (рекомендуется) или структура.

optimoptions скрывает варианты, перечисленные курсивом; см. раздел Опциональные опции Скрытие.

{} обозначает значение по умолчанию. Дополнительные сведения см. в разделе Опции поиска массива.

Опции для patternsearch и paretosearch

ВыборОписаниеЦенности

ConstraintTolerance

Допуск на зависимости.

Для структуры опций используйте TolCon.

Положительный скаляр | {1e-6}

Display

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

'off' | 'iter' | 'diagnose' | {'final'}

MaxFunctionEvaluations

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

Для структуры опций используйте MaxFunEvals.

Положительное целое число | {'2000*numberOfVariables'} для patternsearch, {'3000*(numberOfVariables+numberOfObjectives)'} для paretosearch, где numberOfVariables - количество переменных проблемы, и numberOfObjectives - количество объективных функций

MaxIterations

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

Для структуры опций используйте MaxIter.

Положительное целое число | {'100*numberOfVariables'} для patternsearch, {'100*(numberOfVariables+numberOfObjectives)'} для paretosearch, где numberOfVariables - количество переменных проблемы, и numberOfObjectives - количество объективных функций

MaxTime

Общее время (в секундах), допустимое для оптимизации.

Для структуры опций используйте TimeLimit.

Положительный скаляр | {Inf}

MeshTolerance

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

Для структуры опций используйте TolMesh.

Положительный скаляр | {1e-6}

OutputFcn

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

Для структуры опций используйте OutputFcns.

Дескриптор функции или массив ячеек дескрипторов функции | {[]}

PlotFcn

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

Для структуры опций используйте PlotFcns.

{[]} | Для обоих patternsearch и paretosearch: 'psplotfuncount' | 'psplotmaxconstr' | пользовательская функция печати

Для paretosearch только с несколькими целями: 'psplotdistance' | 'psplotparetof' | 'psplotparetox' | 'psplotspread' | 'psplotvolume'

Для patternsearch только или paretosearch с одной целью: 'psplotbestf' | 'psplotmeshsize' | 'psplotbestx'

PollMethod

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

{'GPSPositiveBasis2N'} | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1'

Для paretosearch только: {'GSSPositiveBasis2np2'}

UseParallel

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

Примечание

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

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

true | {false}

UseVectorized

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

Примечание

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

Для структуры опций используйте Vectorized = 'on' или 'off'.

true | {false}

Опции для paretosearch Только

ВыборОписаниеЦенности

InitialPoints

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

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

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

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

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

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

paretosearch вычисляет все отсутствующие значения в Fvals и Cineq поля.

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

MinPollFraction

Минимальная доля образца для опроса.

Скаляр от 0 до 1 | {0}

ParetoSetSize

Количество точек в наборе Парето.

Положительное целое число | {'max(numberOfObjectives, 60)'}, где numberOfObjectives - количество объективных функций

ParetoSetChangeTolerance

Решатель останавливается, когда относительное изменение меры остановки в окне итераций меньше или равно ParetoSetChangeTolerance.

  • Для трех или менее целей, paretosearch использует измерения объема и разброса.

  • Для четырех или более целей, paretosearch использует измерения разброса и расстояния.

См. раздел Определения алгоритма паретосearch.

Решатель останавливается, когда относительное изменение любого применимого измерения меньше ParetoSetChangeToleranceили максимум квадратичных преобразований Фурье временных рядов этих мер относительно мал. См. раздел Алгоритм поиска.

Примечание

Настройка ParetoSetChangeTolerance < sqrt(eps) ~ 1.5e-8 не рекомендуется.

Положительный скаляр | {1e-4}

Опции для patternsearch Только

ВыборОписаниеЦенности
Тайник

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

Примечание

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

'on' | {'off'}

CacheSize

Размер истории.

Положительный скаляр | {1e4}

CacheTol

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

Положительный скаляр | {eps}

FunctionTolerance

Допуск для функции. Итерации останавливаются, если изменение значения функции меньше FunctionTolerance и размер сетки меньше, чем StepTolerance. Этот параметр не применяется к опросу MADS.

Для структуры опций используйте TolFun.

Положительный скаляр | {1e-6}

InitialMeshSize

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

Положительный скаляр | {1.0}

InitialPenalty

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

Положительный скаляр | {10}

MaxMeshSize

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

Положительный скаляр | {Inf}

MeshContractionFactor

Коэффициент сжатия сетки для неудачной итерации.

Для структуры опций используйте MeshContraction.

Положительный скаляр | {0.5}

MeshExpansionFactor

Коэффициент расширения сетки для успешной итерации.

Для структуры опций используйте MeshExpansion.

Положительный скаляр | {2.0}

MeshRotate

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

'off' | {'on'}

PenaltyFactor

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

Положительный скаляр | {100}

PlotInterval

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

положительное целое число | {1}

PollOrderAlgorithm

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

Для структуры опций используйте PollingOrder.

'Random' | 'Success' | {'Consecutive'}

ScaleMesh

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

Для структуры опций используйте ScaleMesh = 'on' или 'off'.

{true}| false

SearchFcn

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

Для структуры опций используйте SearchMethod.

'GPSPositiveBasis2N' | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1' | 'searchga' | 'searchlhs' | 'searchneldermead' | {[]} | пользовательская функция поиска

StepTolerance

Допуск для переменной. Итерации останавливаются, если и изменение положения, и размер сетки меньше StepTolerance. Этот параметр не применяется к опросу MADS.

Для структуры опций используйте TolX.

Положительный скаляр | {1e-6}

TolBind

Допуск привязки. См. раздел Параметры ограничения.

Положительный скаляр | {1e-3}

UseCompletePoll

Выполните опрос вокруг текущей точки. См. раздел Как работает опрос поиска шаблонов.

Для структуры опций используйте CompletePoll = 'on' или 'off'.

true | {false}

UseCompleteSearch

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

Для структуры опций используйте CompleteSearch = 'on' или 'off'.

true | {false}

Пример: options = optimoptions('patternsearch','MaxIterations',150,'MeshTolerance',1e-4)

Типы данных: struct

Структура проблемы, заданная как структура со следующими полями:

  • objective - Целевая функция

  • x0 - Начальная точка

  • Aineq - Матрица для линейных ограничений неравенства

  • bineq - Вектор для линейных ограничений неравенства

  • Aeq - Матрица для линейных ограничений равенства

  • beq - Вектор для линейных ограничений равенства

  • lb - Нижняя граница для x

  • ub - Верхняя граница для x

  • nonlcon - Функция нелинейных ограничений

  • solver'patternsearch'

  • options - Параметры, созданные с помощью optimoptions или psoptimset

  • rngstate - Необязательное поле для сброса состояния генератора случайных чисел

Примечание

Все поля в problem являются обязательными.

Типы данных: struct

Выходные аргументы

свернуть все

Решение, возвращенное как реальный вектор. Размер x совпадает с размером x0. Когда exitflag является положительным, x обычно является локальным решением проблемы.

Значение целевой функции в решении, возвращаемое как вещественное число. Как правило, fval = fun(x).

Причина patternsearch остановлено, возвращено как целое число.

Флаг выходаЗначение

1

Без нелинейных ограничений - величина размера сетки меньше заданного допуска, а нарушение ограничения меньше ConstraintTolerance.

С нелинейными ограничениями - величина показателя комплементарности (определенного после этой таблицы) меньше, чем sqrt(ConstraintTolerance), подпроблема решается с использованием сетки тоньше, чем MeshTolerance, и нарушение ограничения меньше, чем ConstraintTolerance.

2

Изменение в x и размер сетки меньше указанного допуска, а нарушение ограничения меньше ConstraintTolerance.

3

Изменение в fval и размер сетки меньше указанного допуска, а нарушение ограничения меньше ConstraintTolerance.

4

Величина шага меньше точности станка, а нарушение ограничения меньше ConstraintTolerance.

0

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

-1

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

-2

Выполнимая точка не найдена.

В решателе нелинейных ограничений мера комплементарности является нормой вектора, элементами которого являются ciλ i, где ci - нарушение ограничения нелинейных неравенств, λ i - соответствующий множитель Лагранжа.

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

  • function - Целевая функция.

  • problemtype - Тип проблемы, один из:

    • 'unconstrained'

    • 'boundconstraints'

    • 'linearconstraints'

    • 'nonlinearconstr'

  • pollmethod - Методика опроса.

  • searchmethod - Используется метод поиска, если таковой имеется.

  • iterations - общее число итераций.

  • funccount - Общее количество оценок функций.

  • meshsize - Размер сетки при x.

  • maxconstraint - Максимальное нарушение ограничений, если таковое имеется.

  • rngstate - состояние генератора случайных чисел MATLAB непосредственно перед запуском алгоритма. Можно использовать значения в rngstate для воспроизведения выходных данных при использовании метода случайного поиска или метода случайного опроса. См. раздел Воспроизведение результатов, в котором рассматривается идентичный метод для ga.

  • message - Причина прекращения работы алгоритма.

Алгоритмы

По умолчанию patternsearch поиск минимума на основе адаптивной сетки, которая при отсутствии линейных зависимостей выравнивается по направлениям координат. Смотрите раздел Что такое прямой поиск? и как работает опрос поиска шаблонов.

Альтернативная функциональность

Приложение

Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для patternsearch.

Ссылки

[1] Оде, Чарльз и Дж. Э. Деннис-младший «Анализ обобщенных поисков шаблонов». Журнал SIAM по оптимизации. Том 13, номер 3, 2003, стр. 889-903.

[2] Конн, А. Р., Н. И. М. Гулд и Ф. Л. Тоунт. «Глобально конвергентный дополненный лагранжевый барьерный алгоритм для оптимизации с общими ограничениями неравенства и простыми границами». Математика вычислений. Том 66, номер 217, 1997, стр. 261-288.

[3] Абрамсон, Марк А. Алгоритмы фильтра поиска шаблонов для проблем смешанной переменной общей ограниченной оптимизации. Доктор философии. Диссертация, факультет вычислительной и прикладной математики, Университет Райса, август 2002 года.

[4] Абрамсон, Марк А., Шарль Оде, Дж. Э. Деннис-младший и Себастьен Ле Дигабель. «ORTHOMADS: детерминированный экземпляр MADS с ортогональными направлениями». Журнал SIAM по оптимизации. Том 20, номер 2, 2009, стр. 948-966.

[5] Кольда, Тамара Г., Роберт Майкл Льюис и Вирджиния Торкзон. «Оптимизация прямым поиском: новые перспективы некоторых классических и современных методов». Обзор СИАМ. Том 45, выпуск 3, 2003, стр. 385-482.

[6] Кольда, Тамара Г., Роберт Майкл Льюис и Вирджиния Торкзон. «Генерирующий набор прямого поиска увеличил алгоритм Лагранжа для оптимизации с комбинацией общих и линейных ограничений». Технический отчет SAND2006-5315, национальные лаборатории Сандии, август 2006 года.

[7] Льюис, Роберт Майкл, Энн Шепард и Вирджиния Торкзон. «Реализация методов поиска набора генерации для минимизации с линейными ограничениями». Журнал SIAM по научным вычислениям. Том 29, выпуск 6, 2007, стр. 2507-2530.

Расширенные возможности

Представлен до R2006a