Найдите минимум ограниченной нелинейной многомерной функции
Нелинейный программный решатель.
Находит минимум задачи, заданной в
b и beq являются векторами, A и Aeq являются матрицами, c (x) и ceq (x) являются функциями, которые возвращают векторы, а f (x) является функцией, которая возвращает скаляр. f (x), c (x) и ceq (x) могут быть нелинейными функциями.
x, lb и ub могут быть переданы как векторы или матрицы; см. Матричные аргументы.
начинается с x
= fmincon(fun
,x0
,A
,b
)x0
и пытается найти минимизатор x
функции, описанной в fun
удовлетворяющее линейным неравенствам A*x ≤ b
. x0
может быть скаляром, вектором или матрицей.
Примечание
Передача дополнительных параметров объясняет, как передать дополнительные параметры целевой функции и нелинейным ограничительным функциям, если это необходимо.
задает набор нижних и верхних границ переменных проектов в x
= fmincon(fun
,x0
,A
,b
,Aeq
,beq
,lb
,ub
)x
, так что решение всегда находится в области значений lb
≤ x
≤ ub
. Если равенств не существует, задайте Aeq = []
и beq = []
. Если x(i)
неограниченно внизу, установите lb(i) = -Inf
, и если x(i)
неограниченно выше, задайте ub(i) = Inf
.
Примечание
Если заданные входные ограничения для задачи несогласованны, fmincon
выдает ошибку. В этом случае выводите x
является x0
и fval
является []
.
Для 'interior-point'
по умолчанию алгоритм,
fmincon
устанавливает компоненты x0
которые нарушают границы lb ≤ x ≤ ub
, или равны привязке, к внутренней части связанной области. Для 'trust-region-reflective'
алгоритм, fmincon
устанавливает нарушающие компоненты во внутреннюю часть связанной области. Для других алгоритмов, fmincon
устанавливает нарушающие компоненты на ближайшую границу. Компоненты, которые соответствуют границам, не изменяются. Смотрите Итерации могут нарушать ограничения.
Найдите минимальное значение функции Розенбрка, когда существует линейное ограничение неравенства.
Установите целевую функцию fun
быть функцией Розенбрка. Функция Розенбрка, как известно, трудно минимизировать. Это минимальное целевое значение 0 в точке (1,1). Для получения дополнительной информации см. «Решение ограниченной нелинейной задачи, основанной на решателе».
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
Найдите минимальное значение, начиная с точки [-1,2]
, ограничено иметь . Выразите это ограничение в форме Ax <= b
путем взятия A = [1,2]
и b = 1
. Заметьте, что это ограничение означает, что решение не будет в без ограничений решении (1,1), потому что в этой точке .
x0 = [-1,2]; A = [1,2]; b = 1; x = fmincon(fun,x0,A,b)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
0.5022 0.2489
Найдите минимальное значение функции Розенбрка, когда существуют как линейное ограничение неравенства, так и линейное ограничение равенства.
Установите целевую функцию fun
быть функцией Розенбрка.
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
Найдите минимальное значение, начиная с точки [0.5,0]
, ограничено иметь и .
Выразите линейное ограничение неравенства в форме A*x <= b
путем взятия A = [1,2]
и b = 1
.
Выразите линейное ограничение равенства в форме Aeq*x = beq
путем взятия Aeq = [2,1]
и beq = 1
.
x0 = [0.5,0]; A = [1,2]; b = 1; Aeq = [2,1]; beq = 1; x = fmincon(fun,x0,A,b,Aeq,beq)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
0.4149 0.1701
Найдите минимум целевой функции при наличии связанных ограничений.
Целевая функция является простой алгебраической функцией двух переменных.
fun = @(x)1+x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1));
Посмотрите в области, где имеет положительные значения, , и .
lb = [0,0]; ub = [1,2];
Задача не имеет линейных ограничений, поэтому установите эти аргументы равными []
.
A = []; b = []; Aeq = []; beq = [];
Попробуйте начальную точку в середине области.
x0 = (lb + ub)/2;
Решите проблему.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
1.0000 2.0000
Другая начальная точка может привести к другому решению.
x0 = x0/5; x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
10-6 ×
0.4000 0.4000
Чтобы определить, какое решение лучше, см. Раздел «Получение значения целевой функции».
Найдите минимум функции, удовлетворяющей нелинейным ограничениям
Найдите точку, где функция Розенбрка минимизирована в круге, также удовлетворяющем связанным ограничениям.
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
Посмотрите в область,.
lb = [0,0.2]; ub = [0.5,0.8];
Также посмотрите в окружности с центром [1/3,1/3] с радиусом 1/3. Скопируйте следующий код в файл по пути MATLAB ® с именем circlecon.m
.
% Copyright 2015 The MathWorks, Inc. function [c,ceq] = circlecon(x) c = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2; ceq = [];
Линейных ограничений нет, поэтому установите эти аргументы равными []
.
A = []; b = []; Aeq = []; beq = [];
Выберите начальную точку, удовлетворяющую всем ограничениям.
x0 = [1/4,1/4];
Решите проблему.
nonlcon = @circlecon; x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance. x = 0.5000 0.2500
Установите опции, чтобы просмотреть итерации по мере их возникновения и использовать другой алгоритм.
Чтобы наблюдать за fmincon
процесс решения, установите Display
опция для 'iter'
. Также попробуйте 'sqp'
алгоритм, который иногда быстрее или точнее, чем по умолчанию 'interior-point'
алгоритм.
options = optimoptions('fmincon','Display','iter','Algorithm','sqp');
Найдите минимум функций Розенбрка на единичном диске,. Сначала создайте функцию, которая представляет нелинейное ограничение. Сохраните его как файл с именем unitdisk.m
на пути MATLAB ®.
function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [];
Создайте оставшиеся спецификации проблемы. Затем запустите fmincon
.
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = @unitdisk; x0 = [0,0]; x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Iter Func-count Fval Feasibility Step Length Norm of First-order step optimality 0 3 1.000000e+00 0.000e+00 1.000e+00 0.000e+00 2.000e+00 1 12 8.913011e-01 0.000e+00 1.176e-01 2.353e-01 1.107e+01 2 22 8.047847e-01 0.000e+00 8.235e-02 1.900e-01 1.330e+01 3 28 4.197517e-01 0.000e+00 3.430e-01 1.217e-01 6.172e+00 4 31 2.733703e-01 0.000e+00 1.000e+00 5.254e-02 5.705e-01 5 34 2.397111e-01 0.000e+00 1.000e+00 7.498e-02 3.164e+00 6 37 2.036002e-01 0.000e+00 1.000e+00 5.960e-02 3.106e+00 7 40 1.164353e-01 0.000e+00 1.000e+00 1.459e-01 1.059e+00 8 43 1.161753e-01 0.000e+00 1.000e+00 1.754e-01 7.383e+00 9 46 5.901601e-02 0.000e+00 1.000e+00 1.547e-02 7.278e-01 10 49 4.533081e-02 2.898e-03 1.000e+00 5.393e-02 1.252e-01 11 52 4.567454e-02 2.225e-06 1.000e+00 1.492e-03 1.679e-03 12 55 4.567481e-02 4.406e-12 1.000e+00 2.095e-06 1.502e-05 13 58 4.567481e-02 0.000e+00 1.000e+00 2.203e-12 1.406e-05 Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance. x = 0.7864 0.6177
Включите градиентную оценку в целевую функцию для более быстрых или более надежных расчетов.
Включите оценку градиента в качестве обусловленного выхода в файл целевой функции. Для получения дополнительной информации смотрите Включая градиенты и Гессианы. Целевой функцией является функция Розенбрка,
который имеет градиент
function [f,g] = rosenbrockwithgrad(x) % Calculate objective f f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2; if nargout > 1 % gradient required g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1)); 200*(x(2)-x(1)^2)]; end
Сохраните этот код как файл с именем rosenbrockwithgrad.m
на пути MATLAB ®.
Создайте опции, чтобы использовать градиент целевой функции.
options = optimoptions('fmincon','SpecifyObjectiveGradient',true);
Создайте другие входы для задачи. Затем позвоните fmincon
.
fun = @rosenbrockwithgrad; x0 = [-1,2]; A = []; b = []; Aeq = []; beq = []; lb = [-2,-2]; ub = [2,2]; nonlcon = []; x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance. x = 1.0000 1.0000
Решите ту же задачу, что и в Опциях Nondefault, используя структуру задачи вместо отдельных аргументов.
Создайте опции и структуру задачи. Имена полей и обязательные поля см. в разделе «Проблема».
options = optimoptions('fmincon','Display','iter','Algorithm','sqp'); problem.options = options; problem.solver = 'fmincon'; problem.objective = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2; problem.x0 = [0,0];
Нелинейная функция ограничения unitdisk
появляется в конце этого примера. Включите нелинейную функцию ограничения в problem
.
problem.nonlcon = @unitdisk;
Решите проблему.
x = fmincon(problem)
Iter Func-count Fval Feasibility Step Length Norm of First-order step optimality 0 3 1.000000e+00 0.000e+00 1.000e+00 0.000e+00 2.000e+00 1 12 8.913011e-01 0.000e+00 1.176e-01 2.353e-01 1.107e+01 2 22 8.047847e-01 0.000e+00 8.235e-02 1.900e-01 1.330e+01 3 28 4.197517e-01 0.000e+00 3.430e-01 1.217e-01 6.172e+00 4 31 2.733703e-01 0.000e+00 1.000e+00 5.254e-02 5.705e-01 5 34 2.397111e-01 0.000e+00 1.000e+00 7.498e-02 3.164e+00 6 37 2.036002e-01 0.000e+00 1.000e+00 5.960e-02 3.106e+00 7 40 1.164353e-01 0.000e+00 1.000e+00 1.459e-01 1.059e+00 8 43 1.161753e-01 0.000e+00 1.000e+00 1.754e-01 7.383e+00 9 46 5.901601e-02 0.000e+00 1.000e+00 1.547e-02 7.278e-01 10 49 4.533081e-02 2.898e-03 1.000e+00 5.393e-02 1.252e-01 11 52 4.567454e-02 2.225e-06 1.000e+00 1.492e-03 1.679e-03 12 55 4.567481e-02 4.406e-12 1.000e+00 2.095e-06 1.501e-05 13 58 4.567481e-02 0.000e+00 1.000e+00 2.159e-09 1.511e-05 Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
0.7864 0.6177
Итеративное отображение и решение те же, что и в опциях Nondefault.
Следующий код создает unitdisk
функция.
function [c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1; ceq = []; end
Функции fmincon
с fval
выход для получения значения целевой функции в решении.
Пример Минимизировать со Связанными Ограничениями показывает два решения. Что лучше? Запустите пример, запрашивающий fval
выход, а также решение.
fun = @(x)1+x(1)./(1+x(2)) - 3*x(1).*x(2) + x(2).*(1+x(1)); lb = [0,0]; ub = [1,2]; A = []; b = []; Aeq = []; beq = []; x0 = (lb + ub)/2; [x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2
1.0000 2.0000
fval = -0.6667
Запустите задачу с другой начальной точки x0
.
x0 = x0/5; [x2,fval2] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
x2 = 1×2
10-6 ×
0.4000 0.4000
fval2 = 1.0000
Это решение имеет значение целевой функции fval2
= 1, что выше первого значения fval
= –0.6667. Первое решение x
имеет более низкое локальное минимальное значение целевой функции.
Чтобы легко изучить качество решения, запросите exitflag
и output
выходы.
Установите задачу минимизации функции Розенбрка на единичном диске,. Сначала создайте функцию, которая представляет нелинейное ограничение. Сохраните его как файл с именем unitdisk.m
на пути MATLAB ®.
function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [];
Создайте оставшиеся спецификации проблемы.
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2; nonlcon = @unitdisk; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; x0 = [0,0];
Функции fmincon
использование fval
, exitflag
, и output
выходы.
[x,fval,exitflag,output] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance. x = 0.7864 0.6177 fval = 0.0457 exitflag = 1 output = struct with fields: iterations: 24 funcCount: 84 constrviolation: 0 stepsize: 6.9162e-06 algorithm: 'interior-point' firstorderopt: 2.4373e-08 cgiterations: 4 message: '...' bestfeasible: [1x1 struct]
The exitflag
значение 1
указывает, что решение является локальным минимумом.
The output
структура сообщает несколько статистических данных о процессе решения. В частности, это приводит количество итераций в output.iterations
, количество вычислений функции в output.funcCount
, и выполнимость в output.constrviolation
.
fmincon
при необходимости возвращает несколько выходов, которые можно использовать для анализа отчетного решения.
Установите задачу минимизации функции Розенбрка на единичном диске. Сначала создайте функцию, которая представляет нелинейное ограничение. Сохраните его как файл с именем unitdisk.m
на пути MATLAB ®.
function [c,ceq] = unitdisk(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [];
Создайте оставшиеся спецификации проблемы.
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2; nonlcon = @unitdisk; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; x0 = [0,0];
Запросить все fmincon
выходы.
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance. x = 0.7864 0.6177 fval = 0.0457 exitflag = 1 output = struct with fields: iterations: 24 funcCount: 84 constrviolation: 0 stepsize: 6.9162e-06 algorithm: 'interior-point' firstorderopt: 2.4373e-08 cgiterations: 4 message: '...' bestfeasible: [1x1 struct] lambda = struct with fields: eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: [0x1 double] lower: [2x1 double] upper: [2x1 double] ineqnonlin: 0.1215 grad = -0.1911 -0.1501 hessian = 497.2903 -314.5589 -314.5589 200.2392
The lambda.ineqnonlin
выход показывает, что нелинейное ограничение активно в решении, и задает значение связанного множителя Лагранжа.
The grad
выход задает значение градиента целевой функции в решении x
.
The hessian
выход описан в fmincon Hessian.
fun
- Функция для минимизацииФункция для минимизации, заданная как указатель на функцию или имя функции. fun
является функцией, которая принимает вектор или массив x
и возвращает действительный скаляр f
, целевая функция, оцененная как x
.
Задайте fun
как указатель на функцию для файла:
x = fmincon(@myfun,x0,A,b)
где myfun
является MATLAB® функция, такая как
function f = myfun(x) f = ... % Compute function value at x
Можно также задать fun
как указатель на функцию для анонимной функции:
x = fmincon(@(x)norm(x)^2,x0,A,b);
Если можно вычислить градиент fun
и SpecifyObjectiveGradient
для опции задано значение true
, как установлено
options = optimoptions('fmincon','SpecifyObjectiveGradient',true)
fun
должен вернуть вектор градиента g(x)
во втором выходном аргументе.
Если вы также можете вычислить матрицу Гессия и HessianFcn
для опции задано значение 'objective'
через optimoptions
и Algorithm
опция 'trust-region-reflective'
, fun
необходимо вернуть значение Гессия H(x)
, симметричная матрица, в третьем выходном аргументе. fun
может дать разреженного Гессиана. См. Гессиан для fminunc trust-region или fmincon trust- области reflective алгоритмов для получения дополнительной информации.
Если вы также можете вычислить матрицу Гессия и Algorithm
для опции задано значение 'interior-point'
, есть другой способ передать Гессиан fmincon
. Для получения дополнительной информации смотрите Hessian для алгоритма fmincon interior-point. Для примера, используя Symbolic Math Toolbox™, чтобы вычислить градиент и Гессиан, смотрите Вычисление Градиентов и Гессианов Использование Symbolic Math Toolbox™.
The interior-point
и trust-region-reflective
алгоритмы позволяют вам задать функцию умножения Гессиана. Эта функция дает результат векторного продукта Гессиана-времени без непосредственного вычисления Гессиана. Это может сохранить память. См. «Функция умножения Гессиана».
Пример: fun = @(x)sin(x(1))*cos(x(2))
Типы данных: char
| function_handle
| string
x0
- Начальная точкаНачальная точка, заданная как вектор действительных чисел или вещественный массив. Решатели используют количество элементов в и размер, x0
для определения количества и размера переменных, которые fun
принимает.
'interior-point'
алгоритм - Если HonorBounds
опция true
(по умолчанию), fmincon
сбрасывает x0
компоненты, которые находятся на или вне границ lb
или ub
к значениям, строго расположенным между границами.
'trust-region-reflective'
алгоритм - fmincon
сбрасывает недопустимые x0
компоненты, которые будут допустимы относительно границ или линейных равенств.
'sqp'
, 'sqp-legacy'
, или 'active-set'
алгоритм - fmincon
сбрасывает x0
компоненты, которые являются внешними границами значений соответствующих границ.
Пример: 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
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 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
.
Для примера рассмотрим эти неравенства:
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 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
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 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
.
Для примера рассмотрим эти равенства:
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 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
. fmincon
попытки удовлетворить
c(x) <= 0
для всех записей c
.
ceq(x)
- массив нелинейных ограничений равенства в x
. fmincon
попытки удовлетворить
ceq(x) = 0
для всех записей ceq
.
Для примера,
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
где mycon
является функцией MATLAB, такой как
function [c,ceq] = mycon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
SpecifyConstraintGradient
опция true
, как установленоoptions = optimoptions('fmincon','SpecifyConstraintGradient',true)
nonlcon
должен также вернуться в третьем и четвертом выходных аргументах GC
, градиент c(x)
, и GCeq
, градиент ceq(x)
. GC
и GCeq
может быть разреженным или плотным. Если GC
или GCeq
большой, с относительно небольшим количеством ненулевых записей, экономии времени работы и памяти в interior-point
алгоритм путем представления их как разреженных матриц. Для получения дополнительной информации см. Раздел «Нелинейные ограничения».
Типы данных: char
| function_handle
| string
options
- Опции оптимизацииoptimoptions
| структуру, такую как optimset
возвратыОпции оптимизации, заданные как выход optimoptions
или структуру, такую как optimset
возвращает.
Некоторые опции применяются ко всем алгоритмам, а другие релевантны для конкретных алгоритмов. Подробную информацию см. в Ссылке по опциям оптимизации.
Некоторые опции отсутствуют в optimoptions
отображение. Эти опции выделены курсивом в следующей таблице. Для получения дополнительной информации см. раздел «Опции представления».
Все алгоритмы | |
Algorithm | Выберите алгоритм оптимизации:
Для получения информации о выборе алгоритма смотрите Выбор алгоритма. The
Если вы выбираете The |
CheckGradients | Сравните поставляемые пользователем производные (градиенты цели или ограничения) с конечными дифференцирующими производными. Варианты Для |
ConstraintTolerance | Допуск на нарушение ограничений, положительной скалярной величины. Значение по умолчанию является Для |
Диагностика | Отобразите диагностическую информацию о функции, которая будет минимизирована или решена. Варианты |
DiffMaxChange | Максимальное изменение переменных для градиентов конечных различий (a положительной скалярной величины). Значение по умолчанию является |
DiffMinChange | Минимальное изменение переменных для градиентов с конечной разностью (a положительной скалярной величины). Значение по умолчанию является |
Display | Level of display (см. Итеративное отображение):
|
FiniteDifferenceStepSize | Скаляр или векторный коэффициент размера для конечных различий. Когда вы задаете
sign′(x) = sign(x) кроме sign′(0) = 1 . Центральные конечные различия
FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию является sqrt(eps) для прямых конечных различий и eps^(1/3) для центральных конечных различий.
Для |
FiniteDifferenceType | Конечные различия, используемые для оценки градиентов, либо
Для |
FunValCheck | Проверьте, действительны ли значения целевой функции. Настройка по умолчанию, |
MaxFunctionEvaluations | Максимально допустимое количество вычислений функции, положительное целое число. Значение по умолчанию для всех алгоритмов, кроме Для |
MaxIterations | Максимально допустимое количество итераций, положительное целое число. Значение по умолчанию для всех алгоритмов, кроме Для |
OptimalityTolerance | Допуск завершения по оптимальности первого порядка (a положительной скалярной величины). Значение по умолчанию является Для |
OutputFcn | Задайте одну или несколько пользовательских функций, которые вызываются функциями оптимизации при каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значением по умолчанию является none ( |
PlotFcn | Строит графики различных показателей прогресса во время выполнения алгоритма; выберите из предопределенных графиков или напишите свои собственные. Передайте встроенное имя функции построения графика, указатель на функцию или массив ячеек со встроенными именами функций построения графика или указателями на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значением по умолчанию является none (
Пользовательские функции построения графика используют тот же синтаксис, что и выходные функции. Смотрите Выходные функции для Optimization Toolbox™ и синтаксиса выходной функции и функции построения графика. Для |
SpecifyConstraintGradient | Градиент для нелинейных функций ограничений, заданный пользователем. Когда установлено значение по умолчанию, Для |
SpecifyObjectiveGradient | Градиент для целевой функции, заданный пользователем. См. описание Для |
StepTolerance | Допуск завершения на Для |
TypicalX | Типичные The |
UseParallel | Когда |
Алгоритм, отражающий доверительную область | |
FunctionTolerance | Отклонение завершения функции от значения, a положительной скалярной величины. Значение по умолчанию является Для |
HessianFcn | Если Для |
HessianMultiplyFcn | Функция умножения Гессиана, заданная как указатель на функцию. Для крупномасштабных структурированных задач эта функция вычисляет матрицу Гессиана продукта W = hmfun(Hinfo,Y) где Первый аргумент аналогичен третьему аргументу, возвращенному целевой функцией [f,g,Hinfo] = fun(x)
Примечание Как использовать См. «Функция умножения Гессиана». См. пример Минимизации с плотными структурированными гессианскими, линейными равенствами. Для |
HessPattern | Шаблон разреженности Гессиана для конечного дифференцирования. Задайте Использование Когда структура неизвестна, не устанавливайте |
MaxPCGIter | Максимальное количество предварительно обусловленных итераций сопряженного градиента (PCG), a положительной скалярной величины. Значение по умолчанию является |
PrecondBandWidth | Верхняя шумовая полоса предкондиционера для PCG, неотрицательного целого числа. По умолчанию используется предварительное кондиционирование диагонали (верхняя полоса пропускания 0). Для некоторых проблем увеличение полосы пропускания уменьшает количество итераций PCG. Настройка |
SubproblemAlgorithm | Определяет, как вычисляется шаг итерации. Значение по умолчанию, |
TolPCG | Допуск завершения на итерации PCG, a положительной скалярной величины. Значение по умолчанию является |
Алгоритм активного набора | |
FunctionTolerance | Отклонение завершения функции от значения, a положительной скалярной величины. Значение по умолчанию является Для |
MaxSQPIter | Максимально допустимое количество итераций SQP, положительное целое число. Значение по умолчанию является |
RelLineSrchBnd | Относительная граница (действительное неотрицательное скалярное значение) на длине шага поиска линии. Полное смещение в x удовлетворяет | Δ <reservedrangesplaceholder7> (<reservedrangesplaceholder6>) | ≤ relLineSrchBnd · макс. (| x (<reservedrangesplaceholder4>) |, | typicalx (<reservedrangesplaceholder2>) |). Эта опция обеспечивает управление величиной |
RelLineSrchBndDuration | Количество итераций, для которых граница задана в |
TolConSQP | Допуск завершения внутренней итерации SQP нарушения ограничений, a положительной скалярной величины. Значение по умолчанию является |
Алгоритм внутренней точки | |
BarrierParamUpdate | Выбирает как
Этот выбор может повлиять на скорость и сходимость решателя, но эффект предсказать непросто. |
HessianApproximation | Выбирает как
Примечание Как использовать Для |
HessianFcn | Если Для |
HessianMultiplyFcn | Пользовательская функция, которая задает векторный продукт Гессиана (см. «Функция умножения Гессиана»). Передайте указатель на функцию. Примечание Как использовать Для |
HonorBounds | Значение по умолчанию Для |
InitBarrierParam | Начальное значение барьера, a положительной скалярной величины. Иногда это может помочь попробовать значение выше значения по умолчанию |
InitTrustRegionRadius | Начальный радиус доверительной области, положительной скалярной величины. При плохо масштабированных задачах может помочь выбрать значение, меньшее значения по умолчанию , где n - количество переменных. |
MaxProjCGIter | Допуск (критерий остановки) для количества проецируемых сопряженных итераций градиента; это внутренняя итерация, а не количество итераций алгоритма. Это положительное целое число имеет значение по умолчанию |
ObjectiveLimit | Допуск (критерий остановки), который является скаляром. Если значение целевой функции идет ниже |
ScaleProblem |
Для |
SubproblemAlgorithm | Определяет, как вычисляется шаг итерации. Значение по умолчанию, |
TolProjCG | A относительной погрешности (критерий остановки) для проектируемого сопряженного алгоритма градиента; это для внутренней итерации, а не для итерации алгоритма. Эта положительная скалярная величина имеет значение по умолчанию |
TolProjCGAbs | Абсолютная погрешность (критерий остановки) для проектируемого сопряженного алгоритма градиента; это для внутренней итерации, а не для итерации алгоритма. Эта положительная скалярная величина имеет значение по умолчанию |
Алгоритмы наследования SQP и SQP | |
ObjectiveLimit | Допуск (критерий остановки), который является скаляром. Если значение целевой функции идет ниже |
ScaleProblem |
Для |
Пример: options = optimoptions('fmincon','SpecifyObjectiveGradient',true,'SpecifyConstraintGradient',true)
problem
- Структура задачиСтруктура задачи, заданная как структура со следующими полями:
Имя поля | Вход |
---|---|
| Целевая функция |
| Начальная точка для x |
| Матрица для линейных ограничений неравенства |
| Вектор для линейных ограничений неравенства |
| Матрица для линейных ограничений равенства |
| Вектор для линейных ограничений равенства |
lb | Вектор нижних границ |
ub | Вектор верхних границ |
| Нелинейная функция ограничения |
| 'fmincon' |
| Опции, созданные с optimoptions |
Вы должны поставить по крайней мере objective
, x0
, solver
, и options
поля в problem
структура.
Типы данных: struct
x
- РешениеРешение, возвращенное как вектор действительных чисел или действительный массив. Размер x
совпадает с размером x0
. Как правило, x
является локальным решением проблемы, когда exitflag
положительно. Для получения информации о качестве решения см., Когда решатель преуспевает.
fval
- Значение целевой функции в решенииЗначение целевой функции в решении, возвращаемое как действительное число. Обычно fval
= fun(x)
.
exitflag
- Причины fmincon
остановленныйПричина fmincon
stop, возвращается как целое число.
Все алгоритмы: | |
| Мера оптимальности первого порядка была меньше |
| Превышено количество итераций |
| Остановлен выходной функцией или функцией построения графика. |
| Допустимая точка не найдена. |
Все алгоритмы, кроме | |
| Изменение в |
| |
| Изменение значения целевой функции было меньше |
| |
| Величина направления поиска было меньше 2 |
| Величина производной по направлению в поисковом направлении была меньше 2 |
| |
| Целевая функция при текущей итерации пошла ниже |
output
- Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенная как структура с полями:
iterations | Количество проделанных итераций |
funcCount | Количество вычислений функции |
lssteplength | Размер линии шага поиска относительно направления поиска ( |
constrviolation | Максимум ограничительных функций |
stepsize | Длина последнего перемещения в |
algorithm | Используемый алгоритм оптимизации |
cgiterations | Общее количество итераций PCG ( |
firstorderopt | Мера оптимальности первого порядка |
bestfeasible | Лучшая (самая низкая целевая функция) допустимая точка. Структура с этими полями:
Если допустимая точка не найдена, The |
message | Выходное сообщение |
lambda
- множители Лагранжа в решенииМножители Лагранжа в решении, возвращенные как структура с полями:
grad
- Градиент в решенииГрадиент в решении, возвращенный как вектор действительных чисел. grad
задает градиент fun
в точке x(:)
.
hessian
- Приблизительный ГессианАппроксимируйте Гессиана, возвращённом как действительная матрица. Для смысла hessian
, см. Гессиан Выхода.
fmincon
является основанным на градиенте методом, который предназначен для работы с задачами, где целевые и ограничительные функции являются непрерывными и имеют непрерывные первые производные.
Для 'trust-region-reflective'
алгоритм, вы должны предоставить градиент в fun
и установите 'SpecifyObjectiveGradient'
опция для true
.
The 'trust-region-reflective'
алгоритм не допускает равных верхних и нижних границ. Для примера, если lb(2)==ub(2)
, fmincon
приводит к следующей ошибке:
Equal upper and lower bounds not permitted in trust-region-reflective algorithm. Use either interior-point or SQP algorithms instead.
Существует два различных синтаксиса для прохождения Гессиана, и существуют два разных синтаксиса для прохождения HessianMultiplyFcn
функция; один для trust-region-reflective
, и другое для interior-point
. Смотрите включая Гессиан.
Для trust-region-reflective
Гессиан Лагрангиана аналогичен Гессиану целевой функции. Вы передаете этот Гессиан как третий выход целевой функции.
Для interior-point
, Гессиан Лагранжа включает множители Лагранжа и Гессианы нелинейных ограничительных функций. Вы передаете Гессиана как отдельную функцию, которая учитывает обе текущие точки x
и структуру множителя Лагранжа lambda
.
Когда задача недопустима, fmincon
пытается минимизировать максимальное значение ограничения.
fmincon
использует Гессиан как необязательный вход. Этот Гессиан является матрицей вторых производных Лагранжа (см. Уравнение 1), а именно,
(1) |
Для получения дополнительной информации о том, как поставить Гессиана в trust-region-reflective
или interior-point
алгоритмы, см. Включая Гессианов.
The active-set
и sqp
алгоритмы не принимают входа Гессиана. Они вычисляют квазиньютонское приближение к Гессиану Лагранжа.
The interior-point
алгоритм имеет несколько вариантов для 'HessianApproximation'
опция; см. «Выбор входного гессианского приближения» для fmincon внутренней точки:
'bfgs'
— fmincon
вычисляет Гессиан по плотному квазиньютоновскому приближению. Это гессианское приближение по умолчанию.
'lbfgs'
— fmincon
вычисляет Гессиан по крупномасштабному квазиньютоновскому приближению с ограниченной памятью. Используется память по умолчанию, 10 итераций.
{'lbfgs',positive integer}
— fmincon
вычисляет Гессиан по крупномасштабному квазиньютоновскому приближению с ограниченной памятью. Положительное целое число определяет, сколько итераций в прошлом должно быть запомнено.
'finite-difference'
— fmincon
вычисляет Гессианский векторный продукт по конечным различиям градиента (ов). Необходимо задать градиент целевой функции, а также градиенты нелинейных ограничений (если они существуют). Установите 'SpecifyObjectiveGradient'
опция для true
и, если применимо, 'SpecifyConstraintGradient'
опция для true
. Вы должны задать 'SubproblemAlgorithm'
на 'cg'
.
The interior-point
и trust-region-reflective
алгоритмы позволяют вам задать функцию умножения Гессиана. Эта функция дает результат векторного продукта Гессиана, не вычисляя непосредственно Гессиана. Это может сохранить память. Для получения дополнительной информации смотрите Функция умножения Гессиана.
Для помощи с выбором алгоритма смотрите fmincon Algorithms. Чтобы задать алгоритм, используйте optimoptions
для создания options
, и использовать 'Algorithm'
Пара "имя-значение".
Остальная часть этого раздела приводит краткие сводные данные или указатели на информацию о каждом алгоритме.
Этот алгоритм описан в fmincon Interior Point Algorithm. Более подробное описание приведено в [1], [41] и [9].
fmincon
'sqp'
и 'sqp-legacy'
алгоритмы аналогичны 'active-set'
алгоритм, описанный в Active-Set Optimization. Алгоритм fmincon SQP описывает основные различия. Таким образом, эти различия:
fmincon
использует метод последовательного квадратичного программирования (SQP). В этом методе функция решает квадратичную подпрограмму программирования (QP) при каждой итерации. fmincon
обновляет оценку Гессиана Лагранжа при каждой итерации с помощью формулы BFGS (см. fminunc
и ссылки [7] и [8]).
fmincon
выполняет поиск по линии с помощью функции merit, подобной функции, предложенной в [6], [7] и [8]. Подпрограмма QP решается с помощью стратегии активного набора, подобной описанной в [5]. fmincon Active Set Algorithm подробно описывает этот алгоритм.
Для получения дополнительной информации об используемом алгоритме см. также раздел «Реализация SQP».
The 'trust-region-reflective'
алгоритм является подпространственным методом доверительной области и основан на интерьерно-отражающем методе Ньютона, описанном в [3] и [4]. Каждая итерация включает приблизительное решение большой линейной системы с использованием метода предварительно обусловленных сопряженных градиентов (PCG). См. Описание доверительной области и предварительно обусловленного сопряженного градиентного метода в fmincon Trust Region Reflective Algorithm.
Задача Optimize Live Editor обеспечивает визуальный интерфейс для fmincon
.
[1] Byrd, R. H., J. C. Gilbert, and J. Nocedal. Метод доверительной области на основе методов внутренней точки для нелинейного программирования. Математическое программирование, том 89, № 1, 2000, с. 149-185.
[2] Byrd, R. H., Mary E. Hribar, and Jorge Nocedal. Алгоритм внутренней точки для крупномасштабного нелинейного программирования. SIAM Journal по оптимизации, том 9, № 4, 1999, с. 877-900.
[3] Коулман, Т. Ф. и Я. Ли. Подход внутренней доверительной области для нелинейной минимизации с учетом границ. SIAM Journal on Optimization, Vol. 6, 1996, pp. 418-445.
[4] Коулман, Т. Ф. и Я. Ли. «О сходимости отражающих методов Ньютона для крупномасштабной нелинейной минимизации, подверженной границам». Математическое программирование, том 67, номер 2, 1994, стр. 189-224.
[5] Гилл, П. Е., У. Мюррей и М. Х. Райт. Практическая оптимизация, Лондон, Академическая пресса, 1981.
[6] Хан, С. П. «Глобально сходимый метод нелинейного программирования». Journal of Optimization Theory and Applications, Vol. 22, 1977, pp. 297.
[7] Пауэлл, М. Дж. Д. «Быстрый алгоритм для нелинейных вычислений оптимизации с ограничениями». Численный анализ, ред. Г. А. Ватсон, Лекционные заметки по математике, Springer-Verlag, том 630, 1978.
[8] Пауэлл, М. Дж. Д. «Сходимость методов переменной метрики для нелинейных вычислений оптимизации с ограничениями». Нелинейное программирование 3 (О. Л. Мангасарян, Р. Р. Meyer, and S. M. Robinson, eds.), Academic Press, 1978.
[9] Вальс, Р. А., Дж. Л. Моралес, Дж. Нокедал и Д. Орбан. Внутренний алгоритм нелинейной оптимизации, который объединяет линии шагов области поиска и доверия. Математическое программирование, том 107, № 3, 2006, стр. 391-408.
Указания и ограничения по применению:
fmincon
поддерживает генерацию кода, используя codegen
(MATLAB Coder) или MATLAB Coder™ app. для генерации кода необходимо иметь лицензию MATLAB Coder.
Целевой компьютер должно поддерживать стандартные расчеты с плавающей точностью. Вы не можете сгенерировать код для расчетов с одной точностью или с фиксированной точкой.
Цели генерации кода не используют те же библиотеки математических ядер, что и решатели MATLAB. Поэтому решения генерации кода могут варьироваться от решений решателя, особенно для плохо обусловленных задач.
Весь код для генерации должен быть кодом MATLAB. В частности, вы не можете использовать пользовательскую функцию black-box в качестве целевой функции для fmincon
. Можно использовать coder.ceval
для вычисления пользовательской функции, закодированной на C или C++. Однако пользовательская функция должна вызываться в функции MATLAB.
fmincon
не поддерживает problem
аргумент для генерации кода.
[x,fval] = fmincon(problem) % Not supported
Необходимо задать целевую функцию и любую нелинейную функцию ограничения с помощью указателей на функцию, а не строк или имен символов.
x = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@nonlcon) % Supported % Not supported: fmincon('fun',...) or fmincon("fun",...)
Все fmincon
входные матрицы, такие как A
, Aeq
, lb
, и ub
должно быть полным, а не разреженным. Вы можете преобразовать разреженные матрицы в полные с помощью full
функция.
The lb
и ub
аргументы должны иметь то же количество записей, что и x0
аргумент или должен быть пустым []
.
Для расширенной оптимизации кода с использованием встраиваемых процессоров вам также нужен Embedded Coder® лицензия.
Вы должны включить опции для fmincon
и указать их используя optimoptions
. Опции должны включать Algorithm
опция, установить на 'sqp'
или 'sqp-legacy'
.
options = optimoptions('fmincon','Algorithm','sqp'); [x,fval,exitflag] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
Генерация кода поддерживает следующие опции:
Algorithm
- Должен быть 'sqp'
или 'sqp-legacy'
ConstraintTolerance
FiniteDifferenceStepSize
FiniteDifferenceType
MaxFunctionEvaluations
MaxIterations
ObjectiveLimit
OptimalityTolerance
ScaleProblem
SpecifyConstraintGradient
SpecifyObjectiveGradient
StepTolerance
TypicalX
Сгенерированный код имеет ограниченную проверку ошибок на опции. Рекомендуемый способ обновления опции - использовать optimoptions
, а не запись через точку.
opts = optimoptions('fmincon','Algorithm','sqp'); opts = optimoptions(opts,'MaxIterations',1e4); % Recommended opts.MaxIterations = 1e4; % Not recommended
Не загружайте опции из файла. Это может привести к сбою генерации кода. Вместо этого создайте опции в коде.
Обычно, если вы задаете опцию, которая не поддерживается, опция молчаливо игнорируется во время генерации кода. Однако, если вы задаете функцию построения графика или выходную функцию при помощи записи через точку, генерация кода может вызвать ошибку. Для надежности задайте только поддерживаемые опции.
Поскольку выходные функции и функции построения графика не поддерживаются, fmincon
не возвращает выходной флаг -1.
Код, сгенерированный из fmincon
не содержит bestfeasible
поле в возвращенном output
структура.
Для получения примера смотрите Генерацию кода для основ оптимизации.
Чтобы запустить параллельно, установите 'UseParallel'
опция для true
.
опции = optimoptions (
'solvername
',' UseParallel ', true)
Для получения дополнительной информации смотрите Использование параллельных вычислений в Optimization Toolbox.
fminbnd
| fminsearch
| fminunc
| Оптимизировать | optimoptions
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.