fminimax

Решите задачу минимаксного ограничения

Описание

fminimax ищет точку, которая минимизирует максимум набора целевых функций.

Задача включает любой тип ограничения. В деталях, fminimax ищет минимум задачи, заданной в

minxmaxiFi(x)  таким , что  {c(x)0ceq(x)=0AxbAeqx=beqlbxub

где b и beq - векторы, A и Aeq матрицы и c (<reservedrangesplaceholder10>), ceq (<reservedrangesplaceholder8>), и F (<reservedrangesplaceholder6>) - функции тот возврат векторы. F (x), c (x) и ceq (x) могут быть нелинейными функциями.

x, lb и ub могут быть переданы как векторы или матрицы; см. Матричные аргументы.

Можно также решить max-min задачи с fminimax, использование тождеств

maxxminiFi(x)=minxmaxi(Fi(x)).

Можно решить задачи вида

minxmaxi|Fi(x)|

при помощи AbsoluteMaxObjectiveCount опция; см. «Решение минимаксной задачи с использованием абсолютного значения одной цели».

пример

x = fminimax(fun,x0) начинается с x0 и находит минимаксное решение x к функциям, описанным в fun.

Примечание

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

пример

x = fminimax(fun,x0,A,b) решает задачу minimax, удовлетворяющую линейным неравенствам   A*x ≤ b.

x = fminimax(fun,x0,A,b,Aeq,beq) решает задачу minimax, удовлетворяющую линейным равенствам   Aeq*x = beq также. Если неравенства не существует, задайте A = [] и b = [].

пример

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub) решает задачу minimax, удовлетворяющую границам lb  x  ub. Если равенств не существует, задайте Aeq = [] и beq = []. Если x(i) неограниченно внизу, установите lb(i) = –Inf; если x(i) неограниченно выше, задайте ub(i) = Inf.

Примечание

Если заданные входные ограничения для задачи несогласованны, выход x является x0 и выходные fval является [].

пример

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

пример

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

x = fminimax(problem) решает задачу minimax для problem, структуру, описанную в problem.

пример

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

пример

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

пример

[x,fval,maxfval,exitflag,output,lambda] = fminimax(___) дополнительно возвращает структуру lambda поля которого содержат множители Лагранжа в решении x.

Примеры

свернуть все

Создайте график sin и cos функции и их максимум за интервал [–pi,pi].

t = linspace(-pi,pi);
plot(t,sin(t),'r-')
hold on
plot(t,cos(t),'b-');
plot(t,max(sin(t),cos(t)),'ko')
legend('sin(t)','cos(t)','max(sin(t),cos(t))','Location','NorthWest')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent sin(t), cos(t), max(sin(t),cos(t)).

График показывает два локальных минимума максимума, один около 1, а другой около -2. Найдите минимум около 1.

fun = @(x)[sin(x);cos(x)];
x0 = 1;
x1 = fminimax(fun,x0)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x1 = 0.7854

Найдите минимум около -2.

x0 = -2;
x2 = fminimax(fun,x0)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x2 = -2.3562

Целевые функции для этого примера являются линейными плюс константы. Описание и график целевых функций см. в Сравнение fminimax и fminunc.

Установите целевые функции как три линейные функции вида dot(x,v)+v0 для трех векторов v и три константы v0.

a = [1;1];
b = [-1;1];
c = [0;-1];
a0 = 2;
b0 = -3;
c0 = 4;
fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

Найдите минимаксную точку, удовлетворяющую неравенству x(1) + 3*x(2) <= –4.

A = [1,3];
b = -4;
x0 = [-1,-2];
x = fminimax(fun,x0,A,b)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

   -5.8000    0.6000

Целевые функции для этого примера являются линейными плюс константы. Описание и график целевых функций см. в Сравнение fminimax и fminunc.

Установите целевые функции как три линейные функции вида dot(x,v)+v0 для трех векторов v и три константы v0.

a = [1;1];
b = [-1;1];
c = [0;-1];
a0 = 2;
b0 = -3;
c0 = 4;
fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

Установите границы, которые –2 <= x(1) <= 2 и –1 <= x(2) <= 1 и решите задачу minimax, начиная с [0,0].

