qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Bounds Class Reference

Manages working sets of bounds (i.e. box constraints). More...

#include <Bounds.hpp>

Inheritance diagram for Bounds:
SubjectTo

Public Member Functions

 Bounds ()
 
 Bounds (int_t _n)
 
 Bounds (const Bounds &rhs)
 
virtual ~Bounds ()
 
Boundsoperator= (const Bounds &rhs)
 
returnValue init (int_t _n=0)
 
returnValue setupBound (int_t number, SubjectToStatus _status)
 
returnValue setupAllFree ()
 
returnValue setupAllLower ()
 
returnValue setupAllUpper ()
 
returnValue moveFixedToFree (int_t number)
 
returnValue moveFreeToFixed (int_t number, SubjectToStatus _status)
 
returnValue flipFixed (int_t number)
 
returnValue swapFree (int_t number1, int_t number2)
 
int_t getNV () const
 
int_t getNFV () const
 
int_t getNBV () const
 
int_t getNUV () const
 
int_t getNFR () const
 
int_t getNFX () const
 
IndexlistgetFree ()
 
IndexlistgetFixed ()
 
virtual returnValue shift (int_t offset)
 
virtual returnValue rotate (int_t offset)
 
returnValue print ()
 
int_t getNumberOfType (SubjectToType _type) const
 
SubjectToType getType (int_t i) const
 
SubjectToStatus getStatus (int_t i) const
 
returnValue setType (int_t i, SubjectToType value)
 
returnValue setStatus (int_t i, SubjectToStatus value)
 
void setNoLower (BooleanType _status)
 
void setNoUpper (BooleanType _status)
 
BooleanType hasNoLower () const
 
BooleanType hasNoUpper () const
 

Protected Member Functions

returnValue clear ()
 
returnValue copy (const Bounds &rhs)
 
returnValue setupAll (SubjectToStatus _status)
 
returnValue copy (const SubjectTo &rhs)
 
returnValue addIndex (Indexlist *const indexlist, int_t newnumber, SubjectToStatus newstatus)
 
returnValue removeIndex (Indexlist *const indexlist, int_t removenumber)
 
returnValue swapIndex (Indexlist *const indexlist, int_t number1, int_t number2)
 

Protected Attributes

Indexlist freee
 
Indexlist fixed
 
int_t n
 
SubjectToTypetype
 
SubjectToStatusstatus
 
BooleanType noLower
 
BooleanType noUpper
 

Detailed Description

This class manages working sets of bounds (= box constraints) by storing index sets and other status information.

Author
Hans Joachim Ferreau
Version
3.2
Date
2007-2017

Constructor & Destructor Documentation

◆ Bounds() [1/3]

BEGIN_NAMESPACE_QPOASES Bounds::Bounds ( )

Default constructor.

◆ Bounds() [2/3]

Bounds::Bounds ( int_t  _n)

Constructor which takes the number of bounds.

Parameters
_nNumber of bounds.

References init().

◆ Bounds() [3/3]

Bounds::Bounds ( const Bounds rhs)

Copy constructor (deep copy).

Parameters
rhsRhs object.

References copy().

◆ ~Bounds()

Bounds::~Bounds ( )
virtual

Destructor.

References clear().

Member Function Documentation

◆ addIndex()

returnValue SubjectTo::addIndex ( Indexlist *const  indexlist,
int_t  newnumber,
SubjectToStatus  newstatus 
)
protectedinherited

Adds the index of a new constraint or bound to index set.

Returns
SUCCESSFUL_RETURN
RET_ADDINDEX_FAILED
RET_INVALID_ARGUMENTS
Parameters
indexlistIndex list to which the new index shall be added.
newnumberNumber of new constraint or bound.
newstatusStatus of new constraint or bound.

References Indexlist::addNumber(), RET_ADDINDEX_FAILED, RET_INDEX_ALREADY_OF_DESIRED_STATUS, RET_INDEXLIST_EXCEEDS_MAX_LENGTH, RET_INVALID_ARGUMENTS, SubjectTo::status, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by Constraints::moveActiveToInactive(), moveFixedToFree(), moveFreeToFixed(), Constraints::moveInactiveToActive(), setupBound(), and Constraints::setupConstraint().

◆ clear()

returnValue Bounds::clear ( )
protected

Frees all allocated memory.

Returns
SUCCESSFUL_RETURN

References SUCCESSFUL_RETURN.

Referenced by init(), operator=(), and ~Bounds().

◆ copy() [1/2]

returnValue SubjectTo::copy ( const SubjectTo rhs)
protectedinherited

Copies all members from given rhs object.

Returns
SUCCESSFUL_RETURN
Parameters
rhsRhs object.

References SubjectTo::n, SubjectTo::noLower, SubjectTo::noUpper, SubjectTo::status, SUCCESSFUL_RETURN, and SubjectTo::type.

Referenced by SubjectTo::operator=(), and SubjectTo::SubjectTo().

◆ copy() [2/2]

returnValue Bounds::copy ( const Bounds rhs)
protected

Copies all members from given rhs object.

Returns
SUCCESSFUL_RETURN
Parameters
rhsRhs object.

References fixed, freee, and SUCCESSFUL_RETURN.

Referenced by Bounds(), and operator=().

◆ flipFixed()

returnValue Bounds::flipFixed ( int_t  number)

Flip fixed bound.

Returns
SUCCESSFUL_RETURN
RET_MOVING_BOUND_FAILED
RET_INDEX_OUT_OF_BOUNDS

References SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, RET_MOVING_BOUND_FAILED, ST_LOWER, ST_UPPER, SubjectTo::status, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by QProblem::removeBound(), and QProblemB::removeBound().

◆ getFixed()

Indexlist * Bounds::getFixed ( )
inline

◆ getFree()

Indexlist * Bounds::getFree ( )
inline

◆ getNBV()

int_t Bounds::getNBV ( ) const
inline

Returns number of bounded (but possibly free) variables.

Returns
Number of bounded (but possibly free) variables.

References SubjectTo::getNumberOfType(), and ST_BOUNDED.

◆ getNFR()

int_t Bounds::getNFR ( ) const
inline

Returns number of free variables.

Returns
Number of free variables.

References freee, and Indexlist::getLength().

Referenced by QProblemB::getNFR(), and print().

◆ getNFV()

int_t Bounds::getNFV ( ) const
inline

Returns number of implicitly fixed variables.

Returns
Number of implicitly fixed variables.

References SubjectTo::getNumberOfType(), and ST_EQUALITY.

Referenced by QProblemB::getNFV().

◆ getNFX()

int_t Bounds::getNFX ( ) const
inline

Returns number of fixed variables.

Returns
Number of fixed variables.

References fixed, and Indexlist::getLength().

Referenced by QProblemB::getNFX(), print(), QProblem::shallRefactorise(), and QProblemB::shallRefactorise().

◆ getNumberOfType()

BEGIN_NAMESPACE_QPOASES int_t SubjectTo::getNumberOfType ( SubjectToType  _type) const
inlineinherited

Returns number of constraints/bounds with given SubjectTo type.

