fminimax

Решите минимаксную ограничительную проблему

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

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

minxmax iFi(x)  таким образом , что  {c(x)0ceq(x)=0AxbAeqx=beqlbxub

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

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

Можно также решить проблемы макс. min с fminimax, с помощью идентичности

max xminiFi(x)=minxmax i(Fi(x)).

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

minxmax i|Fi(x)|

при помощи опции AbsoluteMaxObjectiveCount; смотрите Решают Минимаксную проблему Используя Абсолютное значение Одной Цели.

Синтаксис

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

Описание

пример

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

Примечание

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

пример

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

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

пример

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub) решает минимаксную проблему, подвергающуюся границам  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) решает минимаксную проблему для problem, где problem является структурой, описанной в 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')

График показывает два локальных минимума максимума, одного близкого 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 и решают минимаксную проблему, начинающую с [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

Целевые функции для этого примера линейны плюс константы. Для описания и графика целевых функций, смотрите, Сравнивают 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];

Функция 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)))

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

Получите и местоположение минимаксной точки и значение целевых функций. Для описания и графика целевых функций, смотрите, Сравнивают 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             0            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 преобразовывает их в векторы, использующие линейную индексацию (см. Индексацию массива (MATLAB)).

Минимизировать абсолютные значения худшего случая некоторых элементов векторного F (x) (то есть, min {макс. 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) (то есть, j th столбец G является градиентом j th целевая функция F(j)). Если вы задаете F как массив, то предыдущее обсуждение применяется к F(:), линейному упорядоченному расположению массива F. В любом случае G является 2D матрицей.

Примечание

Установка 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.

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

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

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

x 1 + 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-by-N матрица, где Me является количеством равенств, и N является количеством переменных (число элементов в x0). Для больших проблем передайте Aeq как разреженную матрицу.

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

Aeq*x = beq,

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

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

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

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

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

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

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

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

Если nonlcon возвращает векторный c компонентов m, и x имеет длину n, где n является длиной x0, то градиент, GC c(x) является n-by-m матрица, где GC(i,j) является частной производной c(j) относительно x(i) (то есть, j th столбец GC является градиентом j th ограничение неравенства c(j)). Аналогично, если ceq имеет компоненты p, градиент, GCeq ceq(x) является n-by-p матрица, где GCeq(i,j) является частной производной ceq(j) относительно x(i) (то есть, j th столбец 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. Смотрите Решают Минимаксную проблему Используя Абсолютное значение Одной Цели.

Для 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

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

PlotFcn

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

  • 'optimplotx' строит текущую точку.

  • 'optimplotfunccount' строит функциональное количество.

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

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

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

Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика.

Для optimset именем является PlotFcns.

RelLineSrchBnd

Родственник связал (действительное неотрицательное скалярное значение) на длине шага поиска строки, таким образом, что общее смещение в x удовлетворяет | Δx (i) |  ≤ relLineSrchBnd · макс. (|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.

Самым простым способом получить структуру problem является экспорт задачи из Optimization app.

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

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

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