lb = [-2,-1];
ub = [2,1];
x0 = [0,0];
A = []; % No linear constraints
b = [];
Aeq = [];
beq = [];
[x,fval] = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

   -0.0000    1.0000

fval = 1×3

    3.0000   -2.0000    3.0000

В этом случае решение не является уникальным. Многие точки удовлетворяют ограничениям и имеют одно и то же минимаксное значение. Постройте график поверхности, представляющей максимум из трех целевых функций, и постройте красную линию, показывающий точки, которые имеют одно и то же минимаксное значение.

[X,Y] = meshgrid(linspace(-2,2),linspace(-1,1));
Z = max(fun([X(:),Y(:)]),[],2);
Z = reshape(Z,size(X));
surf(X,Y,Z,'LineStyle','none')
view(-118,28)
hold on
line([-2,0],[1,1],[3,3],'Color','r','LineWidth',8)
hold off

Figure contains an axes. The axes contains 2 objects of type surface, line.

Целевые функции для этого примера являются линейными плюс константы. Описание и график целевых функций см. в Сравнение fminimax и fminunc.

Установите целевые функции как три линейные функции вида dot(x,v)+v0 для трех векторов v и три константы v0.

a = [1;1];
b = [-1;1];
c = [0;-1];
a0 = 2;
b0 = -3;
c0 = 4;
fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

The unitdisk функция представляет нелинейное ограничение неравенства x21.

type unitdisk
function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [];

Решите задачу минимакса, удовлетворяющую unitdisk ограничение, начиная с x0 = [0,0].

x0 = [0,0];
A = []; % No other constraints
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = @unitdisk;
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

   -0.0000    1.0000

fminimax может минимизировать максимум либо Fi(x) или |Fi(x)| для первых нескольких значений i при помощи AbsoluteMaxObjectiveCount опция. Чтобы минимизировать абсолютные значения k для целей упорядочить значения целевой функции таким образом, чтобы F1(x) через Fk(x) являются целями абсолютной минимизации и устанавливают AbsoluteMaxObjectiveCount опция для k.

В этом примере минимизируйте максимум sin и cos, задайте sin в качестве первой цели и задать AbsoluteMaxObjectiveCount по 1.

fun = @(x)[sin(x),cos(x)];
options = optimoptions('fminimax','AbsoluteMaxObjectiveCount',1);
x0 = 1;
A = []; % No constraints
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
x1 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x1 = 0.7854

Попробуйте начать с x0 = –2.

x0 = -2;
x2 = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x2 = -3.1416

Постройте график функции.

t = linspace(-pi,pi);
plot(t,max(abs(sin(t)),cos(t)))

Figure contains an axes. The axes contains an object of type line.

Чтобы увидеть эффект AbsoluteMaxObjectiveCount опция, сравните этот график с графиком в примере Минимизировать Максимум sin и cos.

Получите как положение минимаксной точки, так и значение целевых функций. Описание и график целевых функций см. в Сравнение fminimax и fminunc.

Установите целевые функции как три линейные функции вида dot(x,v)+v0 для трех векторов v и три константы v0.

a = [1;1];
b = [-1;1];
c = [0;-1];
a0 = 2;
b0 = -3;
c0 = 4;
fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

Установите начальную точку равной [0,0] и найдите минимаксную точку и значение.

x0 = [0,0];
[x,fval] = fminimax(fun,x0)
Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

   -2.5000    2.2500

fval = 1×3

    1.7500    1.7500    1.7500

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

Целевые функции для этого примера являются линейными плюс константы. Описание и график целевых функций см. в Сравнение fminimax и fminunc.

Установите целевые функции как три линейные функции вида dot(x,v)+v0 для трех векторов v и три константы v0.

a = [1;1];
b = [-1;1];
c = [0;-1];
a0 = 2;
b0 = -3;
c0 = 4;
fun = @(x)[x*a+a0,x*b+b0,x*c+c0];

Найдите минимаксную точку, удовлетворяющую неравенству x(1) + 3*x(2) <= –4.

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

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

