Решите многоцелевые целевые задачи достижения
fgoalattain
решает целевую задачу достижения, формулировку для минимизации многоцелевой задачи оптимизации.
fgoalattain
находит минимум проблемы заданным
weight
, goal
, b и beq являются векторами, A и Aeq являются матрицами, и F (x), c (x) и ceq (x), является функциями, которые возвращают векторы. F (x), c (x) и ceq (x) может быть нелинейными функциями.
x, lb и ub могут быть переданы как векторы или матрицы; смотрите Матричные аргументы.
попытки сделать целевые функции предоставленными x
= fgoalattain(fun
,x0
,goal
,weight
)fun
достигните целей, заданных goal
различным x
, запуск в x0
, с весом, заданным weight
.
Передача Дополнительных Параметров объясняет, как передать дополнительные параметры целевым функциям и нелинейным ограничительным функциям при необходимости.
решает целевую задачу достижения, удовлетворяющую границам x
= fgoalattain(fun
,x0
,goal
,weight
,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
= fgoalattain(fun
,x0
,goal
,weight
,A
,b
,Aeq
,beq
,lb
,ub
,nonlcon
)c(x)
или равенства ceq(x)
заданный в nonlcon
. fgoalattain
оптимизирует таким образом что c(x) ≤ 0
и ceq(x) = 0
. Если никакие границы не существуют, устанавливают lb = []
или ub = []
, или оба.
решает целевую задачу достижения для x
= fgoalattain(problem
)problem
, где problem
структура, описанная в problem
. Создайте problem
структура путем экспорта проблемы из приложения Оптимизации, как описано в Экспорте работы.
[
дополнительно возвращает фактор достижения в решении x
,fval
,attainfactor
,exitflag
,output
]
= fgoalattain(___)x
, значение exitflag
это описывает выходное условие fgoalattain
, и структура output
с информацией о процессе оптимизации.
Рассмотрите 2D целевую функцию
Эта функция ясно минимизирует в , достижение значения 2, и минимизирует в , достижение значения 5.
Установите цель [3,6] и вес [1,1] и решите целевую задачу достижения, запускающуюся в x0
= 1.
fun = @(x)[2+(x-3)^2;5+x^2/4]; goal = [3,6]; weight = [1,1]; x0 = 1; x = fgoalattain(fun,x0,goal,weight)
Local minimum possible. Constraints satisfied. fgoalattain 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 = 2.0000
Найдите значение в решении.
fun(x)
ans = 2×1
3.0000
6.0000
fgoalattain
достигает целей точно.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и линейное ограничение .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Создайте линейные ограничительные матрицы A
и b
представление A*x <= b
.
A = [1,1]; b = 4;
Установите начальную точку [1,1] и решите целевую задачу достижения.
x0 = [1,1]; x = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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.0694 1.9306
Найдите значение в решении.
fun(x)
ans = 2×1
3.1484
6.1484
fgoalattain
не удовлетворяет целям. Поскольку веса равны, решатель отстает каждую цель той же суммой.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и границы , .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Создайте границы.
lb = [0,2]; ub = [3,5];
Установите начальную точку на [1,4] и решите целевую задачу достижения.
x0 = [1,4];
A = []; % no linear constraints
b = [];
Aeq = [];
beq = [];
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied. fgoalattain 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.6667 2.3333
Найдите значение в решении.
fun(x)
ans = 2×1
2.8889
5.8889
fgoalattain
больше, чем удовлетворяют целям. Поскольку веса равны, решатель сверхдостигает каждой цели той же суммой.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и нелинейное ограничение .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Нелинейная ограничительная функция находится в norm4.m
файл.
type norm4
function [c,ceq] = norm4(x) ceq = []; c = norm(x)^2 - 4;
Создайте пустые входные параметры для линейных ограничений и границ.
A = []; Aeq = []; b = []; beq = []; lb = []; ub = [];
Установите начальную точку на [1,1] и решите целевую задачу достижения.
x0 = [1,1]; x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,@norm4)
Local minimum possible. Constraints satisfied. fgoalattain 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
1.1094 1.6641
Найдите значение в решении.
fun(x)
ans = 2×1
4.5778
7.1991
fgoalattain
не удовлетворяет целям. Несмотря на равные веса, приблизительно 1,58 от его цели 3, и приблизительно 1,2 от его цели 6. Нелинейное ограничение предотвращает решение x
от достижения целей одинаково.
Контролируйте целевой процесс решения для достижения, устанавливая опции возвратить итеративное отображение.
options = optimoptions('fgoalattain','Display','iter');
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и линейное ограничение .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Создайте линейные ограничительные матрицы A
и b
представление A*x <= b
.
A = [1,1]; b = 4;
Создайте пустые входные параметры для линейных ограничений равенства, границ и нелинейных ограничений.
Aeq = []; beq = []; lb = []; ub = []; nonlcon = [];
Установите начальную точку [1,1] и решите целевую задачу достижения.
x0 = [1,1]; x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
Attainment Max Line search Directional Iter F-count factor constraint steplength derivative Procedure 0 4 0 4 1 9 -1 2.5 1 -0.535 2 14 -1.115e-08 0.2813 1 0.883 3 19 0.1452 0.005926 1 0.883 4 24 0.1484 2.868e-06 1 0.883 5 29 0.1484 6.748e-13 1 0.883 Hessian modified Local minimum possible. Constraints satisfied. fgoalattain 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.0694 1.9306
Положительное значение фактора достижения, о котором сообщают, указывает на тот fgoalattain
не находит решение, удовлетворяющее целям.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и линейное ограничение .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Создайте линейные ограничительные матрицы A
и b
представление A*x <= b
.
A = [1,1]; b = 4;
Установите начальную точку [1,1] и решите целевую задачу достижения. Запросите значение целевой функции.
x0 = [1,1]; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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.0694 1.9306
fval = 2×1
3.1484
6.1484
Значения целевой функции выше, чем цель, означая fgoalattain
не удовлетворяет цели.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], вес [1,1], и линейное ограничение .
Создайте целевую функцию, цель и вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Создайте линейные ограничительные матрицы A
и b
представление A*x <= b
.
A = [1,1]; b = 4;
Установите начальную точку [1,1] и решите целевую задачу достижения. Запросите значение целевой функции, фактора достижения, выходного флага, структуры output и множителей Лагранжа.
x0 = [1,1]; [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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.0694 1.9306
fval = 2×1
3.1484
6.1484
attainfactor = 0.1484
exitflag = 4
output = struct with fields:
iterations: 6
funcCount: 29
lssteplength: 1
stepsize: 4.1454e-13
algorithm: 'active-set'
firstorderopt: []
constrviolation: 6.7482e-13
message: '...'
lambda = struct with fields:
lower: [2x1 double]
upper: [2x1 double]
eqlin: [0x1 double]
eqnonlin: [0x1 double]
ineqlin: 0.5394
ineqnonlin: [0x1 double]
Положительное значение attainfactor
указывает, что цели не достигнуты; можно также видеть это путем сравнения fval
с goal
.
lambda.ineqlin
значение является ненулевым, указывая, что линейное неравенство ограничивает решение.
Целевая функция
Здесь, p_1
= [2,3] и p_2
= [4,1]. Цель [3,6], и начальный вес [1,1].
Создайте целевую функцию, цель и начальный вес.
p_1 = [2,3]; p_2 = [4,1]; fun = @(x)[2 + norm(x-p_1)^2;5 + norm(x-p_2)^2/4]; goal = [3,6]; weight = [1,1];
Установите линейное ограничение .
A = [1 1]; b = 4;
Решите целевую задачу достижения, начинающую с точки x0 = [1 1]
.
x0 = [1 1]; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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.0694 1.9306
fval = 2×1
3.1484
6.1484
Каждый компонент fval
выше соответствующего компонента goal
, указание, что цели не достигнуты.
Увеличьте важность удовлетворения первой цели установкой weight(1)
к меньшему значению.
weight(1) = 1/10; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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.0115 1.9885
fval = 2×1
3.0233
6.2328
Теперь значение fval(1)
намного ближе к goal(1)
, тогда как fval(2)
более далеко от goal(2)
.
Измените goal(2)
к 7, который является выше текущего решения. Изменения решения.
goal(2) = 7; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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
1.9639 2.0361
fval = 2×1
2.9305
6.3047
Оба компонента fval
меньше соответствующих компонентов goal
. Но fval(1)
намного ближе к goal(1)
чем fval(2)
к goal(2)
. Меньший вес, более вероятно, сделает свой компонент почти удовлетворенным, когда цели не смогут быть достигнуты, но делают степень сверхдостижения меньше, когда цель может быть достигнута.
Измените веса, чтобы быть равными. fval
результаты имеют равное расстояние от своих целей.
weight(2) = 1/10; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b)
Local minimum possible. Constraints satisfied. fgoalattain 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
1.7613 2.2387
fval = 2×1
2.6365
6.6365
Ограничения могут сохранить получившийся fval
от того, чтобы быть одинаково близко к целям. Например, установите верхнюю границу 2 на x(2)
.
ub = [Inf,2]; lb = []; Aeq = []; beq = []; [x,fval] = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
Local minimum possible. Constraints satisfied. fgoalattain 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.0000 2.0000
fval = 2×1
3.0000
6.2500
В этом случае, fval(1)
удовлетворяет его цели точно, но fval(2)
меньше его цели.
fun
— Целевые функцииЦелевые функции, определенный функцией указатель или имя функции. fun
функция, которая принимает векторный x
и возвращает векторный F
, целевые функции выполнены в x
. Можно задать функциональный fun
как указатель на функцию для файла функции:
x = fgoalattain(@myfun,x0,goal,weight)
где myfun
функция MATLAB® такой как
function F = myfun(x) F = ... % Compute function values at x.
fun
может также быть указатель на функцию для анонимной функции:
x = fgoalattain(@(x)sin(x.*x),x0,goal,weight);
Если пользовательские значения для x
и F
массивы, fgoalattain
преобразует их в векторы, использующие линейную индексацию (см. Индексацию массива (MATLAB)).
Сделать целевую функцию почти возможной к целевому значению (то есть, ни больше, чем, ни меньше, чем), optimoptions
использования установить
EqualityGoalCount
опция к количеству целей, требуемых быть в окружении целевых значений. Такие цели должны быть разделены в первые элементы векторного F
возвращенный fun
.
Предположим, что градиент целевой функции может также быть вычислен и SpecifyObjectiveGradient
опцией является true
, как установлено:
options = optimoptions('fgoalattain','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)
).
Установка SpecifyObjectiveGradient
к true
является эффективным только, когда проблема не имеет никаких нелинейных ограничений, или проблема имеет нелинейное ограничение с SpecifyConstraintGradient
установите на true
. Внутренне, цель свернута в ограничения, таким образом, решателю нужны оба градиента (цель и ограничение) предоставленный во избежание оценки градиента.
Типы данных: char |
string
| function_handle
x0
— Начальная точкаНачальная точка, заданная как вектор действительных чисел или действительный массив. Решатели используют число элементов в x0
и размер x0
определить номер и размер переменных что fun
принимает.
Пример: x0 = [1,2,3,4]
Типы данных: double
goal
— Цель достигнутьЦель достигнуть, заданный как вектор действительных чисел. fgoalattain
попытки найти самый маленький множитель γ, который заставляет эти неравенства содержать для всех значений i в решении x:
Принятие, что weight
положительный вектор:
Если решатель находит точку x
это одновременно достигает всех целей, затем фактор достижения, γ отрицателен, и цели сверхдостигаются.
Если решатель не может найти точку x
это одновременно достигает всех целей, затем фактор достижения, γ положителен, и цели отстаются.
Пример: [1 3 6]
Типы данных: double
weight
— Относительный фактор достиженияОтносительный фактор достижения, заданный как вектор действительных чисел. fgoalattain
попытки найти самый маленький множитель γ, который заставляет эти неравенства содержать для всех значений i в решении x:
Когда значения goal
являются все ненулевыми, чтобы гарантировать тот же процент низкой успеваемости или сверхдостижение активных целей, установить weight
к abs(goal)
. (Активные цели являются набором целей, которые являются барьерами для дальнейшего совершенствования целей в решении.)
Установка компонента weight
вектор, чтобы обнулить заставляет соответствующее целевое ограничение быть обработанным как трудное ограничение, а не целевое ограничение. Альтернативный метод к установке трудного ограничения должен использовать входной параметр nonlcon
.
Когда weight
положительно, fgoalattain
попытки сделать целевые функции меньше, чем целевые значения. Чтобы сделать целевые функции больше, чем целевые значения, установите weight
быть отрицательным, а не положительным. Чтобы видеть некоторые эффекты весов на решении, смотрите Эффекты Весов, Целей и Ограничений в Целевом Достижении.
Чтобы сделать целевую функцию почти возможной к целевому значению, используйте EqualityGoalCount
опция и задает цель как первый элемент вектора, возвращенного fun
(см. fun
и options
). Для примера смотрите Многоцелевую Целевую Оптимизацию Достижения.
Пример: abs(goal)
Типы данных: 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
. fgoalattain
попытки удовлетворить
c(x) <= 0
для всех записей c
.
ceq(x)
массив нелинейных ограничений равенства в x
. fgoalattain
попытки удовлетворить
ceq(x) = 0
для всех записей ceq
.
Например,
x = fgoalattain(@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('fgoalattain','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
, см. Текущие и Устаревшие Таблицы Имени Опции.
Опция | Описание |
---|---|
ConstraintTolerance | Допуск завершения на ограничительном нарушении, положительной скалярной величине. Значением по умолчанию является Для |
Диагностика | Отображение диагностической информации о функции, которая будет минимизирована или решена. Выбором является |
DiffMaxChange | Максимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). Значением по умолчанию является |
DiffMinChange | Минимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). |
| Level of display (см. Итеративное Отображение):
|
EqualityGoalCount | Количество целей требуется для объективного Для |
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('fgoalattain','PlotFcn','optimplotfval')
problem
— Структура задачиСтруктура задачи, заданная как структура с полями в этой таблице.
Имя поля | Запись |
---|---|
| Целевая функция fun |
| Начальная точка для x |
| Цели достигнуть |
| Относительные факторы важности целей |
| Матрица для линейных ограничений неравенства |
| Вектор для линейных ограничений неравенства |
| Матрица для линейных ограничений равенства |
| Вектор для линейных ограничений равенства |
lb | Вектор нижних границ |
ub | Вектор верхних границ |
| Нелинейная ограничительная функция |
| 'fgoalattain' |
| Опции создаются с optimoptions |
Необходимо предоставить, по крайней мере, objective
x0
, goal
, weight
, solver
, и options
поля в problem
структура.
Самый простой способ получить problem
структура должна экспортировать проблему из приложения Оптимизации.
Типы данных: struct
x
РешениеРешение, возвращенное как вектор действительных чисел или действительный массив. Размер x
совпадает с размером x0
. Как правило, x
локальное решение проблемы когда exitflag
положительно. Для получения информации о качестве решения смотрите, Когда Решатель Успешно выполнится.
fval
— Значения целевой функции в решенииЗначения целевой функции в решении, возвращенном как действительный массив. Обычно fval
= fun(x)
.
attainfactor
— Фактор достиженияФактор достижения, возвращенный как вещественное число. attainfactor
содержит значение γ в решении. Если attainfactor
отрицательно, цели были сверхдостигнуты; если attainfactor
положительно, цели отстались. Смотрите goal
.
exitflag
— Обоснуйте fgoalattain
остановленныйОбоснуйте fgoalattain
остановленный, возвращенный как целое число.
1 | Функция сходилась к решению |
4 | Величина поискового направления была меньше заданного допуска, и ограничительное нарушение было меньше |
5 | Величина косой производной была меньше заданного допуска, и ограничительное нарушение было меньше |
0 | Количество итераций превысило |
-1 | Зашедший выходная функция или функция построения графика |
-2 | Никакая допустимая точка не была найдена. |
output
— Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с полями в этой таблице.
iterations | Количество проделанных итераций |
funcCount | Количество функциональных оценок |
lssteplength | Размер линии ищет шаг относительно поискового направления |
constrviolation | Максимум ограничительных функций |
stepsize | Длина последнего смещения в |
algorithm | Алгоритм оптимизации используется |
firstorderopt | Мера оптимальности первого порядка |
message | Выходное сообщение |
lambda
— Множители Лагранжа в решенииМножители Лагранжа в решении, возвращенном как структура с полями в этой таблице.
Для описания fgoalattain
алгоритм и обсуждение целевых концепций достижения, см. Алгоритмы.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
опции = optimoptions ('
solvername
', 'UseParallel', верный)
Для получения дополнительной информации смотрите Используя Параллельные вычисления в Optimization Toolbox.
fmincon
| fminimax
| optimoptions
| optimtool
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.