Решение многообъективных задач достижения целей
fgoalattain решает задачу достижения цели, формулируя для минимизации задачи многообъективной оптимизации.
fgoalattain находит минимум проблемы, указанный в
=0A⋅x≤bAeq⋅x=beqlb≤x≤ub.
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.
Примечание
В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как при необходимости передавать дополнительные параметры целевым функциям и функциям нелинейных ограничений.
решает задачу достижения цели, подчиняясь границам 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,fval,attainfactor,exitflag,output] = fgoalattain(___)x, значение exitflag который описывает условие выхода fgoalattainи структура output с информацией о процессе оптимизации.
Рассмотрим функцию с двумя целями
+ x2/4].
Эта функция четко минимизирует ) при = 3, достигая значения 2, и (x) x = 0, достигая значения 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], нелинейное ограничение - x‖2≤4.
Создайте целевую функцию, цель и вес.
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 norm4function [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, а x) - около 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 -5.194e-09 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.839e-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] и решите задачу достижения цели. Запрос значения целевой функции, коэффициента достижения, флага выхода, структуры вывода и множителей Лагранжа.
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.1263e-13
algorithm: 'active-set'
firstorderopt: []
constrviolation: 6.8393e-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 преобразует их в векторы с помощью линейного индексирования (см. раздел Индексирование массива).
Чтобы сделать объективную функцию как можно ближе к целевому значению (то есть не больше или меньше), используйте 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) (то есть, j4-я колонна G - градиент j3-я целевая функция 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 элементы.
Например, для указания
x1 + 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.
Например, рассмотрим эти неравенства:
x1 + 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 элементы.
Например, для указания
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 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.
Например, рассмотрим следующие равенства:
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 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). См. раздел Нелинейные ограничения (Nonlinear Constraints), в котором объясняется, как «обусловить» градиенты для использования в решателях, которые не принимают заданные градиенты.
Если nonlcon возвращает вектор c из m компоненты и x имеет длину n, где n - длина x0, то градиент GC из c(x) является nоколо-m матрица, где GC(i,j) - частная производная c(j) в отношении x(i) (то есть, j4-я колонна GC - градиент jОграничение неравенства c(j)). Аналогично, если ceq имеет p компоненты, градиент GCeq из ceq(x) является nоколо-p матрица, где GCeq(i,j) - частная производная ceq(j) в отношении x(i) (то есть, j4-я колонна 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 | Минимальное изменение переменных для градиентов конечных разностей (положительный скаляр). Значение по умолчанию: |
| Уровень отображения (см. Итерационный просмотр):
|
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 | Одна или несколько пользовательских функций, вызываемых функцией оптимизации в каждой итерации. Передача дескриптора функции или массива ячеек дескрипторов функции. Значение по умолчанию - нет ( |
PlotFcn | Графики, показывающие различные показатели прогресса во время выполнения алгоритма. Выберите из предопределенных графиков или напишите собственные. Передача имени, дескриптора функции или массива ячеек имен или дескрипторов функций. Для пользовательских функций печати передайте дескрипторы функций. Значение по умолчанию - нет (
Пользовательские функции печати используют тот же синтаксис, что и функции вывода. См. раздел Функции вывода для оптимизации Toolbox™ и Функция вывода и синтаксис функции печати. Для |
| 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 структура.
Типы данных: struct
x - РешениеРешение, возвращаемое в виде вещественного вектора или вещественного массива. Размер x совпадает с размером x0. Как правило, x является локальным решением проблемы, когда exitflag является положительным. Сведения о качестве решения см. в разделе Когда решатель добьется успеха.
fval - Значения целевой функции при решенииЗначения целевой функции в решении, возвращаемые в виде вещественного массива. Как правило, fval = fun(x).
attainfactor - Коэффициент достиженияКоэффициент достижения, возвращаемый как действительное число. attainfactor содержит значение γ в растворе. Если attainfactor является отрицательным, цели были недостигнуты; если attainfactor является позитивным, цели были недостигнуты. Посмотрите goal.
exitflag - Причина fgoalattain остановленныйПричина fgoalattain остановлено, возвращено как целое число.
| Функция, сходящаяся к решению |
| Величина направления поиска была меньше указанного допуска, а нарушение ограничения - меньше |
| Величина направленной производной была меньше указанного допуска, а нарушение ограничения - меньше |
| Превышено число итераций |
| Останавливается функцией вывода или функцией графика |
| Выполнимая точка не найдена. |
output - Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенная в виде структуры с полями в этой таблице.
iterations | Количество выполненных итераций |
funcCount | Количество оценок функций |
lssteplength | Размер шага поиска строки относительно направления поиска |
constrviolation | Максимум функций ограничения |
stepsize | Длина последнего смещения в |
algorithm | Используемый алгоритм оптимизации |
firstorderopt | Мера оптимальности первого порядка |
message | Выйти из сообщения |
lambda - Множители лагранжа в решенииМножители лагранжа в решении, возвращаемые как структура с полями в этой таблице.
Для описания fgoalattain алгоритм и обсуждение концепций достижения целей, см. Алгоритмы.
Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для fgoalattain.
Для параллельного выполнения установите 'UseParallel' опция для true.
options = optimoptions('solvername','UseParallel',true)
Дополнительные сведения см. в разделе Использование параллельных вычислений на панели инструментов оптимизации.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.