options = optimoptions('fminimax','Display','iter');
Aeq = []; % No other constraints
beq = [];
lb = [];
ub = [];
nonlcon = [];
[x,fval,maxfval,exitflag,output,lambda] =...
    fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
                  Objective        Max     Line search     Directional 
 Iter F-count         value    constraint   steplength      derivative   Procedure 
    0      4              0             6                                            
    1      9              5             0            1           0.981     
    2     14          4.889     8.882e-16            1          -0.302    Hessian modified twice  
    3     19            3.4     8.132e-09            1          -0.302    Hessian modified twice  

Local minimum possible. Constraints satisfied.

fminimax stopped because the size of the current search direction is less than
twice the value of the step size tolerance and constraints are 
satisfied to within the value of the constraint tolerance.
x = 1×2

   -5.8000    0.6000

fval = 1×3

   -3.2000    3.4000    3.4000

maxfval = 3.4000
exitflag = 4
output = struct with fields:
         iterations: 4
          funcCount: 19
       lssteplength: 1
           stepsize: 6.0684e-10
          algorithm: 'active-set'
      firstorderopt: []
    constrviolation: 8.1323e-09
            message: '...'

lambda = struct with fields:
         lower: [2x1 double]
         upper: [2x1 double]
         eqlin: [0x1 double]
      eqnonlin: [0x1 double]
       ineqlin: 0.2000
    ineqnonlin: [0x1 double]

Проверьте возвращенную информацию:

  • Два значения целевой функции равны в решении.

  • Решатель сходится в 4 итерациях и 19 вычислениях функции.

  • The lambda.ineqlin значение ненулевое, что указывает на то, что линейное ограничение активно в решении.

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

свернуть все

Целевые функции, заданные как указатель на функцию или имя функции. fun является функцией, которая принимает вектор x и возвращает вектор F, целевые функции, оцениваемые в x. Можно задать функцию fun как указатель на функцию для файла функции:

x = fminimax(@myfun,x0,goal,weight)

где myfun является MATLAB® функция, такая как

function F = myfun(x)
F = ...         % Compute function values at x.

fun может также быть указателем на функцию для анонимной функции:

x = fminimax(@(x)sin(x.*x),x0,goal,weight);

Если заданные пользователем значения для x и F являются массивами, fminimax преобразует их в векторы с помощью линейной индексации (см. «Массив»).

Чтобы минимизировать абсолютные значения в худшем случае некоторых элементов векторного F (x) (то есть min {max abs {F (x)}}), разделите эти цели на первые элементы F и используйтеoptimoptions для установки AbsoluteMaxObjectiveCount опция количества этих целей. Эти цели должны быть разбиты на первые элементы вектора F возвращается по fun. Для получения примера смотрите Решить задачу Минимакса Используя Абсолютное Значение Одной Цели.

Предположим, что градиенты целевых функций также могут быть вычислены и SpecifyObjectiveGradient опция true, как задано:

options = optimoptions('fminimax','SpecifyObjectiveGradient',true)

В этом случае функция fun должен вернуть во втором выходном аргументе значения градиента G (матрица) в x. Градиент состоит из частной производной dF/dx каждого F в точке x. Если F является вектором длины m и x имеет длину n, где n - длина x0, затем градиент G от F(x) является n-by- m матрица, где G(i,j) - частная производная F(j) относительно x(i) (то есть j1-й столбец G - градиент jВторая целевая функция F(j)). Если вы задаете F как массив, то предшествующее обсуждение применяется к F(:), линейное упорядоченное расположение F массив. В любом случае G является матрицей 2-D.

Примечание

Настройка SpecifyObjectiveGradient на true является эффективным только, когда задача не имеет нелинейного ограничения или когда задача имеет нелинейное ограничение с SpecifyConstraintGradient установлено на true. Внутренне цель складывается в ограничения, поэтому решателю нужны оба градиента (цель и ограничение), предоставленные в порядок, чтобы избежать оценки градиента.

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

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

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

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

Линейные ограничения неравенства, заданные как действительная матрица. A является M-by- N матрица, где M количество неравенств и N - количество переменных (количество элементов в x0). Для больших задач передайте A как разреженная матрица.

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

A*x <= b,

где x является вектор-столбец N переменные 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];

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

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

