19 #include "Eigen/Cholesky" 25 using namespace Eigen;
124 drwnQPSolver(
const MatrixXd& P,
const VectorXd& q,
double r = 0.0);
129 void setObjective(
const MatrixXd& P,
const VectorXd& q,
double r = 0.0);
131 void setEqConstraints(
const MatrixXd& A,
const VectorXd& b);
133 void setIneqConstraints(
const MatrixXd& G,
const VectorXd& h);
135 void setBounds(
const VectorXd& lb,
const VectorXd& ub);
137 void clearEqConstraints();
139 void clearIneqConstraints();
144 virtual void initialize(
const VectorXd& x);
148 virtual double solve();
152 double objective()
const;
154 double objective(
const VectorXd& x)
const;
160 inline int size()
const {
return _x.rows(); }
166 inline VectorXd gradient()
const {
return _mP * _x + _q; }
167 inline VectorXd gradient(
const VectorXd& x)
const {
return _mP * x + _q; }
170 bool isFeasiblePoint(
const VectorXd& x)
const;
173 double solveOnlyBounds();
174 double solveSingleEquality();
175 double solveSimplex();
176 double solveNoBounds();
177 double solveGeneral();
180 double lineSearchNoBounds(
const VectorXd& x,
const VectorXd& dx,
181 const VectorXd& nu,
const VectorXd& dnu)
const;
182 double lineSearchGeneral(
const VectorXd& x,
const VectorXd& dx,
183 const VectorXd& nu,
const VectorXd& dnu)
const;
188 void solveKKTSystem(
const MatrixXd& Hx,
const MatrixXd& Hy,
189 const MatrixXd& A,
const VectorXd& c,
const VectorXd& b,
190 VectorXd& x, VectorXd& y)
const;
194 void solveKKTSystem(
const MatrixXd& Hx,
const MatrixXd& A,
195 const VectorXd& c,
const VectorXd& b,
196 VectorXd& x, VectorXd& y)
const;
231 virtual bool findFeasibleStart();
234 virtual void initialize(
const VectorXd& x);
237 virtual double solve();
double _r
constant term in the objective function
Definition: drwnQPSolver.h:108
static double alpha
line search stopping criterion in (0, 1/2)
Definition: drwnQPSolver.h:101
VectorXd _u
variable upper bounds (box constraint)
Definition: drwnQPSolver.h:116
VectorXd _l
variable lower bounds (box constraint)
Definition: drwnQPSolver.h:115
VectorXd _q
linear term in the objective function
Definition: drwnQPSolver.h:107
MatrixXd _mG
linear inequality constraint matrix
Definition: drwnQPSolver.h:113
VectorXd _x
current estimate of solution
Definition: drwnQPSolver.h:118
MatrixXd _h
linear inequality constraint vector
Definition: drwnQPSolver.h:114
VectorXd _b
linear equality constraint vector
Definition: drwnQPSolver.h:112
static double beta
line search backtracking parameter in (0, 1)
Definition: drwnQPSolver.h:102
MatrixXd _mP
positive definite quadratic term in the objective function
Definition: drwnQPSolver.h:106
Definition: drwnQPSolver.h:217
int size() const
return the number of dimensions of the state space
Definition: drwnQPSolver.h:160
VectorXd solution() const
return the current estimate of the solution
Definition: drwnQPSolver.h:156
MatrixXd _mA
linear equality constraint matrix
Definition: drwnQPSolver.h:111
double operator[](unsigned i) const
access the i-th dimension of the current solution
Definition: drwnQPSolver.h:162
Quadratic program solver.
Definition: drwnQPSolver.h:98