Returns
Number of constraints/bounds with given type.
Parameters
_typeType of (constraints') bound.

References SubjectTo::n, and SubjectTo::type.

Referenced by getNBV(), Constraints::getNEC(), getNFV(), Constraints::getNIC(), Constraints::getNUC(), and getNUV().

◆ getNUV()

int_t Bounds::getNUV ( ) const
inline

Returns number of unbounded variables.

Returns
Number of unbounded variables.

References SubjectTo::getNumberOfType(), and ST_UNBOUNDED.

Referenced by SQProblemSchur::addBound(), and QProblem::addBound().

◆ getNV()

BEGIN_NAMESPACE_QPOASES int_t Bounds::getNV ( ) const
inline

Returns number of variables.

Returns
Number of variables.

References SubjectTo::n.

Referenced by QProblemB::getNV().

◆ getStatus()

SubjectToStatus SubjectTo::getStatus ( int_t  i) const
inlineinherited

Returns status of (constraints') bound.

Returns
Status of (constraints') bound
ST_UNDEFINED
Parameters
iNumber of (constraints') bound.

References SubjectTo::n, ST_UNDEFINED, and SubjectTo::status.

Referenced by SQProblemSchur::addBound(), QProblem::addBound(), SQProblemSchur::addConstraint(), QProblem::addConstraint(), SolutionAnalysis::checkCurvatureOnStronglyActiveConstraints(), QProblem::determineStepDirection(), QProblemB::determineStepDirection(), SQProblemSchur::determineStepDirection2(), QProblem::dropInfeasibles(), QProblem::ensureNonzeroCurvature(), QProblemB::getWorkingSetBounds(), QProblem::getWorkingSetConstraints(), QProblemB::init(), QProblem::init(), QProblemB::obtainAuxiliaryWorkingSet(), QProblem::obtainAuxiliaryWorkingSet(), QProblem::performDriftCorrection(), QProblemB::performDriftCorrection(), QProblemB::performRamping(), QProblem::performRamping(), QProblemB::performRatioTest(), SQProblemSchur::removeBound(), QProblem::removeBound(), QProblemB::removeBound(), SQProblemSchur::removeConstraint(), QProblem::removeConstraint(), Constraints::rotate(), rotate(), QProblem::setupAuxiliaryQP(), QProblemB::setupAuxiliaryQP(), QProblem::setupAuxiliaryQPbounds(), QProblemB::setupAuxiliaryQPbounds(), SQProblemSchur::setupAuxiliaryWorkingSet(), QProblem::setupAuxiliaryWorkingSet(), QProblemB::setupAuxiliaryWorkingSet(), SQProblem::setupNewAuxiliaryQP(), QProblem::shallRefactorise(), QProblemB::shallRefactorise(), Constraints::shift(), shift(), and QProblem::updateActivitiesForHotstart().

◆ getType()

SubjectToType SubjectTo::getType ( int_t  i) const
inlineinherited

◆ hasNoLower()

BooleanType SubjectTo::hasNoLower ( ) const
inlineinherited

Returns status of lower (constraints') bounds.

Returns
BT_TRUE if there is no lower (constraints') bound on any variable.

References SubjectTo::noLower.

Referenced by QProblem::performStep(), QProblemB::performStep(), QProblem::printProperties(), and QProblemB::printProperties().

◆ hasNoUpper()

BooleanType SubjectTo::hasNoUpper ( ) const
inlineinherited

Returns status of upper bounds.

Returns
BT_TRUE if there is no upper (constraints') bound on any variable.

References END_NAMESPACE_QPOASES, and SubjectTo::noUpper.

Referenced by QProblem::performStep(), QProblemB::performStep(), QProblem::printProperties(), and QProblemB::printProperties().

◆ init()

returnValue Bounds::init ( int_t  _n = 0)

Initialises object with given number of bounds.

Returns
SUCCESSFUL_RETURN
RET_INVALID_ARGUMENTS
Parameters
_nNumber of bounds.

References clear(), fixed, freee, SubjectTo::init(), Indexlist::init(), RET_INVALID_ARGUMENTS, and THROWERROR.

Referenced by Bounds(), QProblemB::QProblemB(), QProblemB::reset(), QProblem::setupAuxiliaryQP(), QProblemB::setupAuxiliaryQP(), and SQProblem::setupNewAuxiliaryQP().

◆ moveFixedToFree()

returnValue Bounds::moveFixedToFree ( int_t  number)

Moves index of a bound from index list of fixed to that of free bounds.

Returns
SUCCESSFUL_RETURN
RET_MOVING_BOUND_FAILED
RET_INDEX_OUT_OF_BOUNDS
Parameters
numberNumber of bound to be freed.

References SubjectTo::addIndex(), getFixed(), getFree(), SubjectTo::n, SubjectTo::removeIndex(), RET_INDEX_OUT_OF_BOUNDS, RET_MOVING_BOUND_FAILED, ST_INACTIVE, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by SolutionAnalysis::checkCurvatureOnStronglyActiveConstraints(), SQProblemSchur::removeBound(), QProblem::removeBound(), QProblemB::removeBound(), and SQProblemSchur::setupAuxiliaryWorkingSet().

◆ moveFreeToFixed()

returnValue Bounds::moveFreeToFixed ( int_t  number,
SubjectToStatus  _status 
)

Moves index of a bound from index list of free to that of fixed bounds.

Returns
SUCCESSFUL_RETURN
RET_MOVING_BOUND_FAILED
RET_INDEX_OUT_OF_BOUNDS
Parameters
numberNumber of bound to be fixed.
_statusStatus of bound to be fixed.

References SubjectTo::addIndex(), getFixed(), getFree(), SubjectTo::n, SubjectTo::removeIndex(), RET_INDEX_OUT_OF_BOUNDS, RET_MOVING_BOUND_FAILED, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by SQProblemSchur::addBound(), QProblem::addBound(), QProblemB::addBound(), SolutionAnalysis::checkCurvatureOnStronglyActiveConstraints(), SQProblemSchur::setupAuxiliaryWorkingSet(), and QProblem::setupAuxiliaryWorkingSet().

◆ operator=()

Bounds & Bounds::operator= ( const Bounds rhs)

Assignment operator (deep copy).

Parameters
rhsRhs object.

References clear(), copy(), and SubjectTo::operator=().

◆ print()

returnValue Bounds::print ( )

Prints information on bounds object (in particular, lists of free and fixed bounds.

Returns
SUCCESSFUL_RETURN
RET_INDEXLIST_CORRUPTED

References getFixed(), getFree(), getNFR(), getNFX(), Indexlist::getNumberArray(), MAX_STRING_LENGTH, myPrintf(), SubjectTo::n, REFER_NAMESPACE_QPOASES, and SUCCESSFUL_RETURN.

◆ removeIndex()

returnValue SubjectTo::removeIndex ( Indexlist *const  indexlist,
int_t  removenumber 
)
protectedinherited

Removes the index of a constraint or bound from index set.

Returns
SUCCESSFUL_RETURN
RET_REMOVEINDEX_FAILED
RET_INVALID_ARGUMENTS
Parameters
indexlistIndex list from which the new index shall be removed.
removenumberNumber of constraint or bound to be removed.

References Indexlist::removeNumber(), RET_INVALID_ARGUMENTS, RET_REMOVEINDEX_FAILED, ST_UNDEFINED, SubjectTo::status, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by Constraints::moveActiveToInactive(), moveFixedToFree(), moveFreeToFixed(), and Constraints::moveInactiveToActive().

◆ rotate()

returnValue Bounds::rotate ( int_t  offset)
virtual

Rotates forward type and status of all bounds by a given offset. This offset has to lie within the range [0,n]. Example for offset = 2:
rotate( {b1,b2,b3,b4,b5,b6} ) = {b3,b4,b5,b6,b1,b2}

Returns
SUCCESSFUL_RETURN
RET_INDEX_OUT_OF_BOUNDS
RET_ROTATING_FAILED
Parameters
offsetRotation offset within the range [0,n].

Implements SubjectTo.

References Indexlist::addNumber(), fixed, freee, SubjectTo::getStatus(), SubjectTo::getType(), SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, RET_ROTATING_FAILED, SubjectTo::setStatus(), SubjectTo::setType(), ST_INACTIVE, ST_LOWER, ST_UPPER, SUCCESSFUL_RETURN, and THROWERROR.

◆ setNoLower()

void SubjectTo::setNoLower ( BooleanType  _status)
inlineinherited

Sets status of lower (constraints') bounds.

Parameters
_statusStatus of lower (constraints') bounds.

References SubjectTo::noLower.

Referenced by QProblemB::setupSubjectToType(), and QProblem::setupSubjectToType().

◆ setNoUpper()

void SubjectTo::setNoUpper ( BooleanType  _status)
inlineinherited

Sets status of upper (constraints') bounds.

Parameters
_statusStatus of upper (constraints') bounds.

References SubjectTo::noUpper.

Referenced by QProblemB::setupSubjectToType(), and QProblem::setupSubjectToType().

◆ setStatus()

returnValue SubjectTo::setStatus ( int_t  i,
SubjectToStatus  value 
)
inlineinherited

Sets status of (constraints') bound.

Returns
SUCCESSFUL_RETURN
RET_INDEX_OUT_OF_BOUNDS
Parameters
iNumber of (constraints') bound.
valueStatus of (constraints') bound.

References SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, SubjectTo::status, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by QProblem::dropInfeasibles(), Constraints::rotate(), rotate(), SQProblem::setupNewAuxiliaryQP(), Constraints::shift(), and shift().

◆ setType()

returnValue SubjectTo::setType ( int_t  i,
SubjectToType  value 
)
inlineinherited

Sets type of (constraints') bound.

Returns
SUCCESSFUL_RETURN
RET_INDEX_OUT_OF_BOUNDS
Parameters
iNumber of (constraints') bound.
valueType of (constraints') bound.

References SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, SUCCESSFUL_RETURN, THROWERROR, and SubjectTo::type.

Referenced by Constraints::rotate(), rotate(), QProblem::setA(), QProblem::setupAuxiliaryWorkingSet(), QProblemB::setupSubjectToType(), QProblem::setupSubjectToType(), Constraints::shift(), and shift().

◆ setupAll()

returnValue Bounds::setupAll ( SubjectToStatus  _status)
protected

Initially adds all numbers of new (i.e. not yet in the list) bounds to to the index set corresponding to the desired status; the order depends on the SujectToType of each index.

Returns
SUCCESSFUL_RETURN
RET_SETUP_BOUND_FAILED
Parameters
_statusDesired initial status for all bounds.

References END_NAMESPACE_QPOASES, SubjectTo::getType(), SubjectTo::n, RET_SETUP_BOUND_FAILED, setupBound(), ST_BOUNDED, ST_DISABLED, ST_EQUALITY, ST_UNBOUNDED, ST_UNKNOWN, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by setupAllFree(), setupAllLower(), and setupAllUpper().

◆ setupAllFree()

returnValue Bounds::setupAllFree ( )

Initially adds all numbers of new (i.e. not yet in the list) bounds to to the index set of free bounds; the order depends on the SujectToType of each index.

Returns
SUCCESSFUL_RETURN
RET_SETUP_BOUND_FAILED

References setupAll(), and ST_INACTIVE.

Referenced by QProblem::setupAuxiliaryQP(), QProblemB::setupAuxiliaryQP(), SQProblem::setupNewAuxiliaryQP(), QProblem::solveInitialQP(), and QProblemB::solveInitialQP().

◆ setupAllLower()

returnValue Bounds::setupAllLower ( )

Initially adds all numbers of new (i.e. not yet in the list) bounds to to the index set of fixed bounds (on their lower bounds); the order depends on the SujectToType of each index.

Returns
SUCCESSFUL_RETURN
RET_SETUP_BOUND_FAILED

References setupAll(), and ST_LOWER.

◆ setupAllUpper()

returnValue Bounds::setupAllUpper ( )

Initially adds all numbers of new (i.e. not yet in the list) bounds to to the index set of fixed bounds (on their upper bounds); the order depends on the SujectToType of each index.

Returns
SUCCESSFUL_RETURN
RET_SETUP_BOUND_FAILED

References setupAll(), and ST_UPPER.

◆ setupBound()

returnValue Bounds::setupBound ( int_t  number,
SubjectToStatus  _status 
)

Initially adds number of a new (i.e. not yet in the list) bound to given index set.

Returns
SUCCESSFUL_RETURN
RET_SETUP_BOUND_FAILED
RET_INDEX_OUT_OF_BOUNDS
RET_INVALID_ARGUMENTS
Parameters
numberNumber of new bound.
_statusStatus of new bound.

References SubjectTo::addIndex(), getFixed(), getFree(), SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, RET_INVALID_ARGUMENTS, RET_SETUP_BOUND_FAILED, ST_INACTIVE, ST_LOWER, ST_UPPER, SUCCESSFUL_RETURN, and THROWERROR.

Referenced by QProblemB::obtainAuxiliaryWorkingSet(), and setupAll().

◆ shift()

returnValue Bounds::shift ( int_t  offset)
virtual

Shifts forward type and status of all bounds by a given offset. This offset has to lie within the range [0,n/2] and has to be an integer divisor of the total number of bounds n. Type and status of the first <offset> bounds is thrown away, type and status of the last <offset> bounds is doubled, e.g. for offset = 2:
shift( {b1,b2,b3,b4,b5,b6} ) = {b3,b4,b5,b6,b5,b6}

Returns
SUCCESSFUL_RETURN
RET_INDEX_OUT_OF_BOUNDS
RET_INVALID_ARGUMENTS
RET_SHIFTING_FAILED
Parameters
offsetShift offset within the range [0,n/2] and integer divisor of n.

Implements SubjectTo.

References Indexlist::addNumber(), fixed, freee, SubjectTo::getStatus(), SubjectTo::getType(), SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, RET_INVALID_ARGUMENTS, RET_SHIFTING_FAILED, SubjectTo::setStatus(), SubjectTo::setType(), ST_INACTIVE, ST_LOWER, ST_UPPER, SUCCESSFUL_RETURN, and THROWERROR.

◆ swapFree()

returnValue Bounds::swapFree ( int_t  number1,
int_t  number2 
)

Swaps the indices of two free bounds within the index set.

Returns
SUCCESSFUL_RETURN
RET_SWAPINDEX_FAILED
Parameters
number1Number of first constraint or bound.
number2Number of second constraint or bound.

References getFree(), SubjectTo::n, RET_INDEX_OUT_OF_BOUNDS, SubjectTo::swapIndex(), and THROWERROR.

Referenced by QProblem::addBound().

◆ swapIndex()

returnValue SubjectTo::swapIndex ( Indexlist *const  indexlist,
int_t  number1,
int_t  number2 
)
protectedinherited

Swaps the indices of two constraints or bounds within the index set.

Returns
SUCCESSFUL_RETURN
RET_SWAPINDEX_FAILED
RET_INVALID_ARGUMENTS
Parameters
indexlistIndex list in which the indices shold be swapped.
number1Number of first constraint or bound.
number2Number of second constraint or bound.

References END_NAMESPACE_QPOASES, RET_INVALID_ARGUMENTS, RET_NOTHING_TO_DO, RET_SWAPINDEX_FAILED, SubjectTo::status, SUCCESSFUL_RETURN, Indexlist::swapNumbers(), THROWERROR, and THROWWARNING.

Referenced by swapFree().

Member Data Documentation

◆ fixed

Indexlist Bounds::fixed
protected

Index list of fixed variables.

Referenced by copy(), getFixed(), getNFX(), init(), rotate(), and shift().

◆ freee

Indexlist Bounds::freee
protected

Index list of free variables.

Referenced by copy(), getFree(), getNFR(), init(), rotate(), and shift().

◆ n

int_t SubjectTo::n
protectedinherited

◆ noLower

BooleanType SubjectTo::noLower
protectedinherited

This flag indicates if there is no lower bound on any variable.

Referenced by SubjectTo::copy(), SubjectTo::hasNoLower(), SubjectTo::init(), and SubjectTo::setNoLower().

◆ noUpper

BooleanType SubjectTo::noUpper
protectedinherited

This flag indicates if there is no upper bound on any variable.

Referenced by SubjectTo::copy(), SubjectTo::hasNoUpper(), SubjectTo::init(), and SubjectTo::setNoUpper().

◆ status

SubjectToStatus* SubjectTo::status
protectedinherited

◆ type

SubjectToType* SubjectTo::type
protectedinherited

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