Линейные ограничения неравенства, заданные как вектор действительных чисел. b является M-элементный вектор, относящийся к A матрица. Если вы сдаете b как векторы-строки решатели внутренне преобразуют 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];

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

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

Линейные ограничения равенства, заданные как действительная матрица. Aeq является Me-by- N матрица, где Me количество равенств и N - количество переменных (количество элементов в x0). Для больших задач передайте Aeq как разреженная матрица.

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

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

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

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

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

Aeq*x = beq,

где x является вектор-столбец N переменные x(:), и Aeq - матрица размера Me-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];

Пример: Чтобы указать, что компоненты x равны 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 чем в x0, решатели выдают предупреждение.

Пример: Чтобы указать, что все компоненты x положительны, используйте 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 чем в x0, решатели выдают предупреждение.

Пример: Чтобы указать, что все компоненты x меньше 1, используйте ub = ones(size(x0)).

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

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

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

    c(x) <= 0 для всех записей c.

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

    ceq(x) = 0 для всех записей ceq.

Для примера,

x = fminimax(@myfun,x0,...,@mycon)

где mycon является функцией MATLAB, например:

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = ...   % Compute nonlinear equalities at x.

Предположим, что градиенты ограничений также могут быть вычислены и SpecifyConstraintGradient опция true, как задано:

options = optimoptions('fminimax','SpecifyConstraintGradient',true)

В этом случае функция nonlcon должен также вернуться в третьем и четвертом выходных аргументах GC, градиент c(x), и GCeq, градиент ceq(x). См. нелинейные ограничения для объяснения того, как «обусловить» градиенты для использования в решателях, которые не принимают поставленные градиенты.

Если nonlcon возвращает вектор c от m компоненты и x имеет длину n, где n - длина x0, затем градиент GC от c(x) является n-by- m матрица, где GC(i,j) - частная производная c(j) относительно x(i) (то есть j1-й столбец GC - градиент jограничение неравенства c(j)). Точно так же, если ceq имеет p компоненты, градиент GCeq от ceq(x) является n-by- p матрица, где GCeq(i,j) - частная производная ceq(j) относительно x(i) (то есть j1-й столбец GCeq - градиент jth-е ограничение равенства ceq(j)).

Примечание

Настройка SpecifyConstraintGradient на true эффективно только тогда, когда SpecifyObjectiveGradient установлено в true. Внутренне цель складывается в ограничение, поэтому решателю нужны оба градиента (цель и ограничение), предоставленные в порядок, чтобы избежать оценки градиента.

Примечание

Потому что функции Optimization Toolbox™ принимают только входы типа double, поставляемые пользователем целевые и нелинейные функции ограничения должны возвращать выходы типа double.

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

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

Опции оптимизации, заданные как выход optimoptions или структуру, такую как optimset возвращает.

Некоторые опции отсутствуют в optimoptions отображение. Эти опции выделены курсивом в следующей таблице. Для получения дополнительной информации см. раздел «Опции представления».

Для получения дополнительной информации об опциях, которые имеют различные имена для optimset, см. «Текущие и устаревшие имена опций».

ОпцияОписание
AbsoluteMaxObjectiveCount

Количество элементов Fi (x), для которых можно минимизировать абсолютное значение Fi. См. «Решение минимаксной задачи с использованием абсолютного значения одной цели».

Для optimset, имя MinAbsMax.

ConstraintTolerance

Допуск завершения на нарушение ограничений (a положительной скалярной величины). Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolCon.

Диагностика

Отображение диагностической информации о функции, которая будет минимизирована или решена. Выбор следующий 'on' или 'off' (значение по умолчанию).

DiffMaxChange

Максимальное изменение переменных для градиентов конечных различий (a положительной скалярной величины). Значение по умолчанию является Inf.

DiffMinChange

Минимальное изменение переменных для градиентов с конечной разностью (a положительной скалярной величины). Значение по умолчанию является 0.

Display

