patternsearch

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

Описание

пример

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

Примечание

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

пример

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 решатель.

Создайте следующую 2D переменную целевую функцию. На вашем пути 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

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

Создайте следующую 2D переменную целевую функцию. На вашем пути 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

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

Создайте следующую 2D переменную целевую функцию. На вашем пути 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

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

Создайте следующую 2D переменную целевую функцию. На вашем пути 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 процесс решения.

Создайте следующую 2D переменную целевую функцию. На вашем пути 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 = 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

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

Создайте следующую 2D переменную целевую функцию. На вашем пути 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 процесс решения, получите все выходные параметры.

Создайте следующую 2D переменную целевую функцию. На вашем пути 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), выходной флаг и структура output.

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 взял, и сколько вычислений функции. Сравните эту структуру output с результатами Поиска Шаблона с Опциями Не по умолчанию. В том примере вы получаете часть этой информации, но не получили, например, количество вычислений функции.

Входные параметры

свернуть все

Функция, которая будет минимизирована в виде указателя на функцию или имени функции. 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 элементы.

Например, чтобы задать

x 1 + 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.

Например, чтобы задать

x 1 + 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 элементы.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 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.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 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 скрывает опции, перечисленные курсивом; см. Опции, которые Скрывает optimoptions.

{} обозначает значение по умолчанию. Смотрите детали опции в Параметрах поиска Шаблона.

Опции для patternsearch и paretosearch

ОпцияОписаниеЗначения

ConstraintTolerance

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

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

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

Display

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

Допуск на размере mesh.

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

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

OutputFcn

Функция, которую вызывает на каждой итерации оптимизационная функция. Определите функцией указатель или cell-массив указателей на функцию.

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

Указатель на функцию или cell-массив указателей на функцию | {[]}

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

Вычислите объективные и нелинейные ограничительные функции параллельно. См. Векторизованные и Параллельные Опции и Как Использовать Параллельную обработку в Global Optimization Toolbox.

Примечание

Необходимо установить 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 использует меры по расстоянию и распространение.

См. Определения для paretosearch Алгоритма.

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

Примечание

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

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

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

ОпцияОписаниеЗначения
Кэш

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

Примечание

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

'on' | {'off'}

CacheSize

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

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

CacheTol

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

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

FunctionTolerance

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

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

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

InitialMeshSize

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

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

InitialPenalty

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

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

MaxMeshSize

Максимальный размер mesh используется в опросе или поисковом шаге. Смотрите Как Поиск Шаблона Опрос работ.

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

MeshContractionFactor

Поймайте в сети фактор сокращения для неудачной итерации.

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

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

MeshExpansionFactor

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

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

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

MeshRotate

Вращайте шаблон прежде, чем объявить, что точка оптимальна. См. Опции Mesh.

'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

Допуск на переменной. Итерации останавливаются, если и изменение в положении и размер mesh меньше 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 остановленный, возвращенный как целое число.

Exitflag Значение

1

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

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

2

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

3

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

4

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

0

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

-1

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

-2

Никакая допустимая точка не найдена.

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

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

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

  • problemtype — Проблемный тип, один из:

    • 'unconstrained'

    • 'boundconstraints'

    • 'linearconstraints'

    • 'nonlinearconstr'

  • pollmethod — Опрос метода.

  • searchmethod — Поисковый используемый метод, если таковые имеются.

  • iterations — Общее количество итераций.

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

  • meshsize — Поймайте в сети размер в x.

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

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

  • message — Рассуждайте почему отключенный алгоритм.

Алгоритмы

По умолчанию, patternsearch ищет минимум на основе адаптивной mesh, которая, в отсутствие линейных ограничений, выравнивается с координатными направлениями. Смотрите то, Что Прямой Поиск? и Как Поиск Шаблона Опрос работ.

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

Приложение

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

Ссылки

[1] Audet, Чарльз и Дж. Э. Деннис младший “Анализ Обобщенных Поисковых запросов Шаблона”. SIAM Journal на Оптимизации. Объем 13, Номер 3, 2003, стр 889–903.

[2] Коннектикут, A. R. Н. Ай. М. Гулд и Ph Л. Тойнт. “Глобально Конвергентный Увеличенный лагранжевый Алгоритм Барьера для Оптимизации с Общими Ограничениями неравенства и Простыми Границами”. Математика Расчета. Объем 66, Номер 217, 1997, стр 261–288.

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

[4] Абрэмсон, Марк А., Чарльз Одет, Дж. Э. Деннис младший и Себастьен Ле Дигабэль. “ORTHOMADS: детерминированный экземпляр MADS с ортогональными направлениями”. SIAM Journal на Оптимизации. Объем 20, Номер 2, 2009, стр 948–966.

[5] Колда, Тамара Г., Роберт Майкл Льюис и Вирджиния Торкзон. “Оптимизация прямым поиском: новые взгляды на некоторые классические и современные методы”. Анализ SIAM. Объем 45, Выпуск 3, 2003, стр 385–482.

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

[7] Льюис, Роберт Майкл, Энн Шепэрд и Вирджиния Торкзон. “Реализовывая генерацию методов поиска набора для линейно ограниченной минимизации”. SIAM Journal на Научных вычислениях. Объем 29, Выпуск 6, 2007, стр 2507–2530.

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

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