Решите минимаксную ограничительную задачу
fminimax
ищет точку, которая минимизирует максимум набора целевых функций.
Проблема включает любой тип ограничения. Подробно, fminimax
ищет минимум проблемы, заданной
где b и beq являются векторами, A и Aeq являются матрицами и c (x), ceq (x), и F (x) является функциями, которые возвращают векторы. F (x), c (x) и ceq (x) может быть нелинейными функциями.
x, lb и ub могут быть переданы как векторы или матрицы; смотрите Матричные аргументы.
Можно также решить задачи макс. min с fminimax
, использование идентичности
Можно решить задачи формы
при помощи AbsoluteMaxObjectiveCount
опция; смотрите Решают Минимаксную задачу Используя Абсолютное значение Одной Цели.
запускается в x
= fminimax(fun
,x0
)x0
и находит минимаксное решение x
к функциям, описанным в fun
.
Примечание
Передача Дополнительных Параметров объясняет, как передать дополнительные параметры целевым функциям и нелинейным ограничительным функциям при необходимости.
решает минимаксную задачу, удовлетворяющую границам 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 = []
, или оба.
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
и решите минимаксную задачу, начинающую с [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];
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 и потому что.
Получите и местоположение минимаксной точки и значение целевых функций. Для описания и графика целевых функций, смотрите, Сравнивают 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 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
— Целевые функцииЦелевые функции в виде указателя на функцию или имени функции. 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);
fminimax
передачи x
к вашей целевой функции и любому нелинейному ограничению функционирует в форме x0
аргумент. Например, если x0
5 3 массив, затем fminimax
передачи x
к fun
как 5 3 массив. Однако fminimax
умножает линейные ограничительные матрицы A
или Aeq
с x
после преобразования x
к вектор-столбцу x(:)
.
Минимизировать абсолютные значения худшего случая некоторых элементов векторного 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
и размер 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
элементы.
Например, рассмотрите эти неравенства:
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
— Линейные ограничения неравенстваЛинейные ограничения неравенства в виде вектора действительных чисел. 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
— Линейные ограничения равенстваЛинейные ограничения равенства в виде действительной матрицы. 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
— Линейные ограничения равенстваЛинейные ограничения равенства в виде вектора действительных чисел. 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
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)
. Смотрите Нелинейные Ограничения для объяснения того, как к “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
options
— Опции оптимизацииoptimoptions
| структура, такая как optimset
возвращаетсяОпции оптимизации в виде выхода optimoptions
или структура такой как optimset
возвращается.
Некоторые опции отсутствуют в optimoptions
отображение. Эти опции появляются курсивом в следующей таблице. Для получения дополнительной информации, Опции вида на море.
Для получения дополнительной информации об опциях, которые имеют различные имена для optimset
, смотрите Текущие и Устаревшие Имена Опции.
Опция | Описание |
---|---|
AbsoluteMaxObjectiveCount | Число элементов Fi (x), для которого можно минимизировать абсолютное значение Fi. Смотрите Решают Минимаксную задачу Используя Абсолютное значение Одной Цели. Для |
ConstraintTolerance | Допуск завершения на нарушении ограничений (положительная скалярная величина). Значением по умолчанию является Для |
Диагностика | Отображение диагностической информации о функции, которая будет минимизирована или решена. Выбором является |
DiffMaxChange | Максимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). Значением по умолчанию является |
DiffMinChange | Минимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). |
| Level of display (см. Итеративное Отображение):
|
FiniteDifferenceStepSize |
Скалярный или векторный фактор размера шага для конечных разностей. Когда вы устанавливаете
sign′(x) = sign(x) кроме sign′(0) = 1 . Центральные конечные разности
FiniteDifferenceStepSize расширяется до вектора. Значением по умолчанию является sqrt(eps) для прямых конечных разностей и eps^(1/3) для центральных конечных разностей.
Для |
FiniteDifferenceType | Тип конечных разностей раньше оценивал градиенты, любой Алгоритм старается выполнить границы при оценке обоих типов конечных разностей. Например, это может взять обратное различие, а не правую разность, чтобы не оценивать в точке вне границ. Для |
FunctionTolerance | Допуск завершения на значении функции (положительная скалярная величина). Значением по умолчанию является Для |
FunValCheck | Проверяйте, что это имеет значение, допустимы ли целевая функция и ограничительные значения. |
MaxFunctionEvaluations | Максимальное количество вычислений функции позволено (положительное целое число). Значением по умолчанию является Для |
MaxIterations | Максимальное количество итераций позволено (положительное целое число). Значением по умолчанию является Для |
MaxSQPIter | Максимальное количество итераций SQP позволено (положительное целое число). Значением по умолчанию является |
MeritFunction | Если эта опция установлена в |
OptimalityTolerance |
Допуск завершения на оптимальности первого порядка (положительная скалярная величина). Значением по умолчанию является Для |
OutputFcn | Одна или несколько пользовательских функций, которые вызывает на каждой итерации оптимизационная функция. Передайте указатель на функцию или cell-массив указателей на функцию. Значение по умолчанию не ни один ( |
PlotFcn | Графики, показывающие различные показатели прогресса, в то время как алгоритм выполняется. Выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Пользовательские функции построения графика используют тот же синтаксис в качестве выходных функций. Смотрите Выходные функции для Optimization 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
остановленный, возвращенный как целое число.
1 | Функция сходилась к решению |
4 | Величина поискового направления была меньше заданного допуска, и нарушение ограничений было меньше |
5 | Величина косой производной была меньше заданного допуска, и нарушение ограничений было меньше |
0 | Количество итераций превысило |
-1 | Зашедший выходная функция или функция построения графика |
-2 | Никакая допустимая точка не была найдена. |
output
— Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с полями в этой таблице.
iterations | Количество проделанных итераций |
funcCount | Количество вычислений функции |
lssteplength | Размер линии ищет шаг относительно поискового направления |
constrviolation | Максимум ограничительных функций |
stepsize | Длина последнего смещения в |
algorithm | Алгоритм оптимизации используется |
firstorderopt | Мера оптимальности первого порядка |
message | Выходное сообщение |
lambda
— Множители Лагранжа в решенииМножители Лагранжа в решении, возвращенном как структура с полями в этой таблице.
fminimax
решает минимаксную задачу путем преобразования его в целевую проблему достижения, и затем решения конвертированного целевого использования достижения задач fgoalattain
. Преобразование устанавливает все цели к 0 и все веса к 1. Смотрите уравнение 1 в Многоцелевых Алгоритмах Оптимизации.
Оптимизировать задача Live Editor обеспечивает визуальный интерфейс для fminimax
.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
опции = optimoptions ('
solvername
', 'UseParallel', верный)
Для получения дополнительной информации смотрите Используя Параллельные вычисления в Optimization Toolbox.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.