Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Friends | List of all members
SQProblemSchur Class Reference

Implements the online active set strategy for QPs with varying, sparse matrices. More...

#include <SQProblemSchur.hpp>

Inheritance diagram for SQProblemSchur:
Inheritance graph
[legend]

Public Member Functions

int_t getNumFactorizations () const
 
virtual SQProblemSchuroperator= (const SQProblemSchur &rhs)
 
virtual returnValue reset ()
 
returnValue resetSchurComplement (BooleanType allowInertiaCorrection)
 
 SQProblemSchur ()
 
 SQProblemSchur (int_t _nV, int_t _nC, HessianType _hessianType=HST_UNKNOWN, int_t maxSchurUpdates=75)
 
 SQProblemSchur (const SQProblemSchur &rhs)
 
virtual ~SQProblemSchur ()
 
- Public Member Functions inherited from SQProblem
returnValue hotstart (const real_t *const H_new, const real_t *const g_new, const real_t *const A_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (SymmetricMatrix *H_new, const real_t *const g_new, Matrix *A_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const H_new, const real_t *const g_new, const real_t *const A_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (SymmetricMatrix *H_new, const real_t *const g_new, Matrix *A_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
virtual SQProblemoperator= (const SQProblem &rhs)
 
SQProblemoperator= (const SQProblem &rhs)
 
 SQProblem ()
 
 SQProblem ()
 
 SQProblem (int_t _nV, int_t _nC, HessianType _hessianType=HST_UNKNOWN)
 
 SQProblem (int _nV, int _nC, HessianType _hessianType=HST_UNKNOWN)
 
 SQProblem (const SQProblem &rhs)
 
 SQProblem (const SQProblem &rhs)
 
virtual ~SQProblem ()
 
virtual ~SQProblem ()
 
- Public Member Functions inherited from QProblem
returnValue getA (real_t *const _A) const
 
returnValue getA (int number, real_t *const row) const
 
returnValue getA (real_t *const _A) const
 
returnValue getA (int number, real_t *const row) const
 
returnValue getConstraints (Constraints *const _constraints) const
 
returnValue getConstraints (Constraints *const _constraints) const
 
returnValue getConstraints (Constraints &_constraints) const
 
returnValue getConstraints (Constraints &_constraints) const
 
returnValue getDualSolution (real_t *const yOpt) const
 
returnValue getDualSolution (real_t *const yOpt) const
 
virtual returnValue getDualSolution (real_t *const yOpt) const
 
virtual returnValue getDualSolution (real_t *const yOpt) const
 
returnValue getFreeVariablesFlags (BooleanType *varIsFree)
 
returnValue getLBA (real_t *const _lbA) const
 
returnValue getLBA (int number, real_t &value) const
 
returnValue getLBA (real_t *const _lbA) const
 
returnValue getLBA (int number, real_t &value) const
 
int getNAC ()
 
int getNAC ()
 
int_t getNAC () const
 
int getNAC () const
 
int getNC () const
 
int getNC () const
 
int_t getNC () const
 
int getNC () const
 
int getNEC () const
 
int getNEC () const
 
int_t getNEC () const
 
int getNEC () const
 
int getNIAC ()
 
int getNIAC ()
 
int_t getNIAC () const
 
int getNIAC () const
 
int getNZ ()
 
int getNZ ()
 
virtual int_t getNZ () const
 
virtual int getNZ () const
 
returnValue getUBA (real_t *const _ubA) const
 
returnValue getUBA (int number, real_t &value) const
 
returnValue getUBA (real_t *const _ubA) const
 
returnValue getUBA (int number, real_t &value) const
 
virtual returnValue getWorkingSet (real_t *workingSet)
 
virtual returnValue getWorkingSetBounds (real_t *workingSetB)
 
virtual returnValue getWorkingSetConstraints (real_t *workingSetC)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, Matrix *_A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, real_t *const cputime)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, Matrix *_A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0, const real_t *const _R=0)
 
returnValue init (const real_t *const _H, const real_t *const _R, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, real_t *const cputime)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0, const real_t *const _R=0)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, Matrix *_A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const Constraints *const guessedConstraints=0, const char *const R_file=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
QProblemoperator= (const QProblem &rhs)
 
QProblemoperator= (const QProblem &rhs)
 
virtual QProblemoperator= (const QProblem &rhs)
 
QProblemoperator= (const QProblem &rhs)
 
virtual returnValue printProperties ()
 
virtual returnValue printProperties ()
 
 QProblem ()
 
 QProblem ()
 
 QProblem (int _nV, int _nC)
 
 QProblem (int _nV, int _nC)
 
 QProblem (const QProblem &rhs)
 
 QProblem ()
 
 QProblem ()
 
 QProblem (const QProblem &rhs)
 
 QProblem (int_t _nV, int_t _nC, HessianType _hessianType=HST_UNKNOWN)
 
 QProblem (int _nV, int _nC, HessianType _hessianType=HST_UNKNOWN)
 
 QProblem (const QProblem &rhs)
 
 QProblem (const QProblem &rhs)
 
returnValue setConstraintProduct (ConstraintProduct *const _constraintProduct)
 
returnValue setConstraintProduct (ConstraintProduct *const _constraintProduct)
 
returnValue solveCurrentEQP (const int_t n_rhs, const real_t *g_in, const real_t *lb_in, const real_t *ub_in, const real_t *lbA_in, const real_t *ubA_in, real_t *x_out, real_t *y_out)
 
returnValue solveCurrentEQP (const int n_rhs, const real_t *g_in, const real_t *lb_in, const real_t *ub_in, const real_t *lbA_in, const real_t *ubA_in, real_t *x_out, real_t *y_out)
 
returnValue writeQpDataIntoMatFile (const char *const filename) const
 
returnValue writeQpWorkspaceIntoMatFile (const char *const filename)
 
 ~QProblem ()
 
 ~QProblem ()
 
virtual ~QProblem ()
 
virtual ~QProblem ()
 
- Public Member Functions inherited from QProblemB
returnValue getBounds (Bounds *const _bounds) const
 
returnValue getBounds (Bounds *const _bounds) const
 
returnValue getBounds (Bounds &_bounds) const
 
returnValue getBounds (Bounds &_bounds) const
 
uint_t getCount () const
 
returnValue getDualSolution (real_t *const yOpt) const
 
returnValue getDualSolution (real_t *const yOpt) const
 
returnValue getG (real_t *const _g) const
 
returnValue getG (real_t *const _g) const
 
returnValue getH (real_t *const _H) const
 
returnValue getH (real_t *const _H) const
 
HessianType getHessianType () const
 
HessianType getHessianType () const
 
HessianType getHessianType () const
 
HessianType getHessianType () const
 
returnValue getLB (real_t *const _lb) const
 
returnValue getLB (int number, real_t &value) const
 
returnValue getLB (real_t *const _lb) const
 
returnValue getLB (int number, real_t &value) const
 
int getNFR ()
 
int getNFR ()
 
int_t getNFR () const
 
int getNFR () const
 
int getNFV () const
 
int getNFV () const
 
int_t getNFV () const
 
int getNFV () const
 
int getNFX ()
 
int getNFX ()
 
int_t getNFX () const
 
int getNFX () const
 
int getNV () const
 
int getNV () const
 
int_t getNV () const
 
int getNV () const
 
int getNZ ()
 
int getNZ ()
 
real_t getObjVal () const
 
real_t getObjVal (const real_t *const _x) const
 
real_t getObjVal () const
 
real_t getObjVal (const real_t *const _x) const
 
real_t getObjVal () const
 
real_t getObjVal (const real_t *const _x) const
 
real_t getObjVal () const
 
real_t getObjVal (const real_t *const _x) const
 
Options getOptions () const
 
Options getOptions () const
 
returnValue getPrimalSolution (real_t *const xOpt) const
 
returnValue getPrimalSolution (real_t *const xOpt) const
 
returnValue getPrimalSolution (real_t *const xOpt) const
 
returnValue getPrimalSolution (real_t *const xOpt) const
 
PrintLevel getPrintLevel () const
 
