|
virtual void | clear ()=0 |
| clear internal caches More...
|
|
virtual void | enforceNewStructure (bool new_structure=true)=0 |
|
virtual Eigen::Ref< Eigen::VectorXd > | getDualSolution ()=0 |
|
virtual Ptr | getInstance () const =0 |
| Return a newly created instance of the current solver. More...
|
|
virtual Eigen::Ref< Eigen::VectorXd > | getPrimalSolution ()=0 |
|
virtual bool | initialize () |
| Initialize the qp solver. More...
|
|
virtual bool | isSupportingSimpleBounds ()=0 |
|
virtual SolverStatus | solve (SparseMatrix &P, Eigen::Ref< Eigen::VectorXd > q, SparseMatrix &A, Eigen::Ref< Eigen::VectorXd > lbA, Eigen::Ref< Eigen::VectorXd > ubA, Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub, bool new_structure=true, bool zero_x_warmstart=false)=0 |
| Solve full QP. More...
|
|
virtual SolverStatus | solve (SparseMatrix &P, Eigen::Ref< Eigen::VectorXd > q, SparseMatrix &A, Eigen::Ref< Eigen::VectorXd > lbA, Eigen::Ref< Eigen::VectorXd > ubA, bool new_structure=true, bool zero_x_warmstart=false, bool update_P=true, bool update_q=true, bool update_A=true, bool update_bounds=true)=0 |
| Solve QP without simple bounds. More...
|
|
virtual void | updateDualSolutionWarmStart (const Eigen::Ref< const Eigen::VectorXd > &y)=0 |
|
virtual void | updatePrimalSolutionWarmStart (const Eigen::Ref< const Eigen::VectorXd > &x)=0 |
|
virtual | ~QpSolverInterface ()=default |
| Virtual destructor. More...
|
|
Generic interface for QP solver implementations.
This class can be used to generically define solver back-ends for optimization problems with quadratic objectives and linear constraints.
Since we are currently working with OSQP, the interface is primarly defined to perfectly match the OSQP interface. This means we require SparseMatrix indices vectors to be defined in long long format. Furthermore, the problem definition is as follows
The gradient of the Lagrangian is defined as follows: grad L(x, lambda, mu) = grad f(x) + A^T lambda + mu
Some QP solvers do not allow the special treatment of bounds. The particular solver implementation creates a new matrix Atile = [A; I] for that purpose. However, in order to avoid this step, isSupportingSimpleBounds() can be checked a-priori.
Note, bounds can be set to corbo_DBL_INF and -corbo_DBL_INF respectively.
- See also
- OptimizationProblemInterface
- Author
- Christoph Rösmann (chris.nosp@m.toph.nosp@m..roes.nosp@m.mann.nosp@m.@tu-d.nosp@m.ortm.nosp@m.und.d.nosp@m.e)
Definition at line 73 of file qp_solver_interface.h.