Sequential Quadratic Programming
The native SQP solver repeatedly linearizes the constraints and solves a quadratic approximation of the nonlinear program.
#include <laopt/solvers/sqp_solver.hpp>
#include <laopt/solvers/piqp_interface.hpp>
using QPSolver = laopt::PIQPSolver<double>;
laopt::SQPSolver<Problem, QPSolver> solver(problem);
solver.settings().verbose = true;
solver.settings().hessian_approximation = laopt::hessian_approximation_t::EXACT;
auto info = solver.solve();
The solver supports exact Lagrangian Hessians and a Gauss-Newton approximation. Available globalization strategies are full steps, an L1 merit-function line search, and a filter line search.
The underlying QP solver is available through solver.qp_solver() for backend-specific inspection and common QP settings.
See SQP Settings and Status for the common configuration and result fields.