PrintLevel getPrintLevel () const
 
PrintLevel getPrintLevel () const
 
PrintLevel getPrintLevel () const
 
QProblemStatus getStatus () const
 
QProblemStatus getStatus () const
 
QProblemStatus getStatus () const
 
QProblemStatus getStatus () const
 
returnValue getUB (real_t *const _ub) const
 
returnValue getUB (int number, real_t &value) const
 
returnValue getUB (real_t *const _ub) const
 
returnValue getUB (int number, real_t &value) const
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, int_t &nWSR, real_t *const cputime=0, const Bounds *const guessedBounds=0)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, int &nWSR, real_t *const cputime)
 
returnValue hotstart (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds)
 
returnValue hotstart (const char *const g_file, const char *const lb_file, const char *const ub_file, int &nWSR, real_t *const cputime, const Bounds *const guessedBounds)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, real_t *const cputime)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const real_t *const _R=0)
 
returnValue init (const real_t *const _H, const real_t *const _R, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, const real_t *const yOpt=0, real_t *const cputime=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, real_t *const cputime)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const lb_file, const char *const ub_file, int &nWSR, real_t *const cputime)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const real_t *const _R=0)
 
returnValue init (SymmetricMatrix *_H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const lb_file, const char *const ub_file, int_t &nWSR, real_t *const cputime=0, const real_t *const xOpt=0, const real_t *const yOpt=0, const Bounds *const guessedBounds=0, const char *const R_file=0)
 
returnValue init (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds)
 
returnValue init (const char *const H_file, const char *const g_file, const char *const lb_file, const char *const ub_file, int &nWSR, real_t *const cputime, const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds)
 
BooleanType isInfeasible () const
 
BooleanType isInfeasible () const
 
BooleanType isInfeasible () const
 
BooleanType isInfeasible () const
 
BooleanType isInitialised () const
 
BooleanType isInitialised () const
 
BooleanType isInitialised () const
 
BooleanType isInitialised () const
 
BooleanType isSolved () const
 
BooleanType isSolved () const
 
BooleanType isSolved () const
 
BooleanType isSolved () const
 
BooleanType isUnbounded () const
 
BooleanType isUnbounded () const
 
BooleanType isUnbounded () const
 
BooleanType isUnbounded () const
 
QProblemBoperator= (const QProblemB &rhs)
 
QProblemBoperator= (const QProblemB &rhs)
 
QProblemBoperator= (const QProblemB &rhs)
 
virtual QProblemBoperator= (const QProblemB &rhs)
 
returnValue printOptions () const
 
returnValue printOptions () const
 
 QProblemB ()
 
 QProblemB ()
 
 QProblemB (int _nV)
 
 QProblemB (int _nV)
 
 QProblemB (const QProblemB &rhs)
 
 QProblemB (const QProblemB &rhs)
 
 QProblemB ()
 
 QProblemB ()
 
 QProblemB (int_t _nV, HessianType _hessianType=HST_UNKNOWN)
 
 QProblemB (int _nV, HessianType _hessianType=HST_UNKNOWN)
 
 QProblemB (const QProblemB &rhs)
 
 QProblemB (const QProblemB &rhs)
 
returnValue reset ()
 
returnValue reset ()
 
returnValue resetCounter ()
 
returnValue setHessianType (HessianType _hessianType)
 
returnValue setHessianType (HessianType _hessianType)
 
returnValue setHessianType (HessianType _hessianType)
 
returnValue setHessianType (HessianType _hessianType)
 
returnValue setOptions (const Options &_options)
 
returnValue setOptions (const Options &_options)
 
returnValue setPrintLevel (PrintLevel _printlevel)
 
returnValue setPrintLevel (PrintLevel _printlevel)
 
returnValue setPrintLevel (PrintLevel _printlevel)
 
returnValue setPrintLevel (PrintLevel _printlevel)
 
BooleanType usingRegularisation () const
 
BooleanType usingRegularisation () const
 
 ~QProblemB ()
 
 ~QProblemB ()
 
virtual ~QProblemB ()
 
virtual ~QProblemB ()
 

Protected Member Functions

virtual returnValue addBound (int_t number, SubjectToStatus B_status, BooleanType updateCholesky, BooleanType ensureLI=BT_TRUE)
 
virtual returnValue addBound_checkLI (int_t number)
 
virtual returnValue addBound_ensureLI (int_t number, SubjectToStatus B_status)
 
virtual returnValue addConstraint (int_t number, SubjectToStatus C_status, BooleanType updateCholesky, BooleanType ensureLI=BT_TRUE)
 
virtual returnValue addConstraint_checkLI (int_t number)
 
virtual returnValue addConstraint_ensureLI (int_t number, SubjectToStatus C_status)
 
virtual returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a) const
 
virtual returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a) const
 
virtual returnValue backsolveT (const real_t *const b, BooleanType transposed, real_t *const a) const
 
returnValue clear ()
 
virtual returnValue computeInitialCholesky ()
 
virtual returnValue computeProjectedCholesky ()
 
returnValue copy (const SQProblemSchur &rhs)
 
virtual returnValue determineStepDirection (const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
virtual returnValue determineStepDirection2 (const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
virtual returnValue removeBound (int_t number, BooleanType updateCholesky, BooleanType allowFlipping=BT_FALSE, BooleanType ensureNZC=BT_FALSE)
 
virtual returnValue removeConstraint (int_t number, BooleanType updateCholesky, BooleanType allowFlipping=BT_FALSE, BooleanType ensureNZC=BT_FALSE)
 
virtual returnValue setupAuxiliaryQP (SymmetricMatrix *H_new, Matrix *A_new, const real_t *lb_new, const real_t *ub_new, const real_t *lbA_new, const real_t *ubA_new)
 
virtual returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType setupAfresh)
 
virtual returnValue setupTQfactorisation ()
 
- Protected Member Functions inherited from SQProblem
virtual returnValue setupAuxiliaryQP (const real_t *const H_new, const real_t *const A_new)
 
virtual returnValue setupAuxiliaryQP (SymmetricMatrix *H_new, Matrix *A_new)
 
virtual returnValue setupNewAuxiliaryQP (SymmetricMatrix *H_new, Matrix *A_new, const real_t *lb_new, const real_t *ub_new, const real_t *lbA_new, const real_t *ubA_new)
 
virtual returnValue setupNewAuxiliaryQP (const real_t *const H_new, const real_t *const A_new, const real_t *lb_new, const real_t *ub_new, const real_t *lbA_new, const real_t *ubA_new)
 
- Protected Member Functions inherited from QProblem
returnValue addBound (int number, SubjectToStatus B_status, BooleanType updateCholesky)
 
returnValue addBound (int number, SubjectToStatus B_status, BooleanType updateCholesky)
 
returnValue addBound (int number, SubjectToStatus B_status, BooleanType updateCholesky, BooleanType ensureLI=BT_TRUE)
 
returnValue addBound_checkLI (int number)
 
returnValue addBound_checkLI (int number)
 
returnValue addBound_checkLI (int number)
 
returnValue addBound_ensureLI (int number, SubjectToStatus B_status)
 
returnValue addBound_ensureLI (int number, SubjectToStatus B_status)
 
returnValue addBound_ensureLI (int number, SubjectToStatus B_status)
 
returnValue addConstraint (int number, SubjectToStatus C_status, BooleanType updateCholesky)
 
returnValue addConstraint (int number, SubjectToStatus C_status, BooleanType updateCholesky)
 
returnValue addConstraint (int number, SubjectToStatus C_status, BooleanType updateCholesky, BooleanType ensureLI=BT_TRUE)
 
returnValue addConstraint_checkLI (int number)
 
returnValue addConstraint_checkLI (int number)
 
returnValue addConstraint_checkLI (int number)
 
returnValue addConstraint_ensureLI (int number, SubjectToStatus C_status)
 
returnValue addConstraint_ensureLI (int number, SubjectToStatus C_status)
 
returnValue addConstraint_ensureLI (int number, SubjectToStatus C_status)
 
BooleanType areBoundsConsistent (const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_lbA, const real_t *const delta_ubA) const
 
BooleanType areBoundsConsistent (const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_lbA, const real_t *const delta_ubA) const
 
returnValue areBoundsConsistent (const real_t *const lb, const real_t *const ub, const real_t *const lbA, const real_t *const ubA) const
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a)
 
