This class implements a Box QP solver based on a Projected Newton method. More...
#include <box-qp.hpp>
Public Types | |
| typedef BoxQPSolutionTpl< Scalar > | BoxQPSolution |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBase::MatrixXs | MatrixXs |
| typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
| BoxQPTpl (const std::size_t nx, const std::size_t maxiter=100, const Scalar th_acceptstep=Scalar(0.1), const Scalar th_grad=Scalar(1e-9), const Scalar reg=Scalar(1e-9)) | |
| Initialize the Projected-Newton QP for bound constraints. | |
| ~BoxQPTpl ()=default | |
| Destroy the Projected-Newton QP solver. | |
| template<typename NewScalar> | |
| BoxQPTpl< NewScalar > | cast () const |
| Cast the BoxQP solver to a different scalar type. | |
| const std::vector< Scalar > & | get_alphas () const |
| Return the stack of step lengths using by the line-search procedure. | |
| std::size_t | get_maxiter () const |
| Return the maximum allowed number of iterations. | |
| std::size_t | get_nx () const |
| Return the decision vector dimension. | |
| Scalar | get_reg () const |
| Return the regularization value. | |
| const BoxQPSolution & | get_solution () const |
| Return the stored solution. | |
| Scalar | get_th_acceptstep () const |
| Return the acceptance step threshold. | |
| Scalar | get_th_grad () const |
| Return the gradient tolerance threshold. | |
| void | set_alphas (const std::vector< Scalar > &alphas) |
| Modify the stack of step lengths using by the line-search procedure. | |
| void | set_maxiter (const std::size_t maxiter) |
| Modify the maximum allowed number of iterations. | |
| void | set_nx (const std::size_t nx) |
| Modify the decision vector dimension. | |
| void | set_reg (const Scalar reg) |
| Modify the regularization value. | |
| void | set_th_acceptstep (const Scalar th_acceptstep) |
| Modify the acceptance step threshold. | |
| void | set_th_grad (const Scalar th_grad) |
| Modify the gradient tolerance threshold. | |
| const BoxQPSolution & | solve (const MatrixXs &H, const VectorXs &q, const VectorXs &lb, const VectorXs &ub, const VectorXs &xinit) |
| Compute the solution of bound-constrained QP based on Newton projection. | |
Public Attributes | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
This class implements a Box QP solver based on a Projected Newton method.
We consider a box QP problem of the form:

where 




The algorithm procees by iteratively identifying the active bounds, and then performing a projected Newton step in the free sub-space. The projection uses the Hessian of the free sub-space and is computed efficiently using a Cholesky decomposition. It uses a line search procedure with polynomial step length values in a backtracking fashion. The steps are checked using an Armijo condition together L2-norm gradient.
For more details about this solver, we encourage you to read the following article:
Definition at line 103 of file box-qp.hpp.
| typedef BoxQPSolutionTpl<Scalar> BoxQPSolution |
Definition at line 108 of file box-qp.hpp.
| typedef MathBaseTpl<Scalar> MathBase |
Definition at line 109 of file box-qp.hpp.
| typedef MathBase::VectorXs VectorXs |
Definition at line 110 of file box-qp.hpp.
| typedef MathBase::MatrixXs MatrixXs |
Definition at line 111 of file box-qp.hpp.
| BoxQPTpl | ( | const std::size_t | nx, |
| const std::size_t | maxiter = 100, | ||
| const Scalar | th_acceptstep = Scalar(0.1), | ||
| const Scalar | th_grad = Scalar(1e-9), | ||
| const Scalar | reg = Scalar(1e-9) ) |
Initialize the Projected-Newton QP for bound constraints.
| [in] | nx | Dimension of the decision vector |
| [in] | maxiter | Maximum number of allowed iterations (default 100) |
| [in] | th_acceptstep | Acceptance step threshold (default 0.1) |
| [in] | th_grad | Gradient tolerance threshold (default 1e-9) |
| [in] | reg | Regularization value (default 1e-9) |
| const BoxQPSolution & solve | ( | const MatrixXs & | H, |
| const VectorXs & | q, | ||
| const VectorXs & | lb, | ||
| const VectorXs & | ub, | ||
| const VectorXs & | xinit ) |
Compute the solution of bound-constrained QP based on Newton projection.
| [in] | H | Hessian (dimension nx * nx) |
| [in] | q | Gradient (dimension nx) |
| [in] | lb | Lower bound (dimension nx) |
| [in] | ub | Upper bound (dimension nx) |
| [in] | xinit | Initial guess (dimension nx) |
Cast the BoxQP solver to a different scalar type.
It is useful for operations requiring different precision or scalar types.
| NewScalar | The new scalar type to cast to. |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar |
Definition at line 107 of file box-qp.hpp.