Решите задачу минимаксного ограничения
fminimax
ищет точку, которая минимизирует максимум набора целевых функций.
Задача включает любой тип ограничения. В деталях, fminimax
ищет минимум задачи, заданной в
где b и beq - векторы, A и Aeq матрицы и c (<reservedrangesplaceholder10>), ceq (<reservedrangesplaceholder8>), и F (<reservedrangesplaceholder6>) - функции тот возврат векторы. F (x), c (x) и ceq (x) могут быть нелинейными функциями.
x, lb и ub могут быть переданы как векторы или матрицы; см. Матричные аргументы.
Можно также решить max-min задачи с fminimax
, использование тождеств
Можно решить задачи вида
при помощи AbsoluteMaxObjectiveCount
опция; см. «Решение минимаксной задачи с использованием абсолютного значения одной цели».
начинается с x
= fminimax(fun
,x0
)x0
и находит минимаксное решение x
к функциям, описанным в fun
.
Примечание
Передача дополнительных параметров объясняет, как передать дополнительные параметры целевым функциям и нелинейным ограничительным функциям, если это необходимо.
решает задачу 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.
Установите целевые функции как три линейные функции вида для трех векторов и три константы .
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.
Установите целевые функции как три линейные функции вида для трех векторов и три константы .
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.
Установите целевые функции как три линейные функции вида для трех векторов и три константы .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
The unitdisk
функция представляет нелинейное ограничение неравенства .
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
может минимизировать максимум либо или для первых нескольких значений при помощи AbsoluteMaxObjectiveCount
опция. Чтобы минимизировать абсолютные значения для целей упорядочить значения целевой функции таким образом, чтобы через являются целями абсолютной минимизации и устанавливают 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 и cos.
Получите как положение минимаксной точки, так и значение целевых функций. Описание и график целевых функций см. в Сравнение fminimax и fminunc.
Установите целевые функции как три линейные функции вида для трех векторов и три константы .
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.
Установите целевые функции как три линейные функции вида для трех векторов и три константы .
a = [1;1]; b = [-1;1]; c = [0;-1]; a0 = 2; b0 = -3; c0 = 4; fun = @(x)[x*a+a0,x*b+b0,x*c+c0];
Найдите минимаксную точку, удовлетворяющую неравенству x(1) + 3*x(2) <= –4
.
A = [1,3]; b = -4; x0 = [-1,-2];
Установите опции для итерационного отображения и получите все выходы решателя.
options = optimoptions('fminimax','Display','iter'); Aeq = []; % No other constraints beq = []; lb = []; ub = []; nonlcon = []; [x,fval,maxfval,exitflag,output,lambda] =... fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Objective Max Line search Directional Iter F-count value constraint steplength derivative Procedure 0 4 0 6 1 9 5 0 1 0.981 2 14 4.889 8.882e-16 1 -0.302 Hessian modified twice 3 19 3.4 8.132e-09 1 -0.302 Hessian modified twice Local minimum possible. Constraints satisfied. fminimax stopped because the size of the current search direction is less than twice the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
-5.8000 0.6000
fval = 1×3
-3.2000 3.4000 3.4000
maxfval = 3.4000
exitflag = 4
output = struct with fields:
iterations: 4
funcCount: 19
lssteplength: 1
stepsize: 6.0684e-10
algorithm: 'active-set'
firstorderopt: []
constrviolation: 8.1323e-09
message: '...'
lambda = struct with fields:
lower: [2x1 double]
upper: [2x1 double]
eqlin: [0x1 double]
eqnonlin: [0x1 double]
ineqlin: 0.2000
ineqnonlin: [0x1 double]
Проверьте возвращенную информацию:
Два значения целевой функции равны в решении.
Решатель сходится в 4 итерациях и 19 вычислениях функции.
The lambda.ineqlin
значение ненулевое, что указывает на то, что линейное ограничение активно в решении.
fun
- Целевые функцииЦелевые функции, заданные как указатель на функцию или имя функции. fun
является функцией, которая принимает вектор x
и возвращает вектор F
, целевые функции, оцениваемые в x
. Можно задать функцию fun
как указатель на функцию для файла функции:
x = fminimax(@myfun,x0,goal,weight)
где myfun
является MATLAB® функция, такая как
function F = myfun(x) F = ... % Compute function values at x.
fun
может также быть указателем на функцию для анонимной функции:
x = fminimax(@(x)sin(x.*x),x0,goal,weight);
Если заданные пользователем значения для x
и F
являются массивами, fminimax
преобразует их в векторы с помощью линейной индексации (см. «Массив»).
Чтобы минимизировать абсолютные значения в худшем случае некоторых элементов векторного F (x) (то есть min {max abs {F (x)}}), разделите эти цели на первые элементы F и используйтеoptimoptions
для установки AbsoluteMaxObjectiveCount
опция количества этих целей. Эти цели должны быть разбиты на первые элементы вектора F
возвращается по fun
. Для получения примера смотрите Решить задачу Минимакса Используя Абсолютное Значение Одной Цели.
Предположим, что градиенты целевых функций также могут быть вычислены и SpecifyObjectiveGradient
опция true
, как задано:
options = optimoptions('fminimax','SpecifyObjectiveGradient',true)
В этом случае функция fun
должен вернуть во втором выходном аргументе значения градиента G
(матрица) в x
. Градиент состоит из частной производной dF/dx каждого F
в точке x
. Если F
является вектором длины m
и x
имеет длину n
, где n
- длина x0
, затем градиент G
от F(x)
является n
-by- m
матрица, где G(i,j)
- частная производная F(j)
относительно x(i)
(то есть j
1-й столбец G
- градиент j
Вторая целевая функция 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
-by- N
матрица, где M
количество неравенств и N
- количество переменных (количество элементов в x0
). Для больших задач передайте A
как разреженная матрица.
A
кодирует M
линейное неравенство
A*x <= b
,
где x
является вектор-столбец N
переменные x(:)
, и b
- вектор-столбец с M
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 30,
введите следующие ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать, что компоненты x равны 1 или менее, используйте A = ones(1,N)
и b = 1
.
Типы данных: double
b
- Линейные ограничения неравенстваЛинейные ограничения неравенства, заданные как вектор действительных чисел. b
является M
-элементный вектор, относящийся к A
матрица. Если вы сдаете b
как векторы-строки решатели внутренне преобразуют b
в вектор-столбец b(:)
. Для больших задач передайте b
как разреженный вектор.
b
кодирует M
линейное неравенство
A*x <= b
,
где x
является вектор-столбец N
переменные x(:)
, и A
- матрица размера M
-by- N
.
Для примера рассмотрим эти неравенства:
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 30.
Задайте неравенства, введя следующие ограничения.
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать, что компоненты x равны 1 или менее, используйте A = ones(1,N)
и b = 1
.
Типы данных: double
Aeq
- Линейные ограничения равенстваЛинейные ограничения равенства, заданные как действительная матрица. Aeq
является Me
-by- N
матрица, где Me
количество равенств и N
- количество переменных (количество элементов в x0
). Для больших задач передайте Aeq
как разреженная матрица.
Aeq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
является вектор-столбец N
переменные x(:)
, и beq
- вектор-столбец с Me
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20,
введите следующие ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать, что компоненты x равны 1, используйте Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
beq
- Линейные ограничения равенстваЛинейные ограничения равенства, заданные как вектор действительных чисел. beq
является Me
-элементный вектор, относящийся к Aeq
матрица. Если вы сдаете beq
как векторы-строки решатели внутренне преобразуют beq
в вектор-столбец beq(:)
. Для больших задач передайте beq
как разреженный вектор.
beq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
является вектор-столбец N
переменные x(:)
, и Aeq
- матрица размера Me
-by- N
.
Для примера рассмотрим эти равенства:
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20.
Задайте равенства путем ввода следующих ограничений.
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать, что компоненты x равны 1, используйте Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
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)
. См. нелинейные ограничения для объяснения того, как «обусловить» градиенты для использования в решателях, которые не принимают поставленные градиенты.
Если nonlcon
возвращает вектор c
от m
компоненты и x
имеет длину n
, где n
- длина x0
, затем градиент GC
от c(x)
является n
-by- m
матрица, где GC(i,j)
- частная производная c(j)
относительно x(i)
(то есть j
1-й столбец GC
- градиент j
ограничение неравенства c(j)
). Точно так же, если ceq
имеет p
компоненты, градиент GCeq
от ceq(x)
является n
-by- p
матрица, где GCeq(i,j)
- частная производная ceq(j)
относительно x(i)
(то есть j
1-й столбец 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. См. «Решение минимаксной задачи с использованием абсолютного значения одной цели». Для |
ConstraintTolerance | Допуск завершения на нарушение ограничений (a положительной скалярной величины). Значение по умолчанию является Для |
Диагностика | Отображение диагностической информации о функции, которая будет минимизирована или решена. Выбор следующий |
DiffMaxChange | Максимальное изменение переменных для градиентов конечных различий (a положительной скалярной величины). Значение по умолчанию является |
DiffMinChange | Минимальное изменение переменных для градиентов с конечной разностью (a положительной скалярной величины). Значение по умолчанию является |
| Level of display (см. Итеративное отображение):
|
FiniteDifferenceStepSize |
Скаляр или векторный коэффициент размера для конечных различий. Когда вы задаете
sign′(x) = sign(x) кроме sign′(0) = 1 . Центральные конечные различия
FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию является sqrt(eps) для прямых конечных различий и eps^(1/3) для центральных конечных различий.
Для |
FiniteDifferenceType | Тип конечных различий, используемых для оценки градиентов, либо Алгоритм осторожен, чтобы подчиниться границам при оценке обоих типов конечных различий. Например, может потребоваться различие, а не прямое различие, чтобы избежать вычисления в точке за пределами границ. Для |
FunctionTolerance | Допуск завершения функции (a положительной скалярной величины). Значение по умолчанию является Для |
FunValCheck | Проверяйте, что означает, действительны ли целевая функция и значения ограничений. |
MaxFunctionEvaluations | Максимально допустимое количество вычислений функции (положительное целое число). Значение по умолчанию является Для |
MaxIterations | Максимально допустимое количество итераций (положительное целое число). Значение по умолчанию является Для |
MaxSQPIter | Максимально допустимое количество итераций SQP (положительное целое число). Значение по умолчанию является |
MeritFunction | Если для этой опции задано значение |
OptimalityTolerance |
Допуск завершения по оптимальности первого порядка (a положительной скалярной величины). Значение по умолчанию является Для |
OutputFcn | Одна или несколько пользовательских функций, которые вызываются оптимизационными функциями при каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значением по умолчанию является none ( |
PlotFcn | Графики, показывающие различные показатели прогресса во время выполнения алгоритма. Выберите из предопределенных графиков или напишите свои собственные. Передайте имя, указатель на функцию или массив ячеек из имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значением по умолчанию является none (
Пользовательские функции построения графика используют тот же синтаксис, что и выходные функции. Смотрите Выходные функции для Optimization Toolbox™ и синтаксиса выходной функции и функции построения графика. Для |
RelLineSrchBnd | Относительная граница (действительное неотрицательное скалярное значение) в длине шага поиска линии такой, что общее перемещение в |
RelLineSrchBndDuration | Количество итераций, для которых граница задана в |
SpecifyConstraintGradient | Градиент для нелинейных функций ограничений, заданный пользователем. Когда для этой опции задано значение Для |
SpecifyObjectiveGradient | Градиент для целевой функции, заданный пользователем. См. описание Для |
StepTolerance | Допуск завершения на Для |
TolConSQP | Допуск завершения на внутренней итерации SQP нарушения ограничений (a положительной скалярной величины). Значение по умолчанию является |
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
stop, возвращается как целое число.
| Функция сходится к решению |
| Величина направления поиска была меньше заданного допуска, а нарушение ограничений меньше |
| Величина производной по направлению была меньше заданного допуска, и нарушение ограничений было меньше |
| Превышено количество итераций |
| Остановлен выходной функцией или функцией построения графика |
| Допустимая точка не найдена. |
output
- Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенная как структура с полями в этой таблице.
iterations | Количество проделанных итераций |
funcCount | Количество вычислений функции |
lssteplength | Размер шага поиска линии относительно направления поиска |
constrviolation | Максимум функций ограничения |
stepsize | Длина последнего перемещения в |
algorithm | Используемый алгоритм оптимизации |
firstorderopt | Мера оптимальности первого порядка |
message | Выходное сообщение |
lambda
- множители Лагранжа в решенииМножители Лагранжа в решении, возвращенные как структура с полями в этой таблице.
fminimax
решает задачу минимаксиса путем преобразования ее в задачу достижения цели, а затем решает задачу преобразования достижения цели используя fgoalattain
. Преобразование устанавливает все цели равными 0, а все веса равными 1. См. Уравнение 1 в алгоритмах мультиобъективной оптимизации.
Задача Optimize Live Editor обеспечивает визуальный интерфейс для fminimax
.
Чтобы запустить параллельно, установите 'UseParallel'
опция для true
.
опции = optimoptions (
'solvername
',' UseParallel ', true)
Для получения дополнительной информации смотрите Использование параллельных вычислений в Optimization Toolbox.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.