returnValue backsolveT (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveT (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveT (const real_t *const b, BooleanType transposed, real_t *const a) const
 
returnValue changeActiveSet (int_t BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound)
 
returnValue changeActiveSet (int BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound)
 
returnValue checkKKTconditions ()
 
returnValue checkKKTconditions ()
 
returnValue clear ()
 
returnValue clear ()
 
returnValue computeInitialCholesky ()
 
returnValue copy (const QProblem &rhs)
 
returnValue copy (const QProblem &rhs)
 
returnValue determineDataShift (const real_t *const g_new, const real_t *const lbA_new, const real_t *const ubA_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lbA, real_t *const delta_ubA, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bC_isZero, BooleanType &Delta_bB_isZero)
 
returnValue determineDataShift (const real_t *const g_new, const real_t *const lbA_new, const real_t *const ubA_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lbA, real_t *const delta_ubA, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bC_isZero, BooleanType &Delta_bB_isZero)
 
returnValue determineStepDirection (const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
returnValue dropInfeasibles (int_t BC_number, SubjectToStatus BC_status, BooleanType BC_isBound, real_t *xiB, real_t *xiC)
 
returnValue ensureNonzeroCurvature (BooleanType removeBoundNotConstraint, int_t remIdx, BooleanType &exchangeHappened, BooleanType &addBoundNotConstraint, int_t &addIdx, SubjectToStatus &addStatus)
 
returnValue ensureNonzeroCurvature (BooleanType removeBoundNotConstraint, int remIdx, BooleanType &exchangeHappened, BooleanType &addBoundNotConstraint, int &addIdx, SubjectToStatus &addStatus)
 
real_t getRelativeHomotopyLength (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new)
 
returnValue hotstart_determineDataShift (const int *const FX_idx, const int *const AC_idx, const real_t *const g_new, const real_t *const lbA_new, const real_t *const ubA_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lbA, real_t *const delta_ubA, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bC_isZero, BooleanType &Delta_bB_isZero)
 
returnValue hotstart_determineDataShift (const int *const FX_idx, const int *const AC_idx, const real_t *const g_new, const real_t *const lbA_new, const real_t *const ubA_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lbA, real_t *const delta_ubA, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bC_isZero, BooleanType &Delta_bB_isZero)
 
returnValue hotstart_determineStepDirection (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
returnValue hotstart_determineStepDirection (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
returnValue hotstart_determineStepLength (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const int *const IAC_idx, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, real_t *const delta_Ax, int &BC_idx, SubjectToStatus &BC_status, BooleanType &BC_isBound)
 
returnValue hotstart_determineStepLength (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const int *const IAC_idx, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, real_t *const delta_Ax, int &BC_idx, SubjectToStatus &BC_status, BooleanType &BC_isBound)
 
returnValue hotstart_performStep (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const int *const IAC_idx, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, const real_t *const delta_Ax, int BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound)
 
returnValue hotstart_performStep (const int *const FR_idx, const int *const FX_idx, const int *const AC_idx, const int *const IAC_idx, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, const real_t *const delta_Ax, int BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound)
 
returnValue loadQPvectorsFromFile (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, real_t *const g_new, real_t *const lb_new, real_t *const ub_new, real_t *const lbA_new, real_t *const ubA_new) const
 
returnValue loadQPvectorsFromFile (const char *const g_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file, real_t *const g_new, real_t *const lb_new, real_t *const ub_new, real_t *const lbA_new, real_t *const ubA_new) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, Bounds *auxiliaryBounds, Constraints *auxiliaryConstraints) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, Bounds *auxiliaryBounds, Constraints *auxiliaryConstraints) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, Bounds *auxiliaryBounds, Constraints *auxiliaryConstraints) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, Bounds *auxiliaryBounds, Constraints *auxiliaryConstraints) const
 
virtual returnValue performDriftCorrection ()
 
returnValue performDriftCorrection ()
 
returnValue performPlainRatioTest (int_t nIdx, const int_t *const idxList, const real_t *const num, const real_t *const den, real_t epsNum, real_t epsDen, real_t &t, int_t &BC_idx) const
 
returnValue performPlainRatioTest (int nIdx, const int *const idxList, const real_t *const num, const real_t *const den, real_t epsNum, real_t epsDen, real_t &t, int &BC_idx) const
 
virtual returnValue performRamping ()
 
virtual returnValue performRamping ()
 
returnValue performStep (const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, int_t &BC_idx, SubjectToStatus &BC_status, BooleanType &BC_isBound)
 
returnValue performStep (const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, const real_t *const delta_xFX, const real_t *const delta_xFR, const real_t *const delta_yAC, const real_t *const delta_yFX, int &BC_idx, SubjectToStatus &BC_status, BooleanType &BC_isBound)
 
returnValue printIteration (int_t iter, int_t BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound, real_t homotopyLength, BooleanType isFirstCall=BT_TRUE)
 
returnValue printIteration (int iteration, int BC_idx, SubjectToStatus BC_status, BooleanType BC_isBound)
 
real_t relativeHomotopyLength (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new)
 
returnValue removeBound (int number, BooleanType updateCholesky)
 
returnValue removeBound (int number, BooleanType updateCholesky)
 
returnValue removeBound (int number, BooleanType updateCholesky, BooleanType allowFlipping=BT_FALSE, BooleanType ensureNZC=BT_FALSE)
 
returnValue removeConstraint (int number, BooleanType updateCholesky)
 
returnValue removeConstraint (int number, BooleanType updateCholesky)
 
returnValue removeConstraint (int number, BooleanType updateCholesky, BooleanType allowFlipping=BT_FALSE, BooleanType ensureNZC=BT_FALSE)
 
returnValue setA (const real_t *const A_new)
 
returnValue setA (int number, const real_t *const value)
 
returnValue setA (const real_t *const A_new)
 
returnValue setA (int number, const real_t *const value)
 
returnValue setA (Matrix *A_new)
 
returnValue setA (const real_t *const A_new)
 
returnValue setA (Matrix *A_new)
 
returnValue setA (const real_t *const A_new)
 
returnValue setLBA (const real_t *const lbA_new)
 
returnValue setLBA (int number, real_t value)
 
returnValue setLBA (const real_t *const lbA_new)
 
returnValue setLBA (int number, real_t value)
 
returnValue setLBA (const real_t *const lbA_new)
 
returnValue setLBA (int_t number, real_t value)
 
returnValue setLBA (const real_t *const lbA_new)
 
returnValue setLBA (int number, real_t value)
 
returnValue setUBA (const real_t *const ubA_new)
 
returnValue setUBA (int number, real_t value)
 
returnValue setUBA (const real_t *const ubA_new)
 
returnValue setUBA (int number, real_t value)
 
returnValue setUBA (const real_t *const ubA_new)
 
returnValue setUBA (int_t number, real_t value)
 
returnValue setUBA (const real_t *const ubA_new)
 
returnValue setUBA (int number, real_t value)
 
virtual returnValue setupAuxiliaryQP (const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
virtual returnValue setupAuxiliaryQP (const Bounds *const guessedBounds, const Constraints *const guessedConstraints)
 
returnValue setupAuxiliaryQPbounds (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPbounds (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPbounds (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPbounds (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType setupAfresh)
 
returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType setupAfresh)
 
returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, const Constraints *const auxiliaryConstraints, BooleanType setupAfresh)
 
returnValue setupCholeskyDecompositionProjected ()
 
returnValue setupCholeskyDecompositionProjected ()
 
returnValue setupCholeskyDecompositionProjected ()
 
virtual returnValue setupInitialCholesky ()
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _R, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdata (SymmetricMatrix *_H, const real_t *const _g, Matrix *_A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdata (SymmetricMatrix *_H, const real_t *const _g, Matrix *_A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _A, const real_t *const _lb, const real_t *const _ub, const real_t *const _lbA, const real_t *const _ubA)
 
returnValue setupQPdataFromFile (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file)
 
returnValue setupQPdataFromFile (const char *const H_file, const char *const g_file, const char *const A_file, const char *const lb_file, const char *const ub_file, const char *const lbA_file, const char *const ubA_file)
 
returnValue setupSubjectToType ()
 
returnValue setupSubjectToType ()
 
virtual returnValue setupSubjectToType ()
 
virtual returnValue setupSubjectToType (const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new)
 
virtual returnValue setupSubjectToType ()
 
virtual returnValue setupSubjectToType (const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new)
 
returnValue setupTQfactorisation ()
 
returnValue setupTQfactorisation ()
 
returnValue setupTQfactorisation ()
 
BooleanType shallRefactorise (const Bounds *const guessedBounds, const Constraints *const guessedConstraints) const
 
BooleanType shallRefactorise (const Bounds *const guessedBounds, const Constraints *const guessedConstraints) const
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, int &nWSR, real_t *const cputime)
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, int &nWSR, real_t *const cputime)
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, const real_t *const _R, int_t &nWSR, real_t *const cputime)
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, const Constraints *const guessedConstraints, int &nWSR, real_t *const cputime)
 
