Квадратичное программирование
Решатель для квадратичных целевых функций с линейными ограничениями.
quadprog находит минимум для проблемы заданным
H, A и Aeq являются матрицами, и f, b, beq, lb, ub, и x является векторами.
Можно передать f, lb и ub как векторы или матрицы; смотрите Матричные аргументы.
quadprog применяется только к основанному на решателе подходу. Для обсуждения двух подходов оптимизации смотрите, Сначала Выбирают Problem-Based or Solver-Based Approach.
решает предыдущую задачу, удовлетворяющую дополнительным ограничениям x = quadprog(H,f,A,b,Aeq,beq,lb,ub)lb ≤ x ≤ ub. Входные параметры lb и ub векторы, удваивается, и ограничения содержат для каждого x компонент. Если никакие равенства не существуют, устанавливают Aeq = [] и beq = [].
Если заданные входные границы для проблемы противоречивы, выход x x0 и выход fval [].
quadprog компоненты сброса x0 это нарушает границы lb ≤ x ≤ ub к внутренней части поля, заданного границами. quadprog не изменяет компоненты, которые уважают границы.
возвращает минимум для x = quadprog(problem)problem, где problem структура, описанная в Описании. Создайте problem путем экспорта проблемы с помощью приложения Оптимизации; смотрите Экспорт Вашей работы. В качестве альтернативы создайте problem структура от OptimizationProblem объект при помощи prob2struct.
Найдите минимум
удовлетворяющее ограничениям
В quadprog синтаксис, эта проблема состоит в том, чтобы минимизировать
,
где
подвергните линейным ограничениям.
Чтобы решить эту задачу, сначала введите содействующие матрицы.
H = [1 -1; -1 2]; f = [-2; -6]; A = [1 1; -1 2; 2 1]; b = [2; 2; 3];
Вызовите quadprog.
[x,fval,exitflag,output,lambda] = ...
quadprog(H,f,A,b);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,fval,exitflag
x = 2×1
0.6667
1.3333
fval = -8.2222
exitflag = 1
Выходной флаг 1 означает, что результатом является локальный минимум. Поскольку H положительная определенная матрица, эта проблема выпукла, таким образом, минимум является глобальным минимумом.
Подтвердите тот H положителен определенный путем проверки его собственных значений.
eig(H)
ans = 2×1
0.3820
2.6180
Найдите минимум
подвергните ограничению
В quadprog синтаксис, эта проблема состоит в том, чтобы минимизировать
,
где
подвергните линейному ограничению.
Чтобы решить эту задачу, сначала введите содействующие матрицы.
H = [1 -1; -1 2]; f = [-2; -6]; Aeq = [1 1]; beq = 0;
Вызовите quadprog, ввод [] для входных параметров A и b.
[x,fval,exitflag,output,lambda] = ...
quadprog(H,f,[],[],Aeq,beq);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,fval,exitflag
x = 2×1
-0.8000
0.8000
fval = -1.6000
exitflag = 1
Выходной флаг 1 означает, что результатом является локальный минимум. Поскольку H положительная определенная матрица, эта проблема выпукла, таким образом, минимум является глобальным минимумом.
Подтвердите тот H положителен определенный путем проверки его собственных значений.
eig(H)
ans = 2×1
0.3820
2.6180
Найдите x, который минимизирует квадратичное выражение
где
, ,
удовлетворяющее ограничениям
, .
Чтобы решить эту задачу, сначала введите коэффициенты.
H = [1,-1,1
-1,2,-2
1,-2,4];
f = [2;-3;1];
lb = zeros(3,1);
ub = ones(size(lb));
Aeq = ones(1,3);
beq = 1/2;Вызовите quadprog, ввод [] для входных параметров A и b.
x = quadprog(H,f,[],[],Aeq,beq,lb,ub)
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 = 3×1
0.0000
0.5000
0.0000
Установите опции контролировать прогресс quadprog.
options = optimoptions('quadprog','Display','iter');
Опишите задачу с квадратичные объективные и линейные ограничения неравенства.
H = [1 -1; -1 2]; f = [-2; -6]; A = [1 1; -1 2; 2 1]; b = [2; 2; 3];
Помочь записать quadprog вызов функции, набор ненужные входные параметры к [].
Aeq = []; beq = []; lb = []; ub = []; x0 = [];
Вызовите quadprog решать задачу.
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
Iter Fval Primal Infeas Dual Infeas Complementarity
0 -8.884885e+00 3.214286e+00 1.071429e-01 1.000000e+00
1 -8.331868e+00 1.321041e-01 4.403472e-03 1.910489e-01
2 -8.212804e+00 1.676295e-03 5.587652e-05 1.009601e-02
3 -8.222204e+00 8.381476e-07 2.793826e-08 1.809485e-05
4 -8.222222e+00 3.064216e-14 1.352696e-12 7.525735e-13
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
0.6667
1.3333
prob2structСоздайте problem структура с помощью Основанного на проблеме Рабочего процесса Оптимизации. Создайте задачу оптимизации, эквивалентную Квадратичной Программе с Линейными Ограничениями.
x = optimvar('x',2); objec = x(1)^2/2 + x(2)^2 - x(1)*x(2) - 2*x(1) - 6*x(2); prob = optimproblem('Objective',objec); prob.Constraints.cons1 = sum(x) <= 2; prob.Constraints.cons2 = -x(1) + 2*x(2) <= 2; prob.Constraints.cons3 = 2*x(1) + x(2) <= 3;
Преобразуйте prob к problem структура.
problem = prob2struct(prob);
Решите задачу с помощью quadprog.
[x,fval] = quadprog(problem)
Warning: Your Hessian is not symmetric. Resetting H=(H+H')/2.
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
0.6667
1.3333
fval = -8.2222
quadprog Значение целевой функцииРешите квадратичную программу и возвратите и решение и значение целевой функции.
H = [1,-1,1
-1,2,-2
1,-2,4];
f = [-7;-12;-15];
A = [1,1,1];
b = 3;
[x,fval] = quadprog(H,f,A,b)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 = 3×1
-3.5714
2.9286
3.6429
fval = -47.1786
Проверяйте, что возвращенное значение целевой функции совпадает со значением, вычисленным из quadprog определение целевой функции.
fval2 = 1/2*x'*H*x + f'*x
fval2 = -47.1786
quadprog Процесс оптимизацииВидеть процесс оптимизации для quadprog, установите опции показывать итеративное отображение и возвращать четыре выходных параметра. Проблема состоит в том, чтобы минимизировать
при ограничениях
,
где
, .
Введите проблемные коэффициенты.
H = [2 1 -1
1 3 1/2
-1 1/2 5];
f = [4;-7;12];
lb = zeros(3,1);
ub = ones(3,1);Установите опции отображать итеративный прогресс решателя.
options = optimoptions('quadprog','Display','iter');
Вызовите quadprog с четырьмя выходными параметрами.
[x fval,exitflag,output] = quadprog(H,f,[],[],[],[],lb,ub,[],options)
Iter Fval Primal Infeas Dual Infeas Complementarity
0 2.691769e+01 1.582123e+00 1.712849e+01 1.680447e+00
1 -3.889430e+00 0.000000e+00 8.564246e-03 9.971731e-01
2 -5.451769e+00 0.000000e+00 4.282123e-06 2.710131e-02
3 -5.499997e+00 0.000000e+00 1.221903e-10 6.939689e-07
4 -5.500000e+00 0.000000e+00 5.842173e-14 3.469847e-10
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 = 3×1
0.0000
1.0000
0.0000
fval = -5.5000
exitflag = 1
output = struct with fields:
message: '...'
algorithm: 'interior-point-convex'
firstorderopt: 1.5921e-09
constrviolation: 0
iterations: 4
linearsolver: 'dense'
cgiterations: []
quadprog Множители ЛагранжаРешите задачу квадратичного программирования и возвратите множители Лагранжа.
H = [1,-1,1
-1,2,-2
1,-2,4];
f = [-7;-12;-15];
A = [1,1,1];
b = 3;
lb = zeros(3,1);
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb);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.
Исследуйте структуру множителя Лагранжа lambda.
disp(lambda)
ineqlin: 12.0000
eqlin: [0x1 double]
lower: [3x1 double]
upper: [3x1 double]
Линейное ограничение неравенства имеет связанный множитель Лагранжа 12.
Отобразите множители, сопоставленные с нижней границей.
disp(lambda.lower)
5.0000
0.0000
0.0000
Только первый компонент lambda.lower имеет ненулевой множитель. Это обычно означает что только первый компонент x в нижней границе нуля. Подтвердите путем отображения компонентов x.
disp(x)
0.0000
1.5000
1.5000
H — Квадратичный объективный терминКвадратичный объективный термин в виде симметричной действительной матрицы. H представляет квадратичное в выражении 1/2*x'*H*x + f'*x. Если H не симметрично, quadprog выдает предупреждение и использует симметрированную версию (H + H')/2 вместо этого.
Если квадратичный матричный H разреженно, затем по умолчанию, 'interior-point-convex' алгоритм использует немного отличающийся алгоритм чем тогда, когда H является плотным. Обычно разреженный алгоритм быстрее на больших, разреженных проблемах, и плотный алгоритм быстрее на плотных или небольших проблемах. Для получения дополнительной информации смотрите LinearSolver описание опции и выпуклый внутренней точкой quadprog Алгоритм.
Пример: [2,1;1,3]
Типы данных: double
f — Линейный объективный терминЛинейный объективный термин в виде вектора действительных чисел. f представляет линейный член в выражении 1/2*x'*H*x + f'*x.
Пример: [1;3;2]
Типы данных: double
A — Линейные ограничения неравенстваЛинейные ограничения неравенства в виде действительной матрицы. A M- N матрица, где M количество неравенств и N количество переменных (число элементов в x0). Для больших проблем передайте A как разреженная матрица.
A кодирует M линейные неравенства
A*x <= b,
где x вектор-столбец N переменные x(:), и b вектор-столбец с M элементы.
Например, чтобы задать
x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
введите эти ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать что x сумма компонентов к 1 или меньше, используйте A = ones(1,N) и b = 1.
Типы данных: double
b — Линейные ограничения неравенстваЛинейные ограничения неравенства в виде вектора действительных чисел. b M- вектор элемента связан с A матрица. Если вы передаете b как вектор-строка, решатели внутренне преобразуют b к вектор-столбцу b(:). Для больших проблем передайте b как разреженный вектор.
b кодирует M линейные неравенства
A*x <= b,
где x вектор-столбец N переменные x(:), и A матрица размера M- N.
Например, чтобы задать
x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
введите эти ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать что x сумма компонентов к 1 или меньше, используйте A = ones(1,N) и b = 1.
Типы данных: double
Aeq — Линейные ограничения равенстваЛинейные ограничения равенства в виде действительной матрицы. Aeq Me- N матрица, где Me количество равенств и N количество переменных (число элементов в x0). Для больших проблем передайте Aeq как разреженная матрица.
Aeq кодирует Me линейные равенства
Aeq*x = beq,
где x вектор-столбец N переменные x(:), и beq вектор-столбец с Me элементы.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
введите эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что x сумма компонентов к 1, используйте Aeq = ones(1,N) и beq = 1.
Типы данных: double
beq — Линейные ограничения равенстваЛинейные ограничения равенства в виде вектора действительных чисел. beq Me- вектор элемента связан с Aeq матрица. Если вы передаете beq как вектор-строка, решатели внутренне преобразуют beq к вектор-столбцу beq(:). Для больших проблем передайте beq как разреженный вектор.
beq кодирует Me линейные равенства
Aeq*x = beq,
где x вектор-столбец N переменные x(:), и Aeq матрица размера Me- N.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
введите эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что x сумма компонентов к 1, используйте Aeq = ones(1,N) и beq = 1.
Типы данных: double
lb — Нижние границыНижние границы в виде вектора действительных чисел или действительного массива. Если число элементов в x0 равно числу элементов в lb, затем lb задает это
x(i) >= lb(i) для всех i.
Если numel(lb) < numel(x0), затем lb задает это
x(i) >= lb(i) для 1 <= i <= numel(lb).
Если существует меньше элементов в lb чем в x0, решатели выдают предупреждение.
Пример: Чтобы указать, что все x компоненты положительны, используйте lb = zeros(size(x0)).
Типы данных: double
ub — Верхние границыВерхние границы в виде вектора действительных чисел или действительного массива. Если число элементов в x0 равно числу элементов в ub, затем ub задает это
x(i) <= ub(i) для всех i.
Если numel(ub) < numel(x0), затем ub задает это
x(i) <= ub(i) для 1 <= i <= numel(ub).
Если существует меньше элементов в ub чем в x0, решатели выдают предупреждение.
Пример: Чтобы указать, что все x компоненты меньше 1, используйте ub = ones(size(x0)).
Типы данных: double
x0 — Начальная точкаНачальная точка в виде вектора действительных чисел. Длина x0 количество строк или столбцы H.
x0 применяется к 'trust-region-reflective' алгоритм, когда проблема только связала ограничения. x0 также применяется к 'active-set' алгоритм.
x0 обязательный аргумент для 'active-set' алгоритм.
Если вы не задаете x0, quadprog наборы все компоненты x0 к точке во внутренней части поля, заданного границами. quadprog игнорирует x0 для 'interior-point-convex' алгоритм и для 'trust-region-reflective' алгоритм с ограничениями равенства.
Пример: [1;2;1]
Типы данных: double
options — Опции оптимизацииoptimoptions | структура, такая как optimset возвращаетсяОпции оптимизации в виде выхода optimoptions или структура, такая как optimset возвращается.
Некоторые опции отсутствуют в optimoptions отображение. Эти опции появляются курсивом в следующей таблице. Для получения дополнительной информации, Опции вида на море.
Все алгоритмы
Algorithm | Выберите алгоритм:
|
| Диагностика | Отобразите диагностическую информацию о функции, которая будет минимизирована или решена. Выбором является |
Display | Level of display (см. Итеративное Отображение):
|
MaxIterations | Максимальное количество итераций позволено; положительное целое число.
Для |
OptimalityTolerance | Допуск завершения на оптимальности первого порядка; положительная скалярная величина.
Смотрите допуски и критерий остановки. Для |
StepTolerance | Допуск завершения на
Для |
'trust-region-reflective' Алгоритм только
FunctionTolerance | Допуск завершения на значении функции; положительная скалярная величина. Значение по умолчанию зависит от проблемного типа: связано ограниченные проблемы используют Для |
| Функция умножения Гессиана в виде указателя на функцию. Для крупномасштабных структурированных проблем эта функция вычисляет матричное произведение Гессиана W = hmfun(Hinfo,Y) где Смотрите Квадратичную Минимизацию с Плотным, Структурированным Гессианом для примера, который использует эту опцию. Для |
| MaxPCGIter | Максимальное количество PCG (предобусловленный метод сопряженных градиентов) итерации; положительная скалярная величина. Значением по умолчанию является |
| PrecondBandWidth | Верхняя пропускная способность предварительного формирователя для PCG; неотрицательное целое число. По умолчанию, |
SubproblemAlgorithm | Определяет, как шаг итерации вычисляется. Значение по умолчанию, |
| TolPCG | Допуск завершения на итерации PCG; положительная скалярная величина. Значением по умолчанию является |
TypicalX | Типичный |
'interior-point-convex' Алгоритм только
ConstraintTolerance | Допуск на нарушении ограничений; положительная скалярная величина. Значением по умолчанию является Для |
LinearSolver | Тип внутреннего линейного решателя в алгоритме:
|
'active-set' Алгоритм только
ConstraintTolerance | Допуск на нарушении ограничений; положительная скалярная величина. Значением по умолчанию является Для |
ObjectiveLimit | Допуск (останавливающий критерий), который является скаляром. Если значение целевой функции понижается |
problem — Структура задачиСтруктура задачи в виде структуры с этими полями:
| Симметрическая матрица в 1/2*x'*H*x |
| Вектор в линейном члене f'*x |
| Матрица в линейных ограничениях неравенства Aineq*x ≤ bineq |
| Вектор в линейных ограничениях неравенства Aineq*x ≤ bineq |
| Матрица в линейных ограничениях равенства Aeq*x = beq |
| Вектор в линейных ограничениях равенства Aeq*x = beq |
lb | Вектор нижних границ |
ub | Вектор верхних границ |
| Начальная точка для x |
| 'quadprog' |
| Опции, созданные с помощью optimoptions или приложение Оптимизации |
Обязательными полями является HF, solver, и options. При решении, quadprog игнорирует любые поля в problem кроме перечисленных.
Типы данных: struct
x РешениеРешение, возвращенное как вектор действительных чисел. x вектор, который минимизирует 1/2*x'*H*x + f'*x подвергните всем границам и линейным ограничениям. x может быть локальный минимум для невыпуклых проблем. Для выпуклых проблем, x глобальный минимум. Для получения дополнительной информации смотрите Локальный по сравнению с Глобальными оптимумами.
fval — Значение целевой функции в решенииЗначение целевой функции в решении, возвращенном как действительный скаляр. fval значение 1/2*x'*H*x + f'*x в решении x.
exitflag — Обоснуйте quadprog остановленныйОбоснуйте quadprog остановленный, возвращенный как целое число, описанное в этой таблице.
Все алгоритмы | |
1 | Функция сходилась к решению |
0 | Количество итераций превысило |
-2 | Проблема неосуществима. Или, для |
-3 | Проблема неограниченна. |
| |
2 | Размер шага был меньшим, чем |
-6 | Невыпуклая проблема обнаруживается. |
-8 | Не мог вычислить направление шага. |
| |
4 | Локальный минимум найден; минимум не уникален. |
3 | Изменение в значении целевой функции было меньшим, чем |
-4 | Текущее поисковое направление не было направлением спуска. Никакие дальнейшие успехи не могли быть сделаны. |
| |
-6 | Невыпуклая проблема обнаруживается; проекция |
Иногда, 'active-set' алгоритм останавливается с выходным флагом 0 когда проблема, на самом деле, неограниченна. Установление более высокого предела итерации также приводит к выходному флагу 0.
output — Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с этими полями:
| Количество проделанных итераций |
| Алгоритм оптимизации используется |
| Общее количество итераций PCG ( |
constrviolation | Максимум ограничительных функций |
firstorderopt | Мера оптимальности первого порядка |
linearsolver | Тип внутреннего линейного решателя, |
message | Выходное сообщение |
lambda — Множители Лагранжа в решенииМножители Лагранжа в решении, возвращенном как структура с этими полями:
| Нижние границы |
| Верхние границы |
| Линейные неравенства |
| Линейные равенства |
Для получения дополнительной информации смотрите Структуры множителя Лагранжа.
'interior-point-convex''interior-point-convex' алгоритм пытается следовать за путем, который является строго в ограничениях. Это использует предварительно решить модуль, чтобы удалить сокращение и упростить проблему путем решения для компонентов, которые являются прямыми.
Алгоритм имеет различные реализации для разреженной матрицы Гессиана H и для плотной матрицы. Обычно разреженная реализация быстрее на больших, разреженных проблемах, и плотная реализация быстрее на плотных или небольших проблемах. Для получения дополнительной информации см. выпуклый внутренней точкой quadprog Алгоритм.
'trust-region-reflective''trust-region-reflective' алгоритм является методом доверительной области подпространства на основе внутреннего отражающего метода Ньютона, описанного в [1]. Каждая итерация включает приближенное решение большой линейной системы с помощью метода предобусловленных методов сопряженных градиентов (PCG). Для получения дополнительной информации см. "доверительную область, отражающую" quadprog Алгоритм.
'active-set''active-set' алгоритм является методом проекции, похожим на тот, описанный в [2]. Алгоритм не является крупномасштабным; смотрите Крупномасштабный по сравнению с Алгоритмами Средней шкалы. Для получения дополнительной информации смотрите активный набор quadprog Алгоритм.
Можно использовать приложение Оптимизации в квадратичном программировании. Введите optimtool в командной строке MATLAB®, и выбирают quadprog - Quadratic programming решатель. Для получения дополнительной информации см. Приложение Оптимизации.
Можно решить задачи квадратичного программирования с помощью Основанного на проблеме Setup Оптимизации. Для примеров смотрите Квадратичное программирование.
[1] Коулман, T. F. и И. Ли. “Отражающий Метод Ньютона для Минимизации Квадратичной Функции Согласно Границам на Некоторых Переменных”. SIAM Journal на Оптимизации. Издание 6, Номер 4, 1996, стр 1040–1058.
[2] Жабры, P. E. В. Мюррей и М. Х. Райт. Практическая оптимизация. Лондон: Academic Press, 1981.
[3] Гулд, N. и П. Л. Тойнт. “Предварительно обрабатывая для квадратичного программирования”. Математическое программирование. Серии B, Издание 100, 2004, стр 95–132.
Указания и ограничения по применению:
quadprog генерация кода поддержек, использующая любого codegen функционируйте или приложение MATLAB Coder™. У вас должна быть лицензия MATLAB Coder, чтобы сгенерировать код.
Целевой компьютер должен поддержать стандартные расчеты с плавающей точкой с двойной точностью. Вы не можете сгенерировать код для расчетов или фиксированной точки с одинарной точностью.
quadprog не поддерживает problem аргумент для генерации кода.
[x,fval] = quadprog(problem) % Not supportedВесь quadprog введите матрицы, такие как A, Aeq, lb, и ub должно быть полным, не разреженным. Можно преобразовать разреженные матрицы в полный при помощи full функция.
lb и ub аргументы должны иметь то же количество записей как количество столбцов в H или должен быть пустой [].
Для усовершенствованной оптимизации кода, включающей встраиваемые процессоры, вам также нужна лицензия Embedded Coder®.
Необходимо включать опции для quadprog и задайте их использующий optimoptions. Опции должны включать Algorithm опция, набор к 'active-set'.
options = optimoptions('quadprog','Algorithm','active-set'); [x,fval,exitflag] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options);
Генерация кода поддерживает эти опции:
Algorithm — Должен быть 'active-set'
ConstraintTolerance
MaxIterations
ObjectiveLimit
OptimalityTolerance
StepTolerance
Сгенерированный код ограничил проверку ошибок на опции. Рекомендуемый способ обновить опцию состоит в том, чтобы использовать optimoptions, не запись через точку.
opts = optimoptions('quadprog','Algorithm','active-set'); opts = optimoptions(opts,'MaxIterations',1e4); % Recommended opts.MaxIterations = 1e4; % Not recommended
Не загружайте опции из файла. Выполнение так может заставить генерацию кода перестать работать. Вместо этого создайте опции в своем коде.
Если вы задаете опцию, которая не поддержана, опция обычно игнорируется во время генерации кода. Для надежных результатов задайте только поддерживаемые опции.
linprog | lsqlin | optimoptions | prob2struct
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.