exponenta event banner

fminimax

Решение проблемы ограничения minimax

Описание

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

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

minxmaxiFi (x ) так , что  {c (x) ≤0ceq (x) =0A⋅x≤bAeq⋅x=beqlb≤x≤ub

где b и beq являются векторами, A и Aeq являются матрицами, а c (x), ceq (x) и F (x) являются функциями, которые возвращают векторы. F (x), c (x) и ceq (x) могут быть нелинейными функциями.

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

Вы также можете решить проблемы max-min с помощью fminimax, использование идентификатора

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

Можно решить проблемы формы

minxmaxi 'Fi (x) |

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

пример

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

Примечание

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

пример

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

Задайте целевые функции как три линейные функции вида точка (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.

Задайте целевые функции как три линейные функции вида точка (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.

Задайте целевые функции как три линейные функции вида точка (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];

unitdisk функция представляет ограничение нелинейного неравенства x‖2≤1.

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 сравните этот график с графиком в примере Минимизировать максимум греха и cos.

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

Задайте целевые функции как три линейные функции вида точка (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] и найдите точку и значение minimax.

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

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

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

Задайте целевые функции как три линейные функции вида точка (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 вычислениях функций.

  • 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. Пример см. в разделе Решение задачи Minimax с использованием абсолютного значения одной цели.

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

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

В этом случае функция fun должен возвращать во втором выходном аргументе значения градиента G (матрица) на x. Градиент состоит из частных производных dF/dx каждого F в точке x. Если F - вектор длины m и x имеет длину n, где n - длина x0, то градиент G из F(x) является nоколо-m матрица, где G(i,j) - частная производная F(j) в отношении x(i) (то есть, j4-я колонна G - градиент j3-я целевая функция 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около-N матрица, где M - количество неравенств, и N - количество переменных (количество элементов в x0). По большим проблемам проходите A в виде разреженной матрицы.

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

A*x <= b,

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

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

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 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около-N.

Например, рассмотрим эти неравенства:

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

Задайте неравенства, введя следующие ограничения.

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

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

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

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

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

Aeq*x = beq,

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

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

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

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

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

Пример: Чтобы указать, что компоненты 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около-N.

Например, рассмотрим следующие равенства:

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 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). См. раздел Нелинейные ограничения (Nonlinear Constraints), в котором объясняется, как «обусловить» градиенты для использования в решателях, которые не принимают заданные градиенты.

Если nonlcon возвращает вектор c из m компоненты и x имеет длину n, где n - длина x0, то градиент GC из c(x) является nоколо-m матрица, где GC(i,j) - частная производная c(j) в отношении x(i) (то есть, j4-я колонна GC - градиент jОграничение неравенства c(j)). Аналогично, если ceq имеет p компоненты, градиент GCeq из ceq(x) является nоколо-p матрица, где GCeq(i,j) - частная производная ceq(j) в отношении x(i) (то есть, j4-я колонна GCeq - градиент jОграничение равенства th ceq(j)).

Примечание

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

Примечание

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

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

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

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

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

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

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

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

Для optimset, имя: MinAbsMax.

ConstraintTolerance

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

Для optimset, имя: TolCon.

Диагностика

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

DiffMaxChange

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

DiffMinChange

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

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

Допуск окончания для значения функции (положительный скаляр). Значение по умолчанию: 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

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

Для optimset, имя: TolFun.

OutputFcn

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

PlotFcn

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

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

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

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

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

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

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

Для optimset, имя: PlotFcns.

RelLineSrchBnd

Относительная граница (действительное неотрицательное скалярное значение) на длине шага поиска строки, такая, что полное смещение в x удовлетворяет | Δx (i ) | ≤ relLineSrchBnd· max (| x (i) |, | typicalx (i) |). Эта опция обеспечивает управление величиной перемещений вx когда решатель выполняет слишком большие шаги. Значение по умолчанию - нет ([]).

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

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 решает задачу minimax, преобразуя ее в задачу достижения цели, а затем решая преобразованную задачу достижения цели с помощью fgoalattain. При преобразовании для всех целей устанавливается значение 0, а для всех весов - 1. См. уравнение 1 в разделе Алгоритмы многообъективной оптимизации.

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

Приложение

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

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

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