returnValue solveQP (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime, int_t nWSRperformed=0, BooleanType isFirstCall=BT_TRUE)
 
returnValue solveQP (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime, int nWSRperformed=0)
 
returnValue solveRegularisedQP (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int_t &nWSR, real_t *const cputime, int_t nWSRperformed=0, BooleanType isFirstCall=BT_TRUE)
 
returnValue solveRegularisedQP (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new, int &nWSR, real_t *const cputime, int nWSRperformed=0)
 
virtual returnValue updateActivitiesForHotstart (const real_t *const lb_new, const real_t *const ub_new, const real_t *const lbA_new, const real_t *const ubA_new)
 
returnValue updateFarBounds (real_t curFarBound, int_t nRamp, const real_t *const lb_new, real_t *const lb_new_far, const real_t *const ub_new, real_t *const ub_new_far, const real_t *const lbA_new, real_t *const lbA_new_far, const real_t *const ubA_new, real_t *const ubA_new_far) const
 
- Protected Member Functions inherited from QProblemB
returnValue addBound (int number, SubjectToStatus B_status, BooleanType updateCholesky)
 
returnValue addBound (int number, SubjectToStatus B_status, BooleanType updateCholesky)
 
void applyGivens (real_t c, real_t s, real_t xold, real_t yold, real_t &xnew, real_t &ynew) const
 
void applyGivens (real_t c, real_t s, real_t xold, real_t yold, real_t &xnew, real_t &ynew) const
 
void applyGivens (real_t c, real_t s, real_t nu, real_t xold, real_t yold, real_t &xnew, real_t &ynew) const
 
void applyGivens (real_t c, real_t s, real_t nu, real_t xold, real_t yold, real_t &xnew, real_t &ynew) const
 
BooleanType areBoundsConsistent (const real_t *const delta_lb, const real_t *const delta_ub) const
 
BooleanType areBoundsConsistent (const real_t *const delta_lb, const real_t *const delta_ub) const
 
returnValue areBoundsConsistent (const real_t *const lb, const real_t *const ub) const
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a)
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, real_t *const a) const
 
returnValue backsolveR (const real_t *const b, BooleanType transposed, BooleanType removingBound, real_t *const a) const
 
returnValue checkForIdentityHessian ()
 
returnValue checkForIdentityHessian ()
 
returnValue clear ()
 
returnValue clear ()
 
virtual returnValue computeCholesky ()
 
void computeGivens (real_t xold, real_t yold, real_t &xnew, real_t &ynew, real_t &c, real_t &s) const
 
void computeGivens (real_t xold, real_t yold, real_t &xnew, real_t &ynew, real_t &c, real_t &s) const
 
void computeGivens (real_t xold, real_t yold, real_t &xnew, real_t &ynew, real_t &c, real_t &s) const
 
void computeGivens (real_t xold, real_t yold, real_t &xnew, real_t &ynew, real_t &c, real_t &s) const
 
returnValue copy (const QProblemB &rhs)
 
returnValue copy (const QProblemB &rhs)
 
SymSparseMatcreateDiagSparseMat (int_t n, real_t diagVal=1.0)
 
returnValue determineDataShift (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bB_isZero)
 
returnValue determineDataShift (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bB_isZero)
 
returnValue determineHessianType ()
 
returnValue determineHessianType ()
 
real_t getRelativeHomotopyLength (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new)
 
returnValue hotstart_determineDataShift (const int *const FX_idx, const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bB_isZero)
 
returnValue hotstart_determineDataShift (const int *const FX_idx, const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new, real_t *const delta_g, real_t *const delta_lb, real_t *const delta_ub, BooleanType &Delta_bB_isZero)
 
BooleanType isBlocking (real_t num, real_t den, real_t epsNum, real_t epsDen, real_t &t) const
 
BooleanType isBlocking (real_t num, real_t den, real_t epsNum, real_t epsDen, real_t &t) const
 
BooleanType isCPUtimeLimitExceeded (const real_t *const cputime, real_t starttime, int_t nWSR) const
 
BooleanType isCPUtimeLimitExceeded (const real_t *const cputime, real_t starttime, int nWSR) const
 
returnValue loadQPvectorsFromFile (const char *const g_file, const char *const lb_file, const char *const ub_file, real_t *const g_new, real_t *const lb_new, real_t *const ub_new) const
 
returnValue loadQPvectorsFromFile (const char *const g_file, const char *const lb_file, const char *const ub_file, real_t *const g_new, real_t *const lb_new, real_t *const ub_new) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, Bounds *auxiliaryBounds) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, Bounds *auxiliaryBounds) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, Bounds *auxiliaryBounds) const
 
returnValue obtainAuxiliaryWorkingSet (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, Bounds *auxiliaryBounds) const
 
returnValue performRatioTest (int_t nIdx, const int_t *const idxList, const SubjectTo *const subjectTo, const real_t *const num, const real_t *const den, real_t epsNum, real_t epsDen, real_t &t, int_t &BC_idx) const
 
returnValue performRatioTest (int nIdx, const int *const idxList, const SubjectTo *const subjectTo, const real_t *const num, const real_t *const den, real_t epsNum, real_t epsDen, real_t &t, int &BC_idx) const
 
returnValue regulariseHessian ()
 
returnValue regulariseHessian ()
 
real_t relativeHomotopyLength (const real_t *const g_new, const real_t *const lb_new, const real_t *const ub_new)
 
returnValue removeBound (int number, BooleanType updateCholesky)
 
returnValue removeBound (int number, BooleanType updateCholesky)
 
returnValue setG (const real_t *const g_new)
 
returnValue setG (const real_t *const g_new)
 
returnValue setG (const real_t *const g_new)
 
returnValue setG (const real_t *const g_new)
 
returnValue setH (const real_t *const H_new)
 
returnValue setH (const real_t *const H_new)
 
returnValue setH (SymmetricMatrix *H_new)
 
returnValue setH (const real_t *const H_new)
 
returnValue setH (SymmetricMatrix *H_new)
 
returnValue setH (const real_t *const H_new)
 
returnValue setInfeasibilityFlag (returnValue returnvalue, BooleanType doThrowError=BT_FALSE)
 
returnValue setInfeasibilityFlag (returnValue returnvalue)
 
returnValue setLB (const real_t *const lb_new)
 
returnValue setLB (int number, real_t value)
 
returnValue setLB (const real_t *const lb_new)
 
returnValue setLB (int number, real_t value)
 
returnValue setLB (const real_t *const lb_new)
 
returnValue setLB (int_t number, real_t value)
 
returnValue setLB (const real_t *const lb_new)
 
returnValue setLB (int number, real_t value)
 
returnValue setUB (const real_t *const ub_new)
 
returnValue setUB (int number, real_t value)
 
returnValue setUB (const real_t *const ub_new)
 
returnValue setUB (int number, real_t value)
 
returnValue setUB (const real_t *const ub_new)
 
returnValue setUB (int_t number, real_t value)
 
returnValue setUB (const real_t *const ub_new)
 
returnValue setUB (int number, real_t value)
 
virtual returnValue setupAuxiliaryQP (const Bounds *const guessedBounds)
 
returnValue setupAuxiliaryQPbounds (BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPbounds (BooleanType useRelaxation)
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPgradient ()
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryQPsolution (const real_t *const xOpt, const real_t *const yOpt)
 
returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, BooleanType setupAfresh)
 
returnValue setupAuxiliaryWorkingSet (const Bounds *const auxiliaryBounds, BooleanType setupAfresh)
 
returnValue setupCholeskyDecomposition ()
 
returnValue setupCholeskyDecomposition ()
 
returnValue setupCholeskyDecomposition ()
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _R, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdata (SymmetricMatrix *_H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdata (SymmetricMatrix *_H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdata (const real_t *const _H, const real_t *const _g, const real_t *const _lb, const real_t *const _ub)
 
returnValue setupQPdataFromFile (const char *const H_file, const char *const g_file, const char *const lb_file, const char *const ub_file)
 
returnValue setupQPdataFromFile (const char *const H_file, const char *const g_file, const char *const lb_file, const char *const ub_file)
 
returnValue setupSubjectToType ()
 
returnValue setupSubjectToType ()
 
virtual returnValue setupSubjectToType (const real_t *const lb_new, const real_t *const ub_new)
 
virtual returnValue setupSubjectToType (const real_t *const lb_new, const real_t *const ub_new)
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, int &nWSR, real_t *const cputime)
 
returnValue solveInitialQP (const real_t *const xOpt, const real_t *const yOpt, const Bounds *const guessedBounds, int &nWSR, real_t *const cputime)
 
returnValue updateFarBounds (real_t curFarBound, int_t nRamp, const real_t *const lb_new, real_t *const lb_new_far, const real_t *const ub_new, real_t *const ub_new_far) const
 

Protected Attributes

Indexlist boundsFreeStart
 
Indexlist constraintsActiveStart
 
real_t detS
 
sparse_int_tM_ir
 
sparse_int_tM_jc
 
int_t M_physicallength
 
real_tM_vals
 
int_t nS
 
int_t nSmax
 
int_t numFactorizations
 
real_tQ_
 
real_tR_
 
real_t rcondS
 
real_tS
 
SchurUpdateTypeschurUpdate
 
int_tschurUpdateIndex
 
SparseSolversparseSolver
 
- Protected Attributes inherited from QProblem
real_t A [NCMAX_ALLOC *NVMAX]
 
MatrixA
 
real_t Ax [NCMAX_ALLOC]
 
real_tAx
 
real_tAx_l
 
real_tAx_u
 
ConstraintProductconstraintProduct
 
Constraints constraints
 
CyclingManager cyclingManager
 
real_tdelta_xFRy
 
real_tdelta_xFRz
 
real_tdelta_yAC_TMP
 
BooleanType freeConstraintMatrix
 
int idxAddB
 
int idxAddC
 
int idxRemB
 
int idxRemC
 
real_t lbA [NCMAX_ALLOC]
 
real_tlbA
 
real_t Q [NVMAX *NVMAX]
 
real_tQ
 
int sizeT
 
int_t sizeT
 
real_t T [NVMAX *NVMAX]
 
real_tT
 
real_ttempA
 
real_ttempB
 
real_t ubA [NCMAX_ALLOC]
 
real_tubA
 
real_tZFR_delta_xFRz
 
- Protected Attributes inherited from QProblemB
Bounds bounds
 
int count
 
uint_t count
 
real_tdelta_xFR_TMP
 
Flipper flipper
 
BooleanType freeHessian
 
real_t g [NVMAX]
 
real_tg
 
real_t H [NVMAX *NVMAX]
 
SymmetricMatrixH
 
BooleanType hasCholesky
 
BooleanType hasHessian
 
BooleanType haveCholesky
 
HessianType hessianType
 
BooleanType infeasible
 
BooleanType isRegularised
 
real_t lb [NVMAX]
 
real_tlb
 
Options options
 
PrintLevel printlevel
 
real_t R [NVMAX *NVMAX]
 
real_tR
 
real_t ramp0
 
real_t ramp1
 
int_t rampOffset
 
real_t regVal
 
QProblemStatus status
 
TabularOutput tabularOutput
 
real_t tau
 
real_t ub [NVMAX]
 
real_tub
 
BooleanType unbounded
 
real_t x [NVMAX]
 
real_tx
 
real_t y [NVMAX+NCMAX]
 
real_ty
 

Private Member Functions

returnValue addBound_checkLISchur (int_t number, real_t *const xiC, real_t *const xiX)
 
returnValue addConstraint_checkLISchur (int_t number, real_t *const xiC, real_t *const xiX)
 
returnValue addToSchurComplement (int_t number, SchurUpdateType update, int_t numNonzerosM, const sparse_int_t *M_pos, const real_t *const M_vals, int_t numNonzerosN, const sparse_int_t *Npos, const real_t *const Nvals, real_t N_diag)
 
returnValue backsolveSchurQR (int_t dimS, const real_t *const rhs, int_t dimRhs, real_t *const sol)
 
real_t calcDetSchur (int_t idxDel)
 
returnValue computeMTimes (real_t alpha, const real_t *const x, real_t beta, real_t *const y)
 
returnValue computeMTransTimes (real_t alpha, const real_t *const x, real_t beta, real_t *const y)
 
returnValue correctInertia ()
 
returnValue deleteFromSchurComplement (int_t idx, BooleanType allowUndo=BT_FALSE)
 
returnValue repairSingularWorkingSet ()
 
returnValue stepCalcBacksolveSchur (int_t nFR, int_t nFX, int_t nAC, int_t *FR_idx, int_t *FX_idx, int_t *AC_idx, int_t dim, real_t *rhs, real_t *sol)
 
returnValue stepCalcDeltayFx (int_t nFR, int_t nFX, int_t nAC, int_t *FX_idx, const real_t *const delta_g, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
returnValue stepCalcReorder (int_t nFR, int_t nAC, int_t *FR_idx, int_t *AC_idx, int_t nFRStart, int_t nACStart, int_t *FR_idxStart, int_t *AC_idxStart, int_t *FR_iSort, int_t *FR_iSortStart, int_t *AC_iSort, int_t *AC_iSortStart, real_t *rhs)
 
returnValue stepCalcReorder2 (int_t nFR, int_t nAC, int_t *FR_idx, int_t *AC_idx, int_t nFRStart, int_t nACStart, int_t *FR_idxStart, int_t *AC_idxStart, int_t *FR_iSort, int_t *FR_iSortStart, int_t *AC_iSort, int_t *AC_iSortStart, real_t *sol, real_t *const delta_xFR, real_t *const delta_yAC)
 
returnValue stepCalcResid (int_t nFR, int_t nFX, int_t nAC, int_t *FR_idx, int_t *FX_idx, int_t *AC_idx, BooleanType Delta_bC_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, real_t &rnrm)
 
returnValue stepCalcRhs (int_t nFR, int_t nFX, int_t nAC, int_t *FR_idx, int_t *FX_idx, int_t *AC_idx, real_t &rhs_max, const real_t *const delta_g, const real_t *const delta_lbA, const real_t *const delta_ubA, const real_t *const delta_lb, const real_t *const delta_ub, BooleanType Delta_bC_isZero, BooleanType Delta_bB_isZero, real_t *const delta_xFX, real_t *const delta_xFR, real_t *const delta_yAC, real_t *const delta_yFX)
 
returnValue undoDeleteFromSchurComplement (int_t idx)
 
returnValue updateSchurQR (int_t idxDel)
 

Friends

class SolutionAnalysis
 

Additional Inherited Members

- Public Attributes inherited from QProblem
DenseMatrixA
 
DenseMatrix AA
 
real_t Ax_l [NCMAX]
 
real_t Ax_u [NCMAX]
 
Bounds bounds
 
ConstraintProduct constraintProduct
 
unsigned int count
 
real_t delta_xFR_TMP [NVMAX]
 
real_t delta_xFRy [NCMAX]
 
real_t delta_xFRz [NVMAX]
 
real_t delta_yAC_TMP [NCMAX]
 
Flipper flipper
 
real_t g [NVMAX]
 
DenseMatrixH
 
BooleanType haveCholesky
 
HessianType hessianType
 
DenseMatrix HH
 
BooleanType infeasible
 
real_t lb [NVMAX]
 
Options options
 
real_t R [NVMAX *NVMAX]
 
real_t ramp0
 
real_t ramp1
 
int rampOffset
 
real_t regVal
 
QProblemStatus status
 
TabularOutput tabularOutput
 
real_t tau
 
real_t tempA [NVMAX]
 
real_t tempB [NCMAX]
 
real_t ub [NVMAX]
 
BooleanType unbounded
 
real_t x [NVMAX]
 
real_t y [NVMAX+NCMAX]
 
real_t ZFR_delta_xFRz [NVMAX]
 
- Public Attributes inherited from QProblemB
unsigned int count
 
real_t delta_xFR_TMP [NVMAX]
 
DenseMatrixH
 
DenseMatrix HH
 
int rampOffset
 

Detailed Description

Implements the online active set strategy for QPs with varying, sparse matrices.

A class for setting up and solving quadratic programs with varying, sparse QP matrices. Here, sparsity is exploited by means of a Schur complement approach to solve the linear systems.

Author
Andreas Waechter, Dennis Janka
Version
3.2
Date
2012-2015

Definition at line 115 of file SQProblemSchur.hpp.

Constructor & Destructor Documentation

BEGIN_NAMESPACE_QPOASES SQProblemSchur::SQProblemSchur ( )

Default constructor.

Definition at line 68 of file SQProblemSchur.cpp.

SQProblemSchur::SQProblemSchur ( int_t  _nV,
int_t  _nC,
HessianType  _hessianType = HST_UNKNOWN,
int_t  maxSchurUpdates = 75 
)

Constructor which takes the QP dimension and Hessian type information. If the Hessian is the zero (i.e. HST_ZERO) or the identity matrix (i.e. HST_IDENTITY), respectively, no memory is allocated for it and a NULL pointer can be passed for it to the init() functions.

Parameters
_nVNumber of variables.
_nCNumber of constraints.
_hessianTypeType of Hessian matrix.
maxSchurUpdatesMaximal number of Schur updates

Definition at line 99 of file SQProblemSchur.cpp.

SQProblemSchur::SQProblemSchur ( const SQProblemSchur rhs)

Copy constructor (deep copy).

Parameters
rhsRhs object.

Definition at line 154 of file SQProblemSchur.cpp.

SQProblemSchur::~SQProblemSchur ( )
virtual

Destructor.

Definition at line 170 of file SQProblemSchur.cpp.

Member Function Documentation

returnValue SQProblemSchur::addBound ( int_t  number,
SubjectToStatus  B_status,
BooleanType  updateCholesky,
BooleanType  ensureLI = BT_TRUE 
)
protectedvirtual

Adds a bound to active set.

Returns
SUCCESSFUL_RETURN
RET_ADDBOUND_FAILED
RET_ADDBOUND_FAILED_INFEASIBILITY
RET_ENSURELI_FAILED
Parameters
numberNumber of bound to be added to active set.
B_statusStatus of new active bound.
updateCholeskyFlag indicating if Cholesky decomposition shall be updated.
ensureLIEnsure linear independence by exchange rules by default.

Reimplemented from QProblem.

Definition at line 1120 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addBound_checkLI ( int_t  number)
protectedvirtual

Checks if new active bound to be added is linearly dependent from from row of the active constraints matrix.

Returns
RET_LINEARLY_DEPENDENT
RET_LINEARLY_INDEPENDENT
Parameters
numberNumber of bound to be added to active set.

Reimplemented from QProblem.

Definition at line 1255 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addBound_checkLISchur ( int_t  number,
real_t *const  xiC,
real_t *const  xiX 
)
private

Checks if new active bound to be added is linearly dependent from from row of the active constraints matrix. This version computes the multipliers in the (full) test.

Returns
RET_LINEARLY_DEPENDENT
RET_LINEARLY_INDEPENDENT
Parameters
numberNumber of bound to be added to active set.
xiCOutput: Multipliers in linear independence test for active constraints.
xiXOutput: Multipliers in linear independence test for fixed variables.

Definition at line 1275 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addBound_ensureLI ( int_t  number,
SubjectToStatus  B_status 
)
protectedvirtual

Ensures linear independence of constraint matrix when a new bound is added. To this end a bound or constraint is removed simultaneously if necessary.

Returns
SUCCESSFUL_RETURN
RET_LI_RESOLVED
RET_ENSURELI_FAILED
RET_ENSURELI_FAILED_TQ
RET_ENSURELI_FAILED_NOINDEX
RET_REMOVE_FROM_ACTIVESET
Parameters
numberNumber of bound to be added to active set.
B_statusStatus of new active bound.

Reimplemented from QProblem.

Definition at line 1362 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addConstraint ( int_t  number,
SubjectToStatus  C_status,
BooleanType  updateCholesky,
BooleanType  ensureLI = BT_TRUE 
)
protectedvirtual

Adds a constraint to active set.

Returns
SUCCESSFUL_RETURN
RET_ADDCONSTRAINT_FAILED
RET_ADDCONSTRAINT_FAILED_INFEASIBILITY
RET_ENSURELI_FAILED
Parameters
numberNumber of constraint to be added to active set.
C_statusStatus of new active constraint.
updateCholeskyFlag indicating if Cholesky decomposition shall be updated.
ensureLIEnsure linear independence by exchange rules by default.

Reimplemented from QProblem.

Definition at line 653 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addConstraint_checkLI ( int_t  number)
protectedvirtual

Checks if new active constraint to be added is linearly dependent from from row of the active constraints matrix.

Returns
RET_LINEARLY_DEPENDENT
RET_LINEARLY_INDEPENDENT
RET_INDEXLIST_CORRUPTED
Parameters
numberNumber of constraint to be added to active set.

Reimplemented from QProblem.

Definition at line 839 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addConstraint_checkLISchur ( int_t  number,
real_t *const  xiC,
real_t *const  xiX 
)
private

Checks if new active bound to be added is linearly dependent from from row of the active constraints matrix. This version computes the multipliers in the (full) test.

Returns
RET_LINEARLY_DEPENDENT
RET_LINEARLY_INDEPENDENT
Parameters
numberNumber of bound to be added to active set.
xiCOutput: Multipliers in linear independence test for active constraints.
xiXOutput: Multipliers in linear independence test for fixed variables.

Definition at line 860 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addConstraint_ensureLI ( int_t  number,
SubjectToStatus  C_status 
)
protectedvirtual

Ensures linear independence of constraint matrix when a new constraint is added. To this end a bound or constraint is removed simultaneously if necessary.

Returns
SUCCESSFUL_RETURN
RET_LI_RESOLVED
RET_ENSURELI_FAILED
RET_ENSURELI_FAILED_TQ
RET_ENSURELI_FAILED_NOINDEX
RET_REMOVE_FROM_ACTIVESET
Parameters
numberNumber of constraint to be added to active set.
C_statusStatus of new active bound.

Reimplemented from QProblem.

Definition at line 952 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::addToSchurComplement ( int_t  number,
SchurUpdateType  update,
int_t  numNonzerosM,
const sparse_int_t M_pos,
const real_t *const  M_vals,
int_t  numNonzerosN,
const sparse_int_t Npos,
const real_t *const  Nvals,
real_t  N_diag 
)
private

Add a row/column to the Schur complement.

Definition at line 3165 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::backsolveR ( const real_t *const  b,
BooleanType  transposed,
real_t *const  a 
) const
protectedvirtual

Solves the system Ra = b or R^Ta = b where R is an upper triangular matrix. This must not be called for the Schur complement version.

Parameters
bRight hand side vector.
transposedIndicates if the transposed system shall be solved.
aOutput: Solution vector

Reimplemented from QProblemB.

Definition at line 2178 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::backsolveR ( const real_t *const  b,
BooleanType  transposed,
BooleanType  removingBound,
real_t *const  a 
) const
protectedvirtual

Solves the system Ra = b or R^Ta = b where R is an upper triangular matrix.
This must not be called for the Schur complement version.

Parameters
bRight hand side vector.
transposedIndicates if the transposed system shall be solved.
removingBoundIndicates if function is called from "removeBound()".
aOutput: Solution vector

Reimplemented from QProblemB.

Definition at line 2187 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::backsolveSchurQR ( int_t  dimS,
const real_t *const  rhs,
int_t  dimRhs,
real_t *const  sol 
)
private

Compute the solution to QRx = rhs and store it in sol

Definition at line 2428 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::backsolveT ( const real_t *const  b,
BooleanType  transposed,
real_t *const  a 
) const
protectedvirtual

Solves the system Ta = b or T^Ta = b where T is a reverse upper triangular matrix. This must not be called for the Schur complement version.

Parameters
bRight hand side vector.
transposedIndicates if the transposed system shall be solved.
aOutput: Solution vector

Reimplemented from QProblem.

Definition at line 2169 of file SQProblemSchur.cpp.

real_t SQProblemSchur::calcDetSchur ( int_t  idxDel)
private

Compute determinant of new nS*nS Schur complement from old factorization

Todo:
I think we do not need to transform all columns of R, i+3 or so should be sufficient

Definition at line 2196 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::clear ( )
protected

Frees all allocated memory.

Returns
SUCCESSFUL_RETURN

Definition at line 216 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::computeInitialCholesky ( )
protectedvirtual

Computes initial Cholesky decomposition of the projected Hessian making use of the function setupCholeskyDecomposition() or setupCholeskyDecompositionProjected(). For the Schur complement version, this function only returns SUCCESSFUL_RETURN.

Definition at line 635 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::computeMTimes ( real_t  alpha,
const real_t *const  x,
real_t  beta,
real_t *const  y 
)
private

Compute product of "M" matrix (additional columns in KKT matrix) with vector. y = alpha * M * x + beta * y

Definition at line 3119 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::computeMTransTimes ( real_t  alpha,
const real_t *const  x,
real_t  beta,
real_t *const  y 
)
private

Compute product of transpose of "M" matrix (additional columns in KKT matrix) with vector. y = alpha * M^T * x + beta * y

Definition at line 3136 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::computeProjectedCholesky ( )
protectedvirtual

Computes the Cholesky decomposition of the projected Hessian (i.e. R^T*R = Z^T*H*Z). For the Schur complement version, this function only returns SUCCESSFUL_RETURN.

Reimplemented from QProblem.

Definition at line 626 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::copy ( const SQProblemSchur rhs)
protected

Copies all members from given rhs object.

Returns
SUCCESSFUL_RETURN
Parameters
rhsRhs object.

Definition at line 240 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::correctInertia ( )
private

If negative curvature is discovered in the reduced Hessian, add bounds until all eigenvalues are positive

Definition at line 3431 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::deleteFromSchurComplement ( int_t  idx,
BooleanType  allowUndo = BT_FALSE 
)
private

Remove a row/column from the Schur complement.

Definition at line 3247 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::determineStepDirection ( const real_t *const  delta_g,
const real_t *const  delta_lbA,
const real_t *const  delta_ubA,
const real_t *const  delta_lb,
const real_t *const  delta_ub,
BooleanType  Delta_bC_isZero,
BooleanType  Delta_bB_isZero,
real_t *const  delta_xFX,
real_t *const  delta_xFR,
real_t *const  delta_yAC,
real_t *const  delta_yFX 
)
protectedvirtual

Determines step direction of the homotopy path.

Returns
SUCCESSFUL_RETURN
RET_STEPDIRECTION_FAILED_TQ
RET_STEPDIRECTION_FAILED_CHOLESKY
Parameters
delta_gStep direction of gradient vector.
delta_lbAStep direction of lower constraints' bounds.
delta_ubAStep direction of upper constraints' bounds.
delta_lbStep direction of lower bounds.
delta_ubStep direction of upper bounds.
Delta_bC_isZeroIndicates if active constraints' bounds are to be shifted.
Delta_bB_isZeroIndicates if active bounds are to be shifted.
delta_xFXOutput: Primal homotopy step direction of fixed variables.
delta_xFROutput: Primal homotopy step direction of free variables.
delta_yACOutput: Dual homotopy step direction of active constraints' multiplier.
delta_yFXOutput: Dual homotopy step direction of fixed variables' multiplier.

Reimplemented from QProblem.

Definition at line 2813 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::determineStepDirection2 ( const real_t *const  delta_g,
const real_t *const  delta_lbA,
const real_t *const  delta_ubA,
const real_t *const  delta_lb,
const real_t *const  delta_ub,
BooleanType  Delta_bC_isZero,
BooleanType  Delta_bB_isZero,
real_t *const  delta_xFX,
real_t *const  delta_xFR,
real_t *const  delta_yAC,
real_t *const  delta_yFX 
)
protectedvirtual
Parameters
delta_gStep direction of gradient vector.
delta_lbAStep direction of lower constraints' bounds.
delta_ubAStep direction of upper constraints' bounds.
delta_lbStep direction of lower bounds.
delta_ubStep direction of upper bounds.
Delta_bC_isZeroIndicates if active constraints' bounds are to be shifted.
Delta_bB_isZeroIndicates if active bounds are to be shifted.
delta_xFXOutput: Primal homotopy step direction of fixed variables.
delta_xFROutput: Primal homotopy step direction of free variables.
delta_yACOutput: Dual homotopy step direction of active constraints' multiplier.
delta_yFXOutput: Dual homotopy step direction of fixed variables' multiplier.

Definition at line 2844 of file SQProblemSchur.cpp.

int_t SQProblemSchur::getNumFactorizations ( ) const
inline

Return the total number of sparse matrix factorizations performed so far.

SQProblemSchur & SQProblemSchur::operator= ( const SQProblemSchur rhs)
virtual

Assignment operator (deep copy).

Parameters
rhsRhs object.

Definition at line 181 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::removeBound ( int_t  number,
BooleanType  updateCholesky,
BooleanType  allowFlipping = BT_FALSE,
BooleanType  ensureNZC = BT_FALSE 
)
protectedvirtual

Removes a bounds from active set.

Returns
SUCCESSFUL_RETURN
RET_BOUND_NOT_ACTIVE
RET_HESSIAN_NOT_SPD
RET_REMOVEBOUND_FAILED
Parameters
numberNumber of bound to be removed from active set.
updateCholeskyFlag indicating if Cholesky decomposition shall be updated.
allowFlippingFlag indicating if flipping bounds are allowed.
ensureNZCFlag indicating if non-zero curvature is ensured by exchange rules.

Reimplemented from QProblem.

Definition at line 1803 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::removeConstraint ( int_t  number,
BooleanType  updateCholesky,
BooleanType  allowFlipping = BT_FALSE,
BooleanType  ensureNZC = BT_FALSE 
)
protectedvirtual

Removes a constraint from active set.

Returns
SUCCESSFUL_RETURN
RET_CONSTRAINT_NOT_ACTIVE
RET_REMOVECONSTRAINT_FAILED
RET_HESSIAN_NOT_SPD
Parameters
numberNumber of constraint to be removed from active set.
updateCholeskyFlag indicating if Cholesky decomposition shall be updated.
allowFlippingFlag indicating if flipping bounds are allowed.
ensureNZCFlag indicating if non-zero curvature is ensured by exchange rules.

Reimplemented from QProblem.

Definition at line 1528 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::repairSingularWorkingSet ( )
private

If the KKT matrix is declared singular during refactorization, remove linearly dependent constraints or add bounds

Todo:
make sure that this is so.

Definition at line 3528 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::reset ( )
virtual

Clears all data structures of QProblem except for QP data.

Returns
SUCCESSFUL_RETURN
RET_RESET_FAILED

Reimplemented from QProblem.

Definition at line 196 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::resetSchurComplement ( BooleanType  allowInertiaCorrection)

Resets Schur complement. This sets up the KKT matrix for the current activities, copies the activities, etc. TODO: Return values

Definition at line 2987 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::setupAuxiliaryQP ( SymmetricMatrix H_new,
Matrix A_new,
const real_t lb_new,
const real_t ub_new,
const real_t lbA_new,
const real_t ubA_new 
)
protectedvirtual

This method is overloaded from SQProblem. Sets new matrices and calculates their factorisations. If the current Hessian is trivial (i.e. HST_ZERO or HST_IDENTITY) but a non-trivial one is given, memory for Hessian is allocated and it is set to the given one. Afterwards, all QP vectors are transformed in order to start from an optimal solution.

Returns
SUCCESSFUL_RETURN
RET_MATRIX_FACTORISATION_FAILED
RET_NO_HESSIAN_SPECIFIED
Parameters
H_newNew Hessian matrix.
If Hessian matrix is trivial, a NULL pointer can be passed.
A_newNew constraint matrix.
If QP sequence does not involve constraints, a NULL pointer can be passed.

Definition at line 317 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::setupAuxiliaryWorkingSet ( const Bounds *const  auxiliaryBounds,
const Constraints *const  auxiliaryConstraints,
BooleanType  setupAfresh 
)
protectedvirtual

Setup bounds and constraints data structures according to auxiliaryBounds/Constraints. Calls the sparse solver to obtain the factorization for the initial active set.

Returns
SUCCESSFUL_RETURN
RET_SETUP_WORKINGSET_FAILED
RET_INVALID_ARGUMENTS
RET_UNKNOWN_BUG

Reimplemented from QProblem.

Definition at line 517 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::setupTQfactorisation ( )
protectedvirtual

Initialises TQ factorisation of A (i.e. A*Q = [0 T]) if NO constraint is active. For the Schur complement version, this function only returns SUCCESSFUL_RETURN.

Reimplemented from QProblem.

Definition at line 644 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcBacksolveSchur ( int_t  nFR,
int_t  nFX,
int_t  nAC,
int_t FR_idx,
int_t FX_idx,
int_t AC_idx,
int_t  dim,
real_t rhs,
real_t sol 
)
private

Definition at line 2579 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcDeltayFx ( int_t  nFR,
int_t  nFX,
int_t  nAC,
int_t FX_idx,
const real_t *const  delta_g,
real_t *const  delta_xFX,
real_t *const  delta_xFR,
real_t *const  delta_yAC,
real_t *const  delta_yFX 
)
private

Definition at line 2786 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcReorder ( int_t  nFR,
int_t  nAC,
int_t FR_idx,
int_t AC_idx,
int_t  nFRStart,
int_t  nACStart,
int_t FR_idxStart,
int_t AC_idxStart,
int_t FR_iSort,
int_t FR_iSortStart,
int_t AC_iSort,
int_t AC_iSortStart,
real_t rhs 
)
private

Definition at line 2533 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcReorder2 ( int_t  nFR,
int_t  nAC,
int_t FR_idx,
int_t AC_idx,
int_t  nFRStart,
int_t  nACStart,
int_t FR_idxStart,
int_t AC_idxStart,
int_t FR_iSort,
int_t FR_iSortStart,
int_t AC_iSort,
int_t AC_iSortStart,
real_t sol,
real_t *const  delta_xFR,
real_t *const  delta_yAC 
)
private

Definition at line 2683 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcResid ( int_t  nFR,
int_t  nFX,
int_t  nAC,
int_t FR_idx,
int_t FX_idx,
int_t AC_idx,
BooleanType  Delta_bC_isZero,
real_t *const  delta_xFX,
real_t *const  delta_xFR,
real_t *const  delta_yAC,
const real_t *const  delta_g,
const real_t *const  delta_lbA,
const real_t *const  delta_ubA,
real_t rnrm 
)
private

Definition at line 2724 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::stepCalcRhs ( int_t  nFR,
int_t  nFX,
int_t  nAC,
int_t FR_idx,
int_t FX_idx,
int_t AC_idx,
real_t rhs_max,
const real_t *const  delta_g,
const real_t *const  delta_lbA,
const real_t *const  delta_ubA,
const real_t *const  delta_lb,
const real_t *const  delta_ub,
BooleanType  Delta_bC_isZero,
BooleanType  Delta_bB_isZero,
real_t *const  delta_xFX,
real_t *const  delta_xFR,
real_t *const  delta_yAC,
real_t *const  delta_yFX 
)
private

Definition at line 2466 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::undoDeleteFromSchurComplement ( int_t  idx)
private

Undo the last deletion from the Schur complement by moving the nS+1th row/column to position idx.

Definition at line 3346 of file SQProblemSchur.cpp.

returnValue SQProblemSchur::updateSchurQR ( int_t  idxDel)
private

Update QR factorization and determinant of Schur complement after a row and column have been added or removed

Definition at line 2289 of file SQProblemSchur.cpp.

Friends And Related Function Documentation

friend class SolutionAnalysis
friend

Definition at line 118 of file SQProblemSchur.hpp.

Member Data Documentation

Indexlist SQProblemSchur::boundsFreeStart
protected

Index list for free bounds when major iteration started.

Definition at line 461 of file SQProblemSchur.hpp.

Indexlist SQProblemSchur::constraintsActiveStart
protected

Index list for active constraints when major iteration started.

Definition at line 462 of file SQProblemSchur.hpp.

real_t SQProblemSchur::detS
protected

Determinant of Schur complement

Definition at line 449 of file SQProblemSchur.hpp.

sparse_int_t* SQProblemSchur::M_ir
protected

Row indices (length).

Definition at line 458 of file SQProblemSchur.hpp.

sparse_int_t* SQProblemSchur::M_jc
protected

Indices in M to first entry of columns (nS+1).

Definition at line 459 of file SQProblemSchur.hpp.

int_t SQProblemSchur::M_physicallength
protected

Allocated size of the M_vals and M_ir arrays.

Definition at line 456 of file SQProblemSchur.hpp.

real_t* SQProblemSchur::M_vals
protected

Values of the sparse M matrix containing the vectors with the additional rows defining the Schur complement (length).

Definition at line 457 of file SQProblemSchur.hpp.

int_t SQProblemSchur::nS
protected

Current size of Schur complement matrix. -1 means that the Schur complement has not yet been initialized.

Definition at line 444 of file SQProblemSchur.hpp.

int_t SQProblemSchur::nSmax
protected

Maximum size of Schur complement matrix.

Definition at line 445 of file SQProblemSchur.hpp.

int_t SQProblemSchur::numFactorizations
protected

Total number of factorizations performed

Definition at line 451 of file SQProblemSchur.hpp.

real_t* SQProblemSchur::Q_
protected

QR factorization of S: orthogonal matrix Q

Definition at line 447 of file SQProblemSchur.hpp.

real_t* SQProblemSchur::R_
protected

QR factorization of S: upper triangular matrix R

Definition at line 448 of file SQProblemSchur.hpp.

real_t SQProblemSchur::rcondS
protected

Reciprocal of condition number of S (estimate)

Definition at line 450 of file SQProblemSchur.hpp.

real_t* SQProblemSchur::S
protected

Schur complement matrix. (This is actually the negative of the Schur complement!)

Definition at line 443 of file SQProblemSchur.hpp.

SchurUpdateType* SQProblemSchur::schurUpdate
protected

Type of update for each update in Schur complement.

Definition at line 454 of file SQProblemSchur.hpp.

int_t* SQProblemSchur::schurUpdateIndex
protected

Indices of variables or constraints for each update in Schur complement.

Definition at line 453 of file SQProblemSchur.hpp.

SparseSolver* SQProblemSchur::sparseSolver
protected

Interface to the sparse linear solver.

Definition at line 441 of file SQProblemSchur.hpp.


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


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:35:26