Darwin  1.10(beta)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Static Public Attributes | List of all members
drwnLogBarrierQPSolver Class Reference
Inheritance diagram for drwnLogBarrierQPSolver:
drwnQPSolver

Public Member Functions

 drwnLogBarrierQPSolver ()
 default constructor
 
 drwnLogBarrierQPSolver (const MatrixXd &P, const VectorXd &q, double r=0.0)
 construct an unconstrained QP
 
virtual bool findFeasibleStart ()
 finds a feasible starting point (or returns false if infeasible)
 
virtual void initialize (const VectorXd &x)
 initialize to feasible point
 
virtual double solve ()
 solve the QP and return the objective value
 
- Public Member Functions inherited from drwnQPSolver
 drwnQPSolver ()
 default constructor
 
 drwnQPSolver (const MatrixXd &P, const VectorXd &q, double r=0.0)
 construct an unconstrained QP
 
void setObjective (const MatrixXd &P, const VectorXd &q, double r=0.0)
 set the objective function for the QP (dimensions must agree)
 
void setEqConstraints (const MatrixXd &A, const VectorXd &b)
 set the linear equality constraints for the QP (dimensions must agree)
 
void setIneqConstraints (const MatrixXd &G, const VectorXd &h)
 set the linear inequality constraints for the QP (dimensions must agree)
 
void setBounds (const VectorXd &lb, const VectorXd &ub)
 set the upper and lower bounds for each variable, i.e., box constraints
 
void clearEqConstraints ()
 clear the linear equality constraints
 
void clearIneqConstraints ()
 clear the linear inequality constraints
 
void clearBounds ()
 clear the upper and lower bounds on each variable
 
double objective () const
 return the current value of the objective (this is the solution if the solve() function was previously executed and the problem has not changed)
 
double objective (const VectorXd &x) const
 return the objective value for a given feasible point
 
VectorXd solution () const
 return the current estimate of the solution
 
int size () const
 return the number of dimensions of the state space
 
double operator[] (unsigned i) const
 access the i-th dimension of the current solution
 

Static Public Attributes

static double t0 = 5.0
 
static double mu = 20.0
 
- Static Public Attributes inherited from drwnQPSolver
static double alpha = 0.3
 line search stopping criterion in (0, 1/2)
 
static double beta = 0.5
 line search backtracking parameter in (0, 1)
 

Additional Inherited Members

- Protected Member Functions inherited from drwnQPSolver
VectorXd gradient () const
 
VectorXd gradient (const VectorXd &x) const
 
bool isFeasiblePoint (const VectorXd &x) const
 
double solveOnlyBounds ()
 
double solveSingleEquality ()
 
double solveSimplex ()
 
double solveNoBounds ()
 
double solveGeneral ()
 
double lineSearchNoBounds (const VectorXd &x, const VectorXd &dx, const VectorXd &nu, const VectorXd &dnu) const
 
double lineSearchGeneral (const VectorXd &x, const VectorXd &dx, const VectorXd &nu, const VectorXd &dnu) const
 
void solveKKTSystem (const MatrixXd &Hx, const MatrixXd &Hy, const MatrixXd &A, const VectorXd &c, const VectorXd &b, VectorXd &x, VectorXd &y) const
 
void solveKKTSystem (const MatrixXd &Hx, const MatrixXd &A, const VectorXd &c, const VectorXd &b, VectorXd &x, VectorXd &y) const
 
- Protected Attributes inherited from drwnQPSolver
MatrixXd _mP
 positive definite quadratic term in the objective function
 
VectorXd _q
 linear term in the objective function
 
double _r
 constant term in the objective function
 
MatrixXd _mA
 linear equality constraint matrix
 
VectorXd _b
 linear equality constraint vector
 
MatrixXd _mG
 linear inequality constraint matrix
 
MatrixXd _h
 linear inequality constraint vector
 
VectorXd _l
 variable lower bounds (box constraint)
 
VectorXd _u
 variable upper bounds (box constraint)
 
VectorXd _x
 current estimate of solution
 

Detailed Description

Solves (small scale) quadratic programs by adding a log-barrier penalty

\[ \phi(x) = \sum_k \log(h_k - g^T_k x) + \sum_i \log(x_i - l_i) + \sum_i \log(u_i - x_i) \]

and iteratively solving

\[ \begin{array}{ll} \textrm{minimize (over $x$)} & \frac{1}{2} x^T P x + q^T x + r - \frac{1}{t} \phi(x) \\ \textrm{subject to} & Ax = b \end{array} \]

for increasing values of t.


The documentation for this class was generated from the following files: