Преобразуйте задачу оптимизации или проблему уравнения к форме решателя
Использование prob2struct преобразовывать задачу оптимизации или проблему уравнения к форме решателя.
Совет
Для полного рабочего процесса смотрите Основанный на проблеме Рабочий процесс Оптимизации или Основанный на проблеме Рабочий процесс для Решения уравнений.
, для любых входных параметров, задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, для нелинейной задачи оптимизации, problem = prob2struct(___,Name,Value)problem = prob2struct(prob,'ObjectiveFunctionName','objfun1') задает это prob2struct создает файл с именем целевой функции objfun1.m в текущей папке.
Преобразуйте объект задачи оптимизации в структуру задачи.
Введите основную проблему MILP от Смешано-целочисленных Линейных Основ Программирования: основанный на проблеме.
ingots = optimvar('ingots',4,1,'Type','integer','LowerBound',0,'UpperBound',1); alloys = optimvar('alloys',4,1,'LowerBound',0); weightIngots = [5,3,4,6]; costIngots = weightIngots.*[350,330,310,280]; costAlloys = [500,450,400,100]; cost = costIngots*ingots + costAlloys*alloys; steelprob = optimproblem; steelprob.Objective = cost; totalweight = weightIngots*ingots + sum(alloys); carbonIngots = [5,4,5,3]/100; molybIngots = [3,3,4,4,]/100; carbonAlloys = [8,7,6,3]/100; molybAlloys = [6,7,8,9]/100; totalCarbon = (weightIngots.*carbonIngots)*ingots + carbonAlloys*alloys; totalMolyb = (weightIngots.*molybIngots)*ingots + molybAlloys*alloys; steelprob.Constraints.conswt = totalweight == 25; steelprob.Constraints.conscarb = totalCarbon == 1.25; steelprob.Constraints.consmolyb = totalMolyb == 1.25;
Преобразуйте проблему в intlinprog структура задачи.
problem = prob2struct(steelprob);
Исследуйте получившуюся линейную матрицу ограничения равенства и вектор.
Aeq = problem.Aeq
Aeq = (1,1) 1.0000 (2,1) 0.0800 (3,1) 0.0600 (1,2) 1.0000 (2,2) 0.0700 (3,2) 0.0700 (1,3) 1.0000 (2,3) 0.0600 (3,3) 0.0800 (1,4) 1.0000 (2,4) 0.0300 (3,4) 0.0900 (1,5) 5.0000 (2,5) 0.2500 (3,5) 0.1500 (1,6) 3.0000 (2,6) 0.1200 (3,6) 0.0900 (1,7) 4.0000 (2,7) 0.2000 (3,7) 0.1600 (1,8) 6.0000 (2,8) 0.1800 (3,8) 0.2400
beq = problem.beq
beq = 3×1
25.0000
1.2500
1.2500
Исследуйте границы.
problem.lb
ans = 8×1
0
0
0
0
0
0
0
0
problem.ub
ans = 8×1
Inf
Inf
Inf
Inf
1
1
1
1
Решите задачу путем вызова intlinprog.
x = intlinprog(problem)
LP: Optimal objective value is 8125.600000.
Cut Generation: Applied 3 mir cuts.
Lower bound is 8495.000000.
Relative gap is 0.00%.
Optimal solution found.
Intlinprog stopped at the root node because the objective value is within a gap
tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default
value). The intcon variables are integer within tolerance,
options.IntegerTolerance = 1e-05 (the default value).
x = 8×1
7.2500
0
0.2500
3.5000
1.0000
1.0000
0
1.0000
Создайте нелинейную проблему в основанной на проблеме среде.
x = optimvar('x',2); fun = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2; prob = optimproblem('Objective',fun); mycon = dot(x,x) <= 4; prob.Constraints.mycon = mycon; x0.x = [-1;1.5];
Преобразуйте prob к структуре задачи оптимизации. Назовите сгенерированный файл целевой функции 'rosenbrock' и ограничительный файл функции 'circle2'.
problem = prob2struct(prob,x0,'ObjectiveFunctionName','rosenbrock',... 'ConstraintFunctionName','circle2');
prob2struct создает нелинейную цель и ограничительные файлы функции в текущей папке. Чтобы создать эти файлы в другой папке, используйте 'FileLocation' пара "имя-значение".
Решите задачу.
[x,fval] = fmincon(problem)
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 = 2×1
1.0000
1.0000
fval = 4.6187e-11
prob — Задача оптимизации или проблема уравненияOptimizationProblem возразите | EquationProblem объектЗадача оптимизации или проблема уравнения в виде OptimizationProblem возразите или EquationProblem объект. Создайте задачу оптимизации при помощи optimproblem; создайте проблему уравнения при помощи eqnproblem.
Предупреждение
Основанный на проблеме подход не поддерживает комплексные числа в целевой функции, нелинейных равенствах и нелинейных неравенствах. Если при вычислении функции встретится комплексное число, даже как промежуточное значение, конечный результат может оказаться неправильным.
Пример: prob = optimproblem; prob.Objective = obj; prob.Constraints.cons1 = cons1;
Пример: prob = eqnproblem; prob.Equations = eqs;
x0 — Начальная точкаНачальная точка в виде структуры с именами полей равняется именам переменных в prob.
Для некоторых решателей Global Optimization Toolbox, x0 может быть массив структур, представляющий несколько начальных точек. Эти решатели:
ga (Global Optimization Toolbox) и particleswarm (Global Optimization Toolbox). Эти решатели принимают несколько начальных точек как члены начальной генеральной совокупности.
surrogateopt (Global Optimization Toolbox). Этот решатель признает, что несколько начальных букв указывают, чтобы помочь создавать начальный суррогат.
Для примера с помощью x0 с именованными индексными переменными смотрите, Создают Начальную Точку для Оптимизации с Именованными Индексными переменными.
Пример: если prob имеет переменные под названием x и y: x0.x = [3,2,17]; x0.y = [pi/3,2*pi/3].
Типы данных: struct
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
problem = prob2struct(prob,'FileLocation','C:\Documents\myproblem')ConstraintDerivative — Индикация, чтобы использовать автоматическое дифференцирование для ограничительных функций'auto' (значение по умолчанию) | 'auto-forward' | 'auto-reverse' | 'finite-differences'Индикация, чтобы использовать автоматическое дифференцирование (AD) для нелинейного ограничения функционирует в виде разделенной запятой пары, состоящей из 'ConstraintDerivative' и 'auto' (используйте AD если возможный), 'auto-forward' (используйте прямой AD если возможный), 'auto-reverse' (используйте противоположный AD если возможный), или 'finite-differences' (не используйте AD). Выбор включая auto заставьте получившийся ограничительный файл функции использовать информацию о градиенте при решении задачи при условии, что ограничительные функции поддерживаются, как описано в Поддерживаемых Операциях для Переменных и выражений Оптимизации. Для примера смотрите Производные Предоставления в Основанном на проблеме Рабочем процессе
Примечание
Использовать автоматические производные в проблеме, преобразованной prob2struct, передайте опции, задающие эти производные.
options = optimoptions('fmincon','SpecifyObjectiveGradient',true,... 'SpecifyConstraintGradient',true); problem.options = options;
Пример: 'finite-differences'
Типы данных: char | string
ConstraintFunctionName — Имя нелинейного ограничительного файла функции'generatedConstraints' (значение по умолчанию) | имя файлаИмя нелинейного ограничительного файла функции, созданного prob2struct для задачи оптимизации в виде разделенной запятой пары, состоящей из 'ConstraintFunctionName' и имя файла. Этот аргумент применяется fmincon или fminunc проблемы; смотрите problem. Не включайте расширение файла .m в имени файла. prob2struct добавляет расширение файла, когда оно создает файл.
Если вы не задаете ConstraintFunctionNameто prob2struct перезаписи 'generatedConstraints.m'. Если вы не задаете FileLocationто prob2struct создает файл в текущей папке.
Возвращенный problem структура относится к этому файлу функции.
Пример: "mynlcons"
Типы данных: char | string
EquationFunctionName — Имя файла функции уравнения'generatedEquation' (значение по умолчанию) | имя файлаИмя нелинейного файла функции уравнения, созданного prob2struct для проблемы уравнения в виде разделенной запятой пары, состоящей из 'EquationFunctionName' и имя файла. Этот аргумент применяется fsolve, fzero, или lsqnonlin уравнения; смотрите problem. Не включайте расширение файла .m в имени файла. prob2struct добавляет расширение файла, когда оно создает файл.
Если вы не задаете EquationFunctionNameто prob2struct перезаписи 'generatedEquation.m'. Если вы не задаете FileLocationто prob2struct создает файл в текущей папке.
Возвращенный problem структура относится к этому файлу функции.
Пример: "myequation"
Типы данных: char | string
FileLocation — Местоположение для сгенерированных файловМестоположение для сгенерированных файлов (целевая функция, ограничительная функция и другие подфайлы функции) в виде разделенной запятой пары, состоящей из 'FileLocation' и путь к перезаписываемой папке. Все сгенерированные файлы хранятся в этой папке; несколько папок не поддерживаются.
Пример: 'C:Documents\MATLAB\myproject'
Типы данных: char | string
ObjectiveDerivative — Индикация, чтобы использовать автоматическое дифференцирование для целевой функции'auto' (значение по умолчанию) | 'auto-forward' | 'auto-reverse' | 'finite-differences'Индикация, чтобы использовать автоматическое дифференцирование (AD) для нелинейной целевой функции в виде разделенной запятой пары, состоящей из 'ObjectiveDerivative' и 'auto' (используйте AD если возможный), 'auto-forward' (используйте прямой AD если возможный), 'auto-reverse' (используйте противоположный AD если возможный), или 'finite-differences' (не используйте AD). Выбор включая auto заставьте получившийся файл целевой функции включать производную информацию при решении задачи при условии, что целевая функция поддерживается, как описано в Поддерживаемых Операциях для Переменных и выражений Оптимизации. Для примера смотрите Производные Предоставления в Основанном на проблеме Рабочем процессе.
Примечание
Использовать автоматические производные в проблеме, преобразованной prob2struct, передайте опции, задающие эти производные.
options = optimoptions('fmincon','SpecifyObjectiveGradient',true,... 'SpecifyConstraintGradient',true); problem.options = options;
Пример: 'finite-differences'
Типы данных: char | string
ObjectiveFunctionName — Имя файла целевой функции'generatedObjective' (значение по умолчанию) | имя файлаИмя файла целевой функции, созданного prob2struct для задачи оптимизации в виде разделенной запятой пары, состоящей из 'ObjectiveFunctionName' и имя файла. Этот аргумент применяется fmincon или fminunc проблемы; смотрите problem. Не включайте расширение файла .m в имени файла. prob2struct добавляет расширение файла, когда оно создает файл.
Если вы не задаете ObjectiveFunctionNameто prob2struct перезаписи 'generatedObjective.m'. Если вы не задаете FileLocationто prob2struct создает файл в текущей папке.
Возвращенный problem структура относится к этому файлу функции.
Пример: "myobj"
Типы данных: char | string
Solver — Решатель оптимизации'intlinprog' | 'linprog' | 'lsqlin' | 'lsqcurvefit' | 'lsqnonlin' | 'lsqnonneg' | 'quadprog' | 'fminunc' | 'fmincon' | 'fzero' | 'fsolve' | 'coneprog' | 'ga' | 'patternsearch' | 'particleswarm' | 'surrogateopt' | 'simulannealbnd'Решатель оптимизации в виде имени перечисленного решателя. Для задач оптимизации эта таблица содержит доступные решатели для каждого проблемного типа, включая решатели от Global Optimization Toolbox. Детали для проблем уравнения появляются ниже деталей решателя оптимизации.
Для преобразования нелинейных проблем с целочисленным ограничительным использованием prob2struct, получившаяся структура задачи может зависеть от выбранного решателя. Если у вас нет лицензии Global Optimization Toolbox, необходимо задать решатель. Смотрите Целочисленные Ограничения в Нелинейной Основанной на проблеме Оптимизации.
Решатель по умолчанию для каждого типа задачи оптимизации перечислен здесь.
| Проблемный тип | Решатель по умолчанию |
|---|---|
| Линейное программирование (LP) | linprog |
| Смешано-целочисленное линейное программирование (MILP) | intlinprog |
| Квадратичное программирование (QP) | quadprog |
| Коническое программирование второго порядка (SOCP) | coneprog |
| Линейный метод наименьших квадратов | lsqlin |
| Нелинейный метод наименьших квадратов | lsqnonlin |
| Нелинейное программирование (NLP) |
|
| Смешано-целочисленное нелинейное программирование (MINLP) | ga (Global Optimization Toolbox) |
В этой таблице,
означает, что решатель доступен для проблемного типа, x означает, что решатель не доступен.
Проблемный тип | LP | MILP | QP | SOCP | Линейный метод наименьших квадратов | Нелинейный метод наименьших квадратов | NLP | MINLP |
|---|---|---|---|---|---|---|---|---|
| Решатель | ||||||||
linprog |
| x | x | x | x | x | x | x |
intlinprog |
|
| x | x | x | x | x | x |
quadprog |
| x |
|
|
| x | x | x |
coneprog |
| x | x |
| x | x | x | x |
lsqlin | x | x | x | x |
| x | x | x |
lsqnonneg | x | x | x | x |
| x | x | x |
lsqnonlin | x | x | x | x |
|
| x | x |
fminunc |
| x |
| x |
|
|
| x |
fmincon |
| x |
|
|
|
|
| x |
patternsearch (Global Optimization Toolbox) |
| x |
|
|
|
|
| x |
ga (Global Optimization Toolbox) |
|
|
|
|
|
|
|
|
particleswarm (Global Optimization Toolbox) |
| x |
| x |
|
|
| x |
simulannealbnd (Global Optimization Toolbox) |
| x |
| x |
|
|
| x |
surrogateopt (Global Optimization Toolbox) |
|
|
|
|
|
|
|
|
Примечание
Если вы выбираете lsqcurvefit как решатель для задачи наименьших квадратов, solve использование lsqnonlin. lsqcurvefit и lsqnonlin решатели идентичны для solve.
Внимание
Для проблем максимизации (prob.ObjectiveSense "max" или "maximize"), не задавайте решатель наименьших квадратов (один с именем, начинающим lsq). Если вы делаете, solve выдает ошибку, потому что эти решатели не могут максимизировать.
Для решения уравнения эта таблица содержит доступные решатели для каждого проблемного типа. В таблице,
* указывает на решатель по умолчанию для проблемного типа.
Y указывает на доступный решатель.
N указывает на недоступный решатель.
Поддерживаемые решатели для уравнений
| Тип уравнения | lsqlin | lsqnonneg | fzero | fsolve | lsqnonlin |
|---|---|---|---|---|---|
| Линейный | * | N | Y (только скаляр) | Y | Y |
| Линейный плюс границы | * | Y | N | N | Y |
| Нелинейный скаляр | N | N | * | Y | Y |
| Нелинейная система | N | N | N | * | Y |
| Нелинейная система плюс границы | N | N | N | N | * |
Пример: 'intlinprog'
Типы данных: char | string
problem — Структура задачиfmincon структура задачи | fminunc структура задачи | fsolve структура задачи | intlinprog структура задачи | linprog структура задачи | lsqlin структура задачи | lsqnonlin структура задачи | quadprog структура задачи | ga структура задачиСтруктура задачи, возвращенная как fmincon
problem структура, fminunc
problem структура, fsolve
problem структура, intlinprog
problem структура, linprog
problem структура, lsqlin
problem структура, lsqnonlin
problem структура, quadprog
problem структура или ga
problem (Global Optimization Toolbox) структура.
Следующая таблица дает получившийся проблемный тип по умолчанию для задач оптимизации. Можно также получить проблемные типы не по умолчанию. Например, для нелинейных связано ограниченных проблем, можно выбрать большинство решателей Global Optimization Toolbox при помощи solver аргумент.
Объективные и типы ограничения оптимизации (линейные ограничения включают границы), | Получившийся проблемный тип |
|---|---|
Линейная цель и ограничительные функции. По крайней мере одна переменная задачи имеет | intlinprog |
Линейная цель и ограничительные функции. Никакая переменная задачи не имеет | linprog |
Линейные ограничительные функции. Целевая функция является константой плюс сумма квадратов линейных выражений. | lsqlin |
Связанные ограничения. Целевая функция является константой плюс сумма квадратов общих нелинейных выражений. | lsqnonlin |
Линейные ограничительные функции. Общая квадратичная целевая функция. | quadprog |
Общая нелинейная целевая функция. Никакие ограничения. | fminunc |
Общая нелинейная целевая функция, и существует по крайней мере одно ограничение любого типа. Или, существует по крайней мере одна общая нелинейная ограничительная функция. | fmincon |
Нелинейная функция целевой функции или ограничения, и существует по крайней мере одна целочисленная переменная. | ga |
Следующая таблица дает получившийся проблемный тип для задач решающего уравнения.
Типы уравнения | Получившийся проблемный тип |
|---|---|
Линейная система с или без границ | lsqlin |
Скалярное (одно) нелинейное уравнение | fzero |
Нелинейная система без ограничений | fsolve |
Нелинейная система с границами | lsqnonlin |
Примечание
Для нелинейных проблем, prob2struct создает файлы функции для объективных и нелинейных ограничительных функций. Для цели и ограничительных функций, которые вызывают функции поддержки, prob2struct также создает файлы функции поддержки и хранит их в FileLocation папка. Чтобы получить доступ к дополнительным параметрам в сгенерированных функциях, смотрите, Получают Сгенерированные Функциональные Детали.
Для линейных и квадратичных задач оптимизации структура задачи включает дополнительное поле, f0, это представляет аддитивную постоянную для целевой функции. Если вы решаете структуру задачи с помощью заданного решателя, возвращенное значение целевой функции не включает f0 значение. Если вы решаете prob использование solve функция, возвращенное значение целевой функции включает f0 значение.
Если ObjectiveSense prob 'max' или 'maximize', затем problem использует отрицание целевой функции в prob потому что решатели минимизируют. Чтобы максимизировать, они минимизируют отрицание исходной целевой функции. В этом случае оптимальное значение функции, о котором сообщают, от решателя является отрицанием значения в исходной проблеме. Смотрите Максимизацию Цели. Вы не можете использовать lsqlin для проблемы максимизации.
Если вы вызываете prob2struct многократно в том же MATLAB® сеанс для нелинейных проблем, используйте ObjectiveFunctionName или EquationFunctionName аргумент и, при необходимости ConstraintFunctionName аргумент. Определение уникальных имен гарантирует, что получившиеся структуры задачи относятся к правильной цели и ограничительным функциям. В противном случае, последующие вызовы prob2struct может заставить сгенерированные нелинейные файлы функции перезаписывать существующие файлы.
Чтобы постараться не вызывать бесконечную рекурсию, не вызывать prob2struct в цели или ограничительной функции.
При вызове prob2struct параллельно для нелинейных проблем, гарантируйте, что получившаяся цель и ограничительные файлы функции имеют уникальные имена. Выполнение так избегает каждой передачи цикла, пишущего в тот же файл или файлы.
Базисом для структуры задачи является неявное упорядоченное расположение всех переменных задачи в один вектор. Порядок переменных задачи совпадает с порядком Variables свойство в prob. Смотрите OptimizationProblem. Можно также найти порядок при помощи varindex.
Например, предположите, что переменные задачи находятся в этом порядке:
x — 3 2 4 массивами
y — 3 2 массив
В этом случае неявный переменный порядок эквивалентен, если переменной задачи является vars = [x(:);y(:)].
Первые 24 элемента vars эквивалентны x(:), и следующие шесть элементов эквивалентны y(:), для в общей сложности 30 элементов. Нижние и верхние границы соответствуют этому переменному упорядоченному расположению, и каждая линейная матрица ограничений имеет 30 столбцов.
Для проблем с общей нелинейной целью или ограничительными функциями, prob2struct создает файлы функции в текущей папке или в папке, заданной FileLocation. Возвращенный problem структура относится к этим файлам функции.
Автоматическое дифференцирование (AD) применяется solve и prob2struct функции при следующих условиях:
Цель и ограничительные функции поддерживаются, как описано в Поддерживаемых Операциях для Переменных и выражений Оптимизации. Они не требуют использования fcn2optimexpr функция.
Решатель, вызванный solve fmincon, fminunc, fsolve, или lsqnonlin.
Для задач оптимизации, 'ObjectiveDerivative' и 'ConstraintDerivative' аргументы пары "имя-значение" для solve или prob2struct установлены в 'auto' (значение по умолчанию), 'auto-forward', или 'auto-reverse'.
Для проблем уравнения, 'EquationDerivative' опция установлена в 'auto' (значение по умолчанию), 'auto-forward', или 'auto-reverse'.
| Когда AD применяется | Все ограничительные поддерживаемые функции | Одно или несколько ограничений, не поддержанных |
|---|---|---|
| Поддерживаемая целевая функция | AD используется для цели и ограничений | AD, используемый для цели только |
| Целевая функция, не поддерживаемая | AD, используемый для ограничений только | AD, не используемый |
Когда этим условиям не удовлетворяют, solve оценочные градиенты конечными разностями, и prob2struct не создает градиенты в его сгенерированных файлах функции.
Решатели выбирают следующий тип AD по умолчанию:
Для общей нелинейной целевой функции, fmincon значения по умолчанию, чтобы инвертировать AD для целевой функции. fmincon значения по умолчанию, чтобы инвертировать AD для нелинейного ограничения функционируют, когда количество нелинейных ограничений меньше количества переменных. В противном случае, fmincon значения по умолчанию, чтобы передать AD для нелинейной ограничительной функции.
Для общей нелинейной целевой функции, fminunc значения по умолчанию, чтобы инвертировать AD.
Для целевой функции наименьших квадратов, fmincon и fminunc значение по умолчанию, чтобы передать AD для целевой функции. Для определения основанной на проблеме целевой функции наименьших квадратов смотрите Целевую функцию Записи для Основанных на проблеме Наименьших квадратов.
lsqnonlin значения по умолчанию, чтобы передать AD, когда число элементов в объективном векторе больше или равно количеству переменных. В противном случае, lsqnonlin значения по умолчанию, чтобы инвертировать AD.
fsolve значения по умолчанию, чтобы передать AD, когда количество уравнений больше или равно количеству переменных. В противном случае, fsolve значения по умолчанию, чтобы инвертировать AD.
Примечание
Использовать автоматические производные в проблеме, преобразованной prob2struct, передайте опции, задающие эти производные.
options = optimoptions('fmincon','SpecifyObjectiveGradient',true,... 'SpecifyConstraintGradient',true); problem.options = options;
В настоящее время AD работает только на первые производные; это не применяется к вторым или производным высшего порядка. Так, например, если вы хотите использовать аналитический Гессиан, чтобы ускорить вашу оптимизацию, вы не можете использовать solve непосредственно, и должен вместо этого использовать подход, описанный в Производных Предоставления в Основанном на проблеме Рабочем процессе.
Options Значение имени было удаленоОшибки, запускающиеся в R2021a
Options пара "имя-значение" была удалена. Чтобы изменить опции, отредактируйте получившийся problem структура. Например,
problem.options = optimoptions('fmincon',... 'Display','iter','MaxFunctionEvaluations',5e4); % Or, to set just one option: problem.options.MaxFunctionEvaluations = 5e4;
Options пара "имя-значение" была удалена, потому что она может вызвать неоднозначность в присутствии автоматического дифференцирования.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.