Level of display (см. Итеративное отображение):

  • 'off' или 'none' не отображает выход.

  • 'iter' отображает выход при каждой итерации и выдает выходное сообщение по умолчанию.

  • 'iter-detailed' отображает выход при каждой итерации и выдает техническое выходное сообщение.

  • 'notify' отображает вывод только, если функция не сходится, и выдает выходное сообщение по умолчанию.

  • 'notify-detailed' отображает вывод только, если функция не сходится, и выдает техническое выходное сообщение.

  • 'final' (по умолчанию) отображает только окончательный выход и выдает выходное сообщение по умолчанию.

  • 'final-detailed' отображает только окончательный выход и выдает техническое выходное сообщение.

FiniteDifferenceStepSize

Скаляр или векторный коэффициент размера для конечных различий. Когда вы задаете FiniteDifferenceStepSize в вектор v, прямые конечные различия delta являются

delta = v.*sign′(x).*max(abs(x),TypicalX);

где sign′(x) = sign(x) кроме sign′(0) = 1. Центральные конечные различия

delta = v.*max(abs(x),TypicalX);

Скалярные FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию является sqrt(eps) для прямых конечных различий и eps^(1/3) для центральных конечных различий.

Для optimset, имя FinDiffRelStep.

FiniteDifferenceType

Тип конечных различий, используемых для оценки градиентов, либо 'forward' (по умолчанию) или 'central' (с центром). 'central' принимает в два раза больше вычислений функции, но, как правило, более точно.

Алгоритм осторожен, чтобы подчиниться границам при оценке обоих типов конечных различий. Например, может потребоваться различие, а не прямое различие, чтобы избежать вычисления в точке за пределами границ.

Для optimset, имя FinDiffType.

FunctionTolerance

Допуск завершения функции (a положительной скалярной величины). Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolFun.

FunValCheck

Проверяйте, что означает, действительны ли целевая функция и значения ограничений. 'on' отображает ошибку, когда целевая функция или ограничения возвращают значение, которое complex, Inf, или NaN. Значение по умолчанию 'off' не отображает ошибок.

MaxFunctionEvaluations

Максимально допустимое количество вычислений функции (положительное целое число). Значение по умолчанию является 100*numberOfVariables. См. Допуски и критерий остановки и итерации и счетчики функций.

Для optimset, имя MaxFunEvals.

MaxIterations

Максимально допустимое количество итераций (положительное целое число). Значение по умолчанию является 400. См. Допуски и критерий остановки и итерации и счетчики функций.

Для optimset, имя MaxIter.

MaxSQPIter

Максимально допустимое количество итераций SQP (положительное целое число). Значение по умолчанию является 10*max(numberOfVariables, numberOfInequalities + numberOfBounds).

MeritFunction

Если для этой опции задано значение 'multiobj' (по умолчанию), используйте достижение цели или функцию минимаксных заслуг. Если для этой опции задано значение 'singleobj', использовать fmincon функции заслуг.

OptimalityTolerance

Допуск завершения по оптимальности первого порядка (a положительной скалярной величины). Значение по умолчанию является 1e-6. См. «Мера оптимальности первого порядка».

Для optimset, имя TolFun.

OutputFcn

Одна или несколько пользовательских функций, которые вызываются оптимизационными функциями при каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значением по умолчанию является none ([]). Смотрите Выходные функции и Синтаксис функции построения графика.

PlotFcn

Графики, показывающие различные показатели прогресса во время выполнения алгоритма. Выберите из предопределенных графиков или напишите свои собственные. Передайте имя, указатель на функцию или массив ячеек из имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значением по умолчанию является none ([]).

  • 'optimplotx' строит графики текущей точки.

  • 'optimplotfunccount' строит график счетчика функций.

  • 'optimplotfval' строит графики значений целевой функции.

  • 'optimplotconstrviolation' строит график максимального нарушения ограничений.

  • 'optimplotstepsize' строит графики размера шага.

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

Для optimset, имя PlotFcns.

RelLineSrchBnd

Относительная граница (действительное неотрицательное скалярное значение) в длине шага поиска линии такой, что общее перемещение в x удовлетворяет | Δ <reservedrangesplaceholder6>   (<reservedrangesplaceholder5>) | ≤ relLineSrchBnd · макс. (| x (<reservedrangesplaceholder3>) |, | typicalx (<reservedrangesplaceholder1>) |). Эта опция обеспечивает управление величиной перемещений в x когда решатель делает слишком большие шаги. Значением по умолчанию является none ([]).

RelLineSrchBndDuration

Количество итераций, для которых граница задана в RelLineSrchBnd должен быть активен. Значение по умолчанию является 1.

SpecifyConstraintGradient

Градиент для нелинейных функций ограничений, заданный пользователем. Когда для этой опции задано значение true, fminimax ожидает, что функция ограничения будет иметь четыре выхода, как описано в nonlcon. Когда для этой опции задано значение false (по умолчанию), fminimax оценивает градиенты нелинейных ограничений с помощью конечных различий.

Для optimset, имя GradConstr и значения 'on' или 'off'.

SpecifyObjectiveGradient

Градиент для целевой функции, заданный пользователем. См. описание fun чтобы увидеть, как задать градиент. Установите эту опцию равной true иметь fminimax использовать пользовательский градиент целевой функции. Значение по умолчанию, false, причины fminimax для оценки градиентов с помощью конечных различий.

Для optimset, имя GradObj и значения 'on' или 'off'.

StepTolerance

Допуск завершения на x (положительный скаляр). Значение по умолчанию является 1e-6. См. «Допуски и критерий остановки».

Для optimset, имя TolX.

TolConSQP

Допуск завершения на внутренней итерации SQP нарушения ограничений (a положительной скалярной величины). Значение по умолчанию является 1e-6.

TypicalX

Типичные x значения. Количество элементов в TypicalX равно количеству элементов в x0, а начальная точка. Значение по умолчанию ones(numberofvariables,1). fminimax функция использует TypicalX для масштабирования конечных различий для оценки градиента.

UseParallel

Опция для использования параллельных вычислений. Когда для этой опции задано значение true, fminimax оценивает градиенты параллельно. Значение по умолчанию является false. См. Параллельные вычисления.

Пример: optimoptions('fminimax','PlotFcn','optimplotfval')

Структура задачи, заданная как структура с полями в этой таблице.

Имя поляВход

objective

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

x0

Начальная точка для x

Aineq

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

bineq

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

Aeq

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

beq

Вектор для линейных ограничений равенства
lbВектор нижних границ
ubВектор верхних границ

nonlcon

Нелинейная функция ограничения

solver

'fminimax'

options

Опции, созданные с optimoptions

Вы должны поставить по крайней мере objective, x0, solver, и options поля в problem структура.

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

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

свернуть все

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

Значения целевой функции в решении, возвращенные как действительный массив. Обычно fval = fun(x).

Максимум значений целевой функции в решении, возвращенный как действительный скаляр. maxfval = max(fval(:)).

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

1

Функция сходится к решению x

4

Величина направления поиска была меньше заданного допуска, а нарушение ограничений меньше options.ConstraintTolerance

5

Величина производной по направлению была меньше заданного допуска, и нарушение ограничений было меньше options.ConstraintTolerance

0

Превышено количество итераций options.MaxIterations или превышено количество вычислений функции options.MaxFunctionEvaluations

-1

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

-2

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

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

iterations

Количество проделанных итераций

funcCount

Количество вычислений функции

lssteplength

Размер шага поиска линии относительно направления поиска

constrviolation

Максимум функций ограничения

stepsize

Длина последнего перемещения в x

algorithm

Используемый алгоритм оптимизации

firstorderopt

Мера оптимальности первого порядка

message

Выходное сообщение

Множители Лагранжа в решении, возвращенные как структура с полями в этой таблице.

lower

Нижние границы, соответствующие lb

upper

Верхние границы, соответствующие ub

ineqlin

Линейное неравенство, соответствующее A и b

eqlin

Линейные равенства, соответствующие Aeq и beq

ineqnonlin

Нелинейные неравенства, соответствующие c в nonlcon

eqnonlin

Нелинейные равенства, соответствующие ceq в nonlcon

Алгоритмы

fminimax решает задачу минимаксиса путем преобразования ее в задачу достижения цели, а затем решает задачу преобразования достижения цели используя fgoalattain. Преобразование устанавливает все цели равными 0, а все веса равными 1. См. Уравнение 1 в алгоритмах мультиобъективной оптимизации.

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

Приложение

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

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

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