В этом примере показано, как получить большую часть одной и той же информации, используя либо подход, основанный на проблемах, либо подход, основанный на решателях. Сначала создайте проблему и решите ее с помощью подхода, основанного на проблеме.
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 не может.