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

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

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

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

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

свернуть все

Функция, которая будет минимизирована, заданная как указатель на функцию или имя функции. The 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- nvars матрица, где M количество неравенств.

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

A*x <= b,

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

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  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.

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  30,

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

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

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

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

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

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

Aeq*x = beq,

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

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 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-by- N.

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 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 скрывает опции, перечисленные курсивом; см. Опции, которые скрывает оптимизация.

{} обозначает значение по умолчанию. Подробные сведения об опциях см. в разделе «Параметры поиска по шаблону».

Опции для 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

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

Для структуры опций используйте 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 использует измерения распределения и расстояния.

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

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

Примечание

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

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

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

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

С Cache установлено на 'on', patternsearch сохраняет историю mesh, которые он опрашивает. При последующих итерациях, 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 stop, возвращается как целое число.

Выходной флагЗначение

1

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

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

2

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

3

Изменение в fval и размер сетки меньше заданного допуска, и нарушение ограничений меньше 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, которая при отсутствии линейных ограничений выравнивается по координатным направлениям. Смотрите, что такое прямой поиск? и Как Работы опрос поиска шаблона.

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

Приложение

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

Ссылки

[1] Audet, Charles, and J. E. Dennis Jr. «Анализ обобщенных поисков по шаблонам». SIAM Journal по оптимизации. Том 13, № 3, 2003, с. 889-903.

[2] Conn, A. R., N. I. M. Gould, and Ph. L. Toint. Глобально сходимый дополненный лагрангийский барьерный алгоритм для оптимизации с общими ограничениями неравенства и простыми границами. Математика расчетов. Том 66, № 217, 1997, стр. 261-288.

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

[4] Abramson, Mark A., Charles Audet, J. E. Dennis, Jr., and Sebastien Le Digabel. «ORTHOMADS: детерминированный образец MADS с ортогональными направлениями». SIAM Journal по оптимизации. Том 20, № 2, 2009, с. 948-966.

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

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

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

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

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