Решите минимаксную ограничительную задачу
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 = []
, или оба.
решает минимаксную задачу для 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
- 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 | Графики, показывающие различные показатели прогресса, в то время как алгоритм выполняется. Выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика. Для |
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
структура должна экспортировать проблему из приложения Оптимизации.
Типы данных: 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 в Многоцелевых Алгоритмах Оптимизации.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
опции = optimoptions ('
solvername
', 'UseParallel', верный)
Для получения дополнительной информации смотрите Используя Параллельные вычисления в Optimization Toolbox.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.