Решите минимаксную ограничительную проблему
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)
x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fminimax(problem)
[x,fval]
= fminimax(___)
[x,fval,maxfval,exitflag,output]
= fminimax(___)
[x,fval,maxfval,exitflag,output,lambda]
= fminimax(___)
запускается в x
= fminimax(fun
,x0
)x0
и находит минимаксное решение x
к функциям описанный в fun
.
Передача Дополнительных Параметров объясняет, как передать дополнительные параметры целевым функциям и нелинейным ограничительным функциям при необходимости.
решает минимаксную проблему, подвергающуюся границам x
= fminimax(fun
,x0
,A
,b
,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(problem
)problem
, где problem
является структурой, описанной в problem
. Создайте структуру problem
путем экспорта проблемы из приложения Оптимизации, как описано в Экспорте работы.
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);
Если пользовательские значения для x
и F
являются массивами, fminimax
преобразовывает их в векторы, использующие линейную индексацию (см. Индексацию массива (MATLAB)).
Минимизировать абсолютные значения худшего случая некоторых элементов векторного F (x) (то есть, min {макс. abs {F (x)}}), делят те цели в первые элементы F и используют optimoptions
, чтобы установить опцию AbsoluteMaxObjectiveCount
на количество этих целей. Эти цели должны быть разделены в первые элементы векторного F
, возвращенного fun
. Для примера смотрите, Решают Минимаксную проблему Используя Абсолютное значение Одной Цели.
Примите, что градиенты целевых функций могут также быть вычислены, и опцией SpecifyObjectiveGradient
является true
, как установлено:
options = optimoptions('fminimax','SpecifyObjectiveGradient',true)
В этом случае функциональный fun
должен возвратиться, во втором выходном аргументе, значения градиента G
(матрица) в x
. Градиент состоит из частной производной dF/dx каждого F
в точке x
. Если F
является вектором длины, m
и x
имеют длину n
, где n
является длиной x0
, то градиент, G
F(x)
является n
-by-m
матрица, где G(i,j)
является частной производной F(j)
относительно x(i)
(то есть, j
th столбец G
является градиентом j
th целевая функция F(j)
). Если вы задаете F
как массив, то предыдущее обсуждение применяется к F(:)
, линейному упорядоченному расположению массива F
. В любом случае G
является 2D матрицей.
Установка SpecifyObjectiveGradient
к true
является эффективной только, когда проблема не имеет никакого нелинейного ограничения, или когда проблема имеет нелинейное ограничение с набором SpecifyConstraintGradient
к true
. Внутренне, цель свернута в ограничения, таким образом, решателю нужны оба градиента (цель и ограничение) предоставленный во избежание оценки градиента.
Типы данных: char
| string
| function_handle
x0
Начальная точкаНачальная точка, заданная как вектор действительных чисел или действительный массив. Решатели используют число элементов в x0
и размере 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
.
Например, чтобы задать
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
-by-N
.
Например, чтобы задать
x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
введите эти ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать что x сумма компонентов к 1 или меньше, используйте A = ones(1,N)
и b = 1
.
Типы данных: double
Aeq
— Линейные ограничения равенстваЛинейные ограничения равенства, заданные как действительная матрица. Aeq
является Me
-by-N
матрица, где Me
является количеством равенств, и N
является количеством переменных (число элементов в x0
). Для больших проблем передайте Aeq
как разреженную матрицу.
Aeq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
является вектор-столбцом переменных N
x(:)
, и beq
является вектор-столбцом с элементами Me
.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
введите эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что x сумма компонентов к 1, используйте Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
beq
— Линейные ограничения равенстваЛинейные ограничения равенства, заданные как вектор действительных чисел. beq
является Me
- вектор элемента, связанный с матрицей Aeq
. Если вы передаете beq
как вектор - строку, решатели внутренне преобразовывают beq
в вектор-столбец beq(:)
. Для больших проблем передайте beq
как разреженный вектор.
beq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
является вектор-столбцом переменных N
x(:)
, и Aeq
является матрицей размера Me
-by-N
.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
введите эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что x сумма компонентов к 1, используйте Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
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
-by-m
матрица, где GC(i,j)
является частной производной c(j)
относительно x(i)
(то есть, j
th столбец GC
является градиентом j
th ограничение неравенства c(j)
). Аналогично, если ceq
имеет компоненты p
, градиент, GCeq
ceq(x)
является n
-by-p
матрица, где GCeq(i,j)
является частной производной ceq(j)
относительно x(i)
(то есть, j
th столбец GCeq
является градиентом j
th ограничение равенства ceq(j)
).
Установка SpecifyConstraintGradient
к true
является эффективной только, когда SpecifyObjectiveGradient
установлен в true
. Внутренне, цель свернута в ограничение, таким образом, решателю нужны оба градиента (цель и ограничение) предоставленный во избежание оценки градиента.
Поскольку функции Optimization Toolbox™ принимают только входные параметры типа double
, предоставленные пользователями объективные и нелинейные ограничительные функции должны возвратить выходные параметры типа double
.
Смотрите Передающие Дополнительные Параметры для объяснения того, как параметризовать нелинейную ограничительную функцию nonlcon
при необходимости.
Типы данных: char
| function_handle
| string
опции
Опции оптимизацииoptimoptions
| структура, такая как optimset
возвращаетсяОпции оптимизации, заданные как вывод optimoptions
или структуры, такие как optimset
, возвращаются.
Некоторые опции отсутствуют в отображении optimoptions
. Эти опции появляются курсивом в следующей таблице. Для получения дополнительной информации, Опции вида на море.
Для получения дополнительной информации об опциях, которые имеют различные имена для optimset
, см. Текущие и Устаревшие Таблицы Имени Опции.
Опция | Описание |
---|---|
AbsoluteMaxObjectiveCount | Число элементов Fi (x), для которого можно минимизировать абсолютное значение Fi. Смотрите Решают Минимаксную проблему Используя Абсолютное значение Одной Цели. Для |
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 | Одна или несколько пользовательских функций, что оптимизация вызовы функции в каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значение по умолчанию не ни один ( |
PlotFcn | Графики, показывающие различные меры прогресса, в то время как алгоритм выполняется. Выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика. Для |
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
.
Самым простым способом получить структуру problem является экспорт задачи из Optimization app.
Типы данных: struct
x
РешениеРешение, возвращенное как вектор действительных чисел или действительный массив. Размер x
совпадает с размером x0
. Как правило, x
является локальным решением проблемы, когда exitflag
положителен. Для получения информации о качестве решения смотрите, Когда Решатель Успешно выполнится.
fval
Значения целевой функции в решенииЗначения целевой функции в решении, возвращенном как действительный массив. Обычно fval
= fun(x)
.
maxfval
— Максимум значений целевой функции в решенииМаксимум значений целевой функции в решении, возвращенном как действительный скаляр. maxfval = max(fval(:))
.
exitflag
Обоснуйте остановленный fminimax
Обоснуйте, что остановленный fminimax
, возвратился как целое число.
1 | Функция сходилась к решению |
4 | Значение поискового направления было меньше, чем заданный допуск, и ограничительное нарушение было меньше, чем |
5 | Значение косой производной было меньше, чем заданный допуск, и ограничительное нарушение было меньше, чем |
0 | Количество итераций превысило |
-1 | Зашедший выходная функция или функция построения графика |
-2 | Никакая допустимая точка не была найдена. |
вывод
Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с полями в этой таблице.
iterations | Количество проделанных итераций |
funcCount | Количество функциональных оценок |
lssteplength | Размер строки ищет шаг относительно поискового направления |
constrviolation | Максимум ограничительных функций |
stepsize | Длина последнего смещения в |
algorithm | Алгоритм оптимизации используется |
firstorderopt | Мера оптимальности первого порядка |
message | Выходное сообщение |
\lambda
Множители Лагранжа в решенииМножители Лагранжа в решении, возвращенном как структура с полями в этой таблице.
fminimax
решает минимаксную проблему путем преобразования его в целевую проблему достижения, и затем решения конвертированной целевой проблемы достижения с помощью fgoalattain
. Преобразование устанавливает все цели к 0 и все веса к 1. Смотрите уравнение 1 в Многоцелевых Алгоритмах Оптимизации.
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
options = optimoptions('solvername','UseParallel',true)
Для получения дополнительной информации смотрите Используя Параллельные вычисления в Optimization Toolbox.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.