qpOASES
3.2.1
An Implementation of the Online Active Set Strategy
|
Stores and manages index lists. More...
#include <Indexlist.hpp>
Public Member Functions | |
Indexlist () | |
Indexlist (int_t n) | |
Indexlist (const Indexlist &rhs) | |
~Indexlist () | |
Indexlist & | operator= (const Indexlist &rhs) |
returnValue | init (int_t n=0) |
returnValue | getNumberArray (int_t **const numberarray) const |
returnValue | getISortArray (int_t **const iSortArray) const |
int_t | getIndex (int_t givennumber) const |
int_t | getNumber (int_t physicalindex) const |
int_t | getLength () const |
int_t | getLastNumber () const |
returnValue | addNumber (int_t addnumber) |
returnValue | removeNumber (int_t removenumber) |
returnValue | swapNumbers (int_t number1, int_t number2) |
BooleanType | isMember (int_t _number) const |
Protected Member Functions | |
returnValue | clear () |
returnValue | copy (const Indexlist &rhs) |
int_t | findInsert (int_t i) const |
Protected Attributes | |
int_t * | number |
int_t * | iSort |
int_t | length |
int_t | first |
int_t | last |
int_t | lastusedindex |
int_t | physicallength |
Friends | |
class | DenseMatrix |
class | SymDenseMat |
class | SparseMatrix |
class | SparseMatrixRow |
class | SymSparseMat |
This class manages index lists of active/inactive bounds/constraints.
Indexlist::Indexlist | ( | const Indexlist & | rhs | ) |
Destructor.
References clear().
returnValue Indexlist::addNumber | ( | int_t | addnumber | ) |
Adds number to index list.
addnumber | Number to be added. |
References findInsert(), iSort, length, number, physicallength, RET_INDEXLIST_EXCEEDS_MAX_LENGTH, SUCCESSFUL_RETURN, and THROWERROR.
Referenced by SubjectTo::addIndex(), Constraints::rotate(), Bounds::rotate(), Constraints::shift(), and Bounds::shift().
returnValue Indexlist::clear | ( | ) | [protected] |
Frees all allocated memory.
References iSort, number, and SUCCESSFUL_RETURN.
Referenced by init(), operator=(), and ~Indexlist().
returnValue Indexlist::copy | ( | const Indexlist & | rhs | ) | [protected] |
Copies all members from given rhs object.
rhs | Rhs object. |
References iSort, length, number, physicallength, and SUCCESSFUL_RETURN.
Referenced by Indexlist(), and operator=().
int_t Indexlist::findInsert | ( | int_t | i | ) | const [protected] |
Find first index j between -1 and length in sorted list of indices iSort such that numbers[iSort[j]] <= i < numbers[iSort[j+1]]. Uses bisection.
References iSort, length, and number.
Referenced by addNumber(), getIndex(), removeNumber(), and swapNumbers().
int_t Indexlist::getIndex | ( | int_t | givennumber | ) | const |
Determines the index within the index list at which a given number is stored.
givennumber | Number whose index shall be determined. |
References findInsert(), iSort, and number.
Referenced by QProblemB::addBound(), isMember(), SQProblemSchur::removeConstraint(), and QProblem::removeConstraint().
returnValue Indexlist::getISortArray | ( | int_t **const | iSortArray | ) | const |
Creates an array of all numbers within the index set in correct order.
iSortArray | Output: iSort Array. |
References iSort, and SUCCESSFUL_RETURN.
Referenced by SQProblemSchur::determineStepDirection2().
int_t Indexlist::getLastNumber | ( | ) | const [inline] |
Returns last number within the index list.
References length, and number.
Referenced by QProblem::addBound().
int_t Indexlist::getLength | ( | ) | const [inline] |
Returns the current length of the index list.
References length.
Referenced by SQProblemSchur::addBound(), SQProblemSchur::addConstraint(), SQProblemSchur::addToSchurComplement(), SQProblemSchur::determineStepDirection2(), Constraints::getNAC(), Bounds::getNFR(), Bounds::getNFX(), Constraints::getNIAC(), Matrix::getSparseSubmatrix(), SQProblemSchur::removeBound(), and SQProblemSchur::removeConstraint().
BEGIN_NAMESPACE_QPOASES int_t Indexlist::getNumber | ( | int_t | physicalindex | ) | const [inline] |
Returns the number stored at a given physical index.
physicalindex | Physical index of the number to be returned. |
References length, number, and RET_INDEXLIST_OUTOFBOUNDS.
Referenced by SQProblemSchur::repairSingularWorkingSet().
returnValue Indexlist::getNumberArray | ( | int_t **const | numberarray | ) | const |
Creates an array of all numbers within the index set in correct order.
numberarray | Output: Array of numbers (NULL on error). |
References number, RET_INVALID_ARGUMENTS, SUCCESSFUL_RETURN, and THROWERROR.
Referenced by SQProblemSchur::addBound(), QProblem::addBound(), SQProblemSchur::addBound_checkLISchur(), SQProblemSchur::addBound_ensureLI(), QProblem::addBound_ensureLI(), SQProblemSchur::addConstraint(), QProblem::addConstraint(), QProblem::addConstraint_checkLI(), SQProblemSchur::addConstraint_checkLISchur(), SQProblemSchur::addConstraint_ensureLI(), QProblem::addConstraint_ensureLI(), SolutionAnalysis::checkCurvatureOnStronglyActiveConstraints(), QProblemB::computeCholesky(), QProblem::computeProjectedCholesky(), SQProblemSchur::correctInertia(), QProblemB::determineDataShift(), QProblem::determineDataShift(), QProblem::determineStepDirection(), QProblemB::determineStepDirection(), SQProblemSchur::determineStepDirection2(), QProblem::dropInfeasibles(), QProblem::ensureNonzeroCurvature(), QProblem::getFreeVariablesFlags(), Matrix::getSparseSubmatrix(), SolutionAnalysis::getVarianceCovariance(), QProblem::performStep(), QProblemB::performStep(), Constraints::print(), Bounds::print(), SQProblemSchur::removeBound(), QProblem::removeBound(), QProblemB::removeBound(), SQProblemSchur::removeConstraint(), QProblem::removeConstraint(), QProblem::setupTQfactorisation(), QProblem::solveCurrentEQP(), and QProblem::writeQpWorkspaceIntoMatFile().
returnValue Indexlist::init | ( | int_t | n = 0 | ) |
Initialises index list of desired physical length.
n | Physical length of index list. |
References clear(), iSort, length, number, physicallength, RET_INVALID_ARGUMENTS, SUCCESSFUL_RETURN, and THROWERROR.
Referenced by Indexlist(), Bounds::init(), and Constraints::init().
BooleanType Indexlist::isMember | ( | int_t | _number | ) | const [inline] |
Determines if a given number is contained in the index set.
_number | Number to be tested for membership. |
References BT_FALSE, BT_TRUE, and getIndex().
returnValue Indexlist::removeNumber | ( | int_t | removenumber | ) |
Removes number from index list.
removenumber | Number to be removed. |
References findInsert(), iSort, length, number, and SUCCESSFUL_RETURN.
Referenced by SubjectTo::removeIndex().
returnValue Indexlist::swapNumbers | ( | int_t | number1, |
int_t | number2 | ||
) |
Swaps two numbers within index list.
number1 | First number for swapping. |
number2 | Second number for swapping. |
References findInsert(), iSort, number, RET_INDEXLIST_CORRUPTED, SUCCESSFUL_RETURN, and THROWERROR.
Referenced by SubjectTo::swapIndex().
int_t Indexlist::first [protected] |
Physical index of first element.
int_t* Indexlist::iSort [protected] |
Index list to sort vector number
Referenced by addNumber(), SymSparseMat::bilinear(), clear(), copy(), findInsert(), SparseMatrix::getCol(), SparseMatrixRow::getCol(), getIndex(), getISortArray(), SparseMatrix::getRow(), SparseMatrixRow::getRow(), Indexlist(), init(), removeNumber(), swapNumbers(), DenseMatrix::times(), SparseMatrix::times(), SparseMatrixRow::times(), DenseMatrix::transTimes(), SparseMatrix::transTimes(), and SparseMatrixRow::transTimes().
int_t Indexlist::last [protected] |
Physical index of last element.
int_t Indexlist::lastusedindex [protected] |
Physical index of last entry in index list.
int_t Indexlist::length [protected] |
Length of index list.
Referenced by addNumber(), SymDenseMat::bilinear(), SymSparseMat::bilinear(), copy(), findInsert(), DenseMatrix::getCol(), SparseMatrixRow::getCol(), getLastNumber(), getLength(), getNumber(), DenseMatrix::getRow(), SparseMatrix::getRow(), init(), removeNumber(), DenseMatrix::times(), SparseMatrix::times(), SparseMatrixRow::times(), DenseMatrix::transTimes(), SparseMatrix::transTimes(), and SparseMatrixRow::transTimes().
int_t* Indexlist::number [protected] |
Array to store numbers of constraints or bounds.
Referenced by addNumber(), SymDenseMat::bilinear(), SymSparseMat::bilinear(), clear(), copy(), findInsert(), DenseMatrix::getCol(), SparseMatrix::getCol(), SparseMatrixRow::getCol(), getIndex(), getLastNumber(), getNumber(), getNumberArray(), DenseMatrix::getRow(), SparseMatrix::getRow(), SparseMatrixRow::getRow(), Indexlist(), init(), removeNumber(), swapNumbers(), DenseMatrix::times(), SparseMatrix::times(), SparseMatrixRow::times(), DenseMatrix::transTimes(), SparseMatrix::transTimes(), and SparseMatrixRow::transTimes().
int_t Indexlist::physicallength [protected] |
Physical length of index list.
Referenced by addNumber(), copy(), and init().