В этом примере показано, как получить большую часть той же информации с помощью или подхода, основанного на проблеме или основанного на решателе подхода. Сначала создайте проблему и решите ее с помощью основанного на проблеме подхода.
Solving problem using fmincon.
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.
Затем преобразуйте проблему в основанную на решателе форму с помощью prob2struct
. Иметь fmincon
использование решателя автоматические градиенты в проблеме, набор SpecifyObjectiveGradient
опция к true
.
Решите задачу с помощью fmincon
.
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.
Преобразовывать fmincon
решение формы структуры, возвращенной solve
, создайте соответствующие структуры с помощью varindex
.
y
индексируйте тот varindex
использование является линейным индексом. Измените переменную sol.y
иметь размер x0.y
.
Проверяйте, что две структуры решения идентичны.
Причиной, что два подхода не абсолютно эквивалентны, является тот fmincon
может возвратить больше аргументов, таких как множители Лагранжа, тогда как solve
не может.