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) запускается в 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- 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- 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- 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- 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- 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- m матрица, где GC(i,j) частная производная c(j) относительно x(i) (то есть, jстолбец th GC градиент jограничение неравенства th c(j)). Аналогично, если ceq имеет p компоненты, градиент GCeq из ceq(x) n- 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

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

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

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

FunValCheck

Проверяйте, что это имеет значение, допустимы ли целевая функция и ограничительные значения. 'on' отображает ошибку, когда целевая функция или ограничения возвращают значение, которое является complexInf, или 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

Необходимо предоставить, по крайней мере, objectivex0 , solver, и options поля в problem структура.

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

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

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