Решение проблемы ограничения minimax
fminimax ищет точку, которая минимизирует максимум набора объективных функций.
Проблема включает любой тип ограничения. Подробно, fminimax ищет минимум проблемы, указанный в
=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, использование идентификатора
Fi (x)).
Можно решить проблемы формы
|
с помощью AbsoluteMaxObjectiveCount вариант; см. раздел Решение проблемы Minimax с использованием абсолютного значения одной цели.
начинается в x = fminimax(fun,x0)x0 и находит минимаксовое решение x к функциям, описанным в fun.
Примечание
В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как при необходимости передавать дополнительные параметры целевым функциям и функциям нелинейных ограничений.
решает задачу minimax с учетом ограничений 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 является [].
sin и cosСоздание графика 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.
Задайте целевые функции как три линейные функции вида + 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.
Задайте целевые функции как три линейные функции вида + 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

Целевыми функциями для этого примера являются линейные константы плюс. Описание и график целевых функций см. в разделе Сравнение fminimax и fminunc.
Задайте целевые функции как три линейные функции вида + 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 unitdiskfunction [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 может минимизировать максимальное значение ) или x) | для первых нескольких значений i с помощью AbsoluteMaxObjectiveCount вариант. Чтобы минимизировать абсолютные значения целей, упорядочьте значения целевой функции так, чтобы ) - 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 сравните этот график с графиком в примере Минимизировать максимум греха и cos.
Получите как расположение точки minimax, так и значение целевых функций. Описание и график целевых функций см. в разделе Сравнение fminimax и fminunc.
Задайте целевые функции как три линейные функции вида + 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.
Задайте целевые функции как три линейные функции вида + 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 - Целевые функцииЦелевые функции, указанные как дескриптор функции или имя функции. 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 и размер x0 для определения количества и размера переменных, которые fun принимает.
Пример: x0 = [1,2,3,4]
Типы данных: double
A - Линейные ограничения неравенстваЛинейные ограничения неравенства, заданные как вещественная матрица. 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 - Линейные ограничения неравенстваЛинейные ограничения неравенства, заданные как действительный вектор. 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 - Линейные ограничения равенстваЛинейные ограничения равенства, заданные как вещественная матрица. 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 - Линейные ограничения равенстваЛинейные ограничения равенства, заданные как действительный вектор. 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
lb - Нижние границыНижние границы, определяемые как вещественный вектор или вещественный массив. Если количество элементов в 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
ub - Верхние границыВерхние границы, заданные как вещественный вектор или вещественный массив. Если количество элементов в 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 - Нелинейные ограниченияНелинейные ограничения, указанные как дескриптор функции или имя функции. 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
options - Варианты оптимизацииoptimoptions | структура, такая как optimset прибыльОпции оптимизации, указанные как выходные данные optimoptions или структура, такая как optimset возвращает.
Некоторые опции отсутствуют в optimoptions дисплей. Эти параметры выделены курсивом в следующей таблице. Дополнительные сведения см. в разделе Параметры просмотра.
Дополнительные сведения о параметрах с различными именами для optimset, см. Текущие и устаревшие имена опций.
| Выбор | Описание |
|---|---|
AbsoluteMaxObjectiveCount | Количество элементов Fi (x), для которых необходимо минимизировать абсолютное значение Fi. См. раздел Решение задачи Minimax с использованием абсолютного значения одной цели. Для |
ConstraintTolerance | Допуск окончания для нарушения ограничения (положительный скаляр). Значение по умолчанию: Для |
| Диагностика | Отображение диагностической информации о функции, которая должна быть минимизирована или решена. Выбор: |
| DiffMaxChange | Максимальное изменение переменных для градиентов конечных разностей (положительный скаляр). Значение по умолчанию: |
| DiffMinChange | Минимальное изменение переменных для градиентов конечных разностей (положительный скаляр). Значение по умолчанию: |
| Уровень отображения (см. Итерационный просмотр):
|
FiniteDifferenceStepSize |
Коэффициент размера шага скаляра или вектора для конечных разностей. При установке
sign′(x) = sign(x) кроме sign′(0) = 1. Центральными конечными различиями являются
FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию: sqrt(eps) для прямых конечных разностей, и eps^(1/3) для центральных конечных разностей.
Для |
FiniteDifferenceType | Тип конечных разностей, используемых для оценки градиентов, либо Алгоритм тщательно соблюдает границы при оценке обоих типов конечных разностей. Например, может потребоваться обратная разница, а не прямая разница, чтобы избежать оценки в точке за пределами границ. Для |
FunctionTolerance | Допуск окончания для значения функции (положительный скаляр). Значение по умолчанию: Для |
| FunValCheck | Проверьте, являются ли действительными значения целевой функции и ограничения. |
MaxFunctionEvaluations | Максимально допустимое число оценок функций (положительное целое число). Значение по умолчанию: Для |
MaxIterations | Максимально допустимое число итераций (положительное целое число). Значение по умолчанию: Для |
| MaxSQPIter | Максимально допустимое число итераций SQP (положительное целое число). Значение по умолчанию: |
| MeritFunction | Если для этой опции установлено значение |
OptimalityTolerance |
Допуск окончания для оптимальности первого порядка (положительный скаляр). Значение по умолчанию: Для |
OutputFcn | Одна или несколько пользовательских функций, вызываемых функцией оптимизации в каждой итерации. Передача дескриптора функции или массива ячеек дескрипторов функции. Значение по умолчанию - нет ( |
PlotFcn | Графики, показывающие различные показатели прогресса во время выполнения алгоритма. Выберите из предопределенных графиков или напишите собственные. Передача имени, дескриптора функции или массива ячеек имен или дескрипторов функций. Для пользовательских функций печати передайте дескрипторы функций. Значение по умолчанию - нет (
Пользовательские функции печати используют тот же синтаксис, что и функции вывода. См. раздел Функции вывода для оптимизации Toolbox™ и Функция вывода и синтаксис функции печати. Для |
| RelLineSrchBnd | Относительная граница (действительное неотрицательное скалярное значение) на длине шага поиска строки, такая, что полное смещение в |
| RelLineSrchBndDuration | Число итераций, для которых граница указана в |
SpecifyConstraintGradient | Градиент для функций нелинейных ограничений, определенных пользователем. Если для этой опции установлено значение Для |
SpecifyObjectiveGradient | Градиент для целевой функции, определенной пользователем. См. описание Для |
StepTolerance | Допуск окончания на Для |
| TolConSQP | Допуск окончания для нарушения ограничения SQP внутренней итерации (положительный скаляр). Значение по умолчанию: |
TypicalX | Типичный |
UseParallel | Возможность использования параллельных вычислений. Если для этой опции установлено значение |
Пример: optimoptions('fminimax','PlotFcn','optimplotfval')
problem - Структура проблемыСтруктура проблемы, указанная как структура с полями в этой таблице.
| Имя поля | Вход |
|---|---|
| Целевая функция fun |
| Начальная точка для x |
| Матрица для линейных ограничений неравенства |
| Вектор для линейных ограничений неравенства |
| Матрица для линейных ограничений равенства |
| Вектор для линейных ограничений равенства |
lb | Вектор нижних границ |
ub | Вектор верхних границ |
| Функция нелинейных ограничений |
| 'fminimax' |
| Параметры, созданные с помощью optimoptions |
Вы должны предоставить, по крайней мере, objective, x0, solver, и options поля в problem структура.
Типы данных: struct
x - РешениеРешение, возвращаемое в виде вещественного вектора или вещественного массива. Размер x совпадает с размером x0. Как правило, x является локальным решением проблемы, когда exitflag является положительным. Сведения о качестве решения см. в разделе Когда решатель добьется успеха.
fval - Значения целевой функции при решенииЗначения целевой функции в решении, возвращаемые в виде вещественного массива. Как правило, fval = fun(x).
maxfval - Максимум значений целевой функции при решенииМаксимум значений целевой функции в решении, возвращаемый как действительный скаляр. maxfval = max(fval(:)).
exitflag - Причина fminimax остановленныйПричина fminimax остановлено, возвращено как целое число.
| Функция, сходящаяся к решению |
| Величина направления поиска была меньше указанного допуска, а нарушение ограничения - меньше |
| Величина направленной производной была меньше указанного допуска, а нарушение ограничения - меньше |
| Превышено число итераций |
| Останавливается функцией вывода или функцией графика |
| Выполнимая точка не найдена. |
output - Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенная в виде структуры с полями в этой таблице.
iterations | Количество выполненных итераций |
funcCount | Количество оценок функций |
lssteplength | Размер шага поиска строки относительно направления поиска |
constrviolation | Максимум функций ограничения |
stepsize | Длина последнего смещения в |
algorithm | Используемый алгоритм оптимизации |
firstorderopt | Мера оптимальности первого порядка |
message | Выйти из сообщения |
lambda - Множители лагранжа в решенииМножители лагранжа в решении, возвращаемые как структура с полями в этой таблице.
fminimax решает задачу minimax, преобразуя ее в задачу достижения цели, а затем решая преобразованную задачу достижения цели с помощью fgoalattain. При преобразовании для всех целей устанавливается значение 0, а для всех весов - 1. См. уравнение 1 в разделе Алгоритмы многообъективной оптимизации.
Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для fminimax.
Для параллельного выполнения установите 'UseParallel' опция для true.
options = optimoptions('solvername','UseParallel',true)
Дополнительные сведения см. в разделе Использование параллельных вычислений на панели инструментов оптимизации.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.