patternsearch

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

Синтаксис

x = patternsearch(fun,x0)
x = patternsearch(fun,x0,A,b)
x = patternsearch(fun,x0,A,b,Aeq,beq)
x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub)
x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = patternsearch(problem)
[x,fval] = patternsearch(___)
[x,fval,exitflag,output] = patternsearch(___)

Описание

пример

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

Примечание

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

пример

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

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 является структурой, описанной во Входных параметрах. Создайте структуру problem путем экспорта проблемы из приложения Оптимизации, как описано в Экспорте работы (Optimization Toolbox).

пример

[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;

Найдите минимум когда и.

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;

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

Для этого на вашем пути 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 давать итеративное отображение и строить целевую функцию при каждой итерации.

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), выходном флаге и выходной структуре.

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-by-N матрица, где M является количеством неравенств, и N является количеством переменных (число элементов в x0).

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

A*x <= b,

где x является вектор-столбцом переменных N 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-by-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-by-N матрица, где Me является количеством равенств, и N является количеством переменных (число элементов в x0).

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

Aeq*x = beq,

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

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

x 1 + 2x2 + 3x3 ≤ 10
2x1 + 4x2 + x 3 ≤ 20,

дайте эти ограничения:

A = [1,2,3;2,4,1];
b = [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-by-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.
Для получения дополнительной информации смотрите Нелинейные Ограничения (Optimization Toolbox).

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

Опции оптимизации, заданные как объект, возвращенный optimoptions (рекомендуемым), или структура. Можно также использовать опции, экспортируемые из приложения Оптимизации. Для получения дополнительной информации смотрите Параметры поиска Шаблона.

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

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

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

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

OutputFcn

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

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

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

PlotFcn

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

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

{[]} | И для patternsearch и для paretosearch: 'psplotfuncount' | пользовательская функция построения графика

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

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

PollMethod

Опрос стратегии используется в поиске шаблона.

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

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

UseParallel

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

true | {false}

UseVectorized

Задает, векторизованы ли функции. См. Векторизованные и Параллельные Опции (Оценка Функции пользователя) и Векторизуйте Функции Цели и Ограничения.

Для структуры опций используйте 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 медленно запускается при вычислении целевой функции. Если целевая функция является стохастической, не используйте эту опцию.

'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

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

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

  • x0 Отправная точка

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

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

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

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

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

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

  • nonlcon — Нелинейная ограничительная функция

  • solver'patternsearch'

  • опции Опции создаются с optimoptions или psoptimset

  • Поле rngstate — Optional, чтобы сбросить состояние генератора случайных чисел

Создайте структуру problem путем экспорта проблемы из приложения Оптимизации, как описано в Импорте и Экспорте работы (Optimization Toolbox).

Примечание

Все поля в 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 является соответствующим множителем Лагранжа.

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

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

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

    • 'unconstrained'

    • 'boundconstraints'

    • 'linearconstraints'

    • 'nonlinearconstr'

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

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

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

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

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

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

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

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

Алгоритмы

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

Ссылки

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

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

[3] Абрэмсон, Марк А. Поиск шаблона фильтрует алгоритмы для смешанных переменных общих ограниченных задач оптимизации. Кандидатская диссертация, отдел вычислительной и прикладной математики, Университет Райса, август 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