qpOASES 3.2.1
An Implementation of the Online Active Set Strategy
|
Abstract base class for interfacing tailored matrix-vector operations. More...
#include <Matrices.hpp>
Public Member Functions | |
Matrix () | |
virtual | ~Matrix () |
virtual void | free ()=0 |
virtual Matrix * | duplicate () const =0 |
virtual real_t | diag (int_t i) const =0 |
virtual BooleanType | isDiag () const =0 |
virtual real_t | getNorm (int_t type=2) const =0 |
virtual real_t | getRowNorm (int_t rNum, int_t type=2) const =0 |
virtual returnValue | getRowNorm (real_t *norm, int_t type=2) const =0 |
virtual returnValue | getRow (int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const =0 |
virtual returnValue | getCol (int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const =0 |
virtual returnValue | getSparseSubmatrix (const Indexlist *const irows, const Indexlist *const icols, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const |
virtual returnValue | getSparseSubmatrix (const Indexlist *const irows, int_t idx_icol, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const |
virtual returnValue | getSparseSubmatrix (int_t idx_row, const Indexlist *const icols, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const |
virtual returnValue | getSparseSubmatrix (int_t irowsLength, const int_t *const irowsNumber, int_t icolsLength, const int_t *const icolsNumber, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const =0 |
virtual returnValue | times (int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0 |
virtual returnValue | transTimes (int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0 |
virtual returnValue | times (const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD, BooleanType yCompr=BT_TRUE) const =0 |
virtual returnValue | transTimes (const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const =0 |
virtual returnValue | addToDiag (real_t alpha)=0 |
virtual real_t * | full () const =0 |
virtual returnValue | print (const char *name=0) const =0 |
virtual returnValue | writeToFile (FILE *output_file, const char *prefix) const =0 |
BooleanType | needToFreeMemory () const |
void | doFreeMemory () |
void | doNotFreeMemory () |
Protected Attributes | |
BooleanType | freeMemory |
Abstract base matrix class. Supplies interface to matrix vector products, including products with submatrices given by (ordered) working set index lists (see SubjectTo).
|
inline |
Default constructor.
References doNotFreeMemory().
|
inlinevirtual |
Destructor.
|
pure virtual |
Adds given offset to diagonal of matrix.
alpha | Diagonal offset. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::regulariseHessian().
Returns i-th diagonal entry.
i | Index. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::determineHessianType(), QProblemB::removeBound(), and QProblem::removeBound().
|
inline |
Enables de-allocation of internal memory.
References BT_TRUE, and freeMemory.
Referenced by QProblemB::createDiagSparseMat(), DenseMatrix::duplicate(), SparseMatrix::duplicate(), SparseMatrixRow::duplicate(), SymDenseMat::duplicateSym(), SymSparseMat::duplicateSym(), QProblem::setupQPdataFromFile(), QProblemB::setupQPdataFromFile(), solveOqpBenchmark(), SparseMatrix::SparseMatrix(), and SparseMatrixRow::SparseMatrixRow().
|
inline |
Disables de-allocation of internal memory.
References BT_FALSE, and freeMemory.
Referenced by SparseMatrix::free(), SparseMatrixRow::free(), Matrix(), SparseMatrix::SparseMatrix(), and SparseMatrixRow::SparseMatrixRow().
|
pure virtual |
Returns a deep-copy of the Matrix object.
Implemented in DenseMatrix, SymDenseMat, SparseMatrix, SparseMatrixRow, and SymSparseMat.
Referenced by QProblem::copy().
|
pure virtual |
Frees all internal memory.
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
pure virtual |
Allocates and creates dense matrix array in row major format.
Note: Calling function has to free allocated memory!
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by SolutionAnalysis::getKktViolation(), and QProblem::writeQpDataIntoMatFile().
|
pure virtual |
Retrieve indexed entries of matrix column multiplied by alpha.
cNum | Column number. |
irows | Index list specifying rows. |
alpha | Scalar factor. |
col | Output column vector. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::computeCholesky(), QProblem::computeProjectedCholesky(), and QProblem::removeBound().
Get the N-norm of the matrix
type | Norm type, 1: one-norm, 2: Euclidean norm. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::regulariseHessian().
|
pure virtual |
Retrieve indexed entries of matrix row multiplied by alpha.
rNum | Row number. |
icols | Index list specifying columns. |
alpha | Scalar factor. |
row | Output row vector. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblem::addConstraint(), QProblem::addConstraint_checkLI(), SQProblemSchur::addConstraint_checkLISchur(), QProblem::addConstraint_ensureLI(), and QProblemB::removeBound().
Get the N-norm of a row
rNum | Row number. |
type | Norm type, 1: one-norm, 2: Euclidean norm. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblem::setA().
|
pure virtual |
Get the N-norm of all rows
norm | Norm of each row. |
type | Norm type, 1: one-norm, 2: Euclidean norm. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
virtual |
Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return.
irows | Index list specifying rows. |
icols | Index list specifying columns. |
rowoffset | Offset for row entries. |
coloffset | Offset for row entries. |
numNonzeros | Number of nonzeros in submatrix. |
irn | Row position of entries (as position in irows) plus rowoffset. |
jcn | Column position of entries (as position in irows) plus coloffset. |
avals | Numerical values of the entries. |
only_lower_triangular | if true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols. |
References Indexlist::getLength(), Indexlist::getNumberArray(), and getSparseSubmatrix().
Referenced by SQProblemSchur::addConstraint(), getSparseSubmatrix(), SQProblemSchur::removeBound(), and SQProblemSchur::resetSchurComplement().
|
virtual |
Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return. This version retrieves one column.
irows | Index list specifying rows. |
idx_icol | Index list specifying columns. |
rowoffset | Offset for row entries. |
coloffset | Offset for row entries. |
numNonzeros | Number of nonzeros in submatrix. |
irn | Row position of entries (as position in irows) plus rowoffset. |
jcn | Column position of entries (as position in irows) plus coloffset. |
avals | Numerical values of the entries. |
only_lower_triangular | if true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols. |
References Indexlist::getLength(), Indexlist::getNumberArray(), and getSparseSubmatrix().
|
virtual |
Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return. This version retrieves one row.
idx_row | Row number. |
icols | Index list specifying columns. |
rowoffset | Offset for row entries. |
coloffset | Offset for row entries. |
numNonzeros | Number of nonzeros in submatrix. |
irn | Row position of entries (as position in irows) plus rowoffset. |
jcn | Column position of entries (as position in irows) plus coloffset. |
avals | Numerical values of the entries. |
only_lower_triangular | if true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols. |
References Indexlist::getLength(), Indexlist::getNumberArray(), and getSparseSubmatrix().
|
pure virtual |
Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return.
irowsLength | Number of rows. |
irowsNumber | Array with row numbers. |
icolsLength | Number of columns. |
icolsNumber | Array with column numbers. |
rowoffset | Offset for row entries. |
coloffset | Offset for row entries. |
numNonzeros | Number of nonzeros in submatrix. |
irn | Row position of entries (as position in irows) plus rowoffset. |
jcn | Column position of entries (as position in irows) plus coloffset. |
avals | Numerical values of the entries. |
only_lower_triangular | if true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
pure virtual |
Checks whether matrix is square and diagonal.
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::determineHessianType().
|
inline |
Returns whether internal memory needs to be de-allocated.
References freeMemory.
Referenced by DenseMatrix::duplicate(), SymDenseMat::duplicateSym(), DenseMatrix::~DenseMatrix(), SparseMatrix::~SparseMatrix(), and SparseMatrixRow::~SparseMatrixRow().
|
pure virtual |
Prints matrix to screen.
name | Name of matrix. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
pure virtual |
Evaluate matrix vector product with submatrix given by Indexlist.
irows | Index list specifying rows. |
icols | Index list specifying columns. |
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
yCompr | Compressed storage for y. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
pure virtual |
Evaluate Y=alpha*A*X + beta*Y.
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblemB::determineStepDirection(), QProblem::determineStepDirection(), QProblem::ensureNonzeroCurvature(), QProblemB::getObjVal(), QProblem::performStep(), QProblem::printIteration(), QProblemB::printIteration(), QProblem::removeBound(), QProblem::removeConstraint(), QProblem::setA(), QProblem::setupAuxiliaryQP(), QProblem::setupAuxiliaryQPgradient(), QProblemB::setupAuxiliaryQPgradient(), and QProblem::setupAuxiliaryQPsolution().
|
pure virtual |
Evaluate matrix transpose vector product.
irows | Index list specifying rows. |
icols | Index list specifying columns. |
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
|
pure virtual |
Evaluate Y=alpha*A'*X + beta*Y.
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblem::addBound_ensureLI(), QProblem::addConstraint_ensureLI(), QProblem::determineStepDirection(), QProblem::printIteration(), and QProblem::setupAuxiliaryQPgradient().
|
pure virtual |
Write matrix to file.
Implemented in DenseMatrix, SparseMatrix, and SparseMatrixRow.
Referenced by QProblem::setupQPdata().
|
protected |
Indicating whether internal memory needs to be de-allocated.
Referenced by doFreeMemory(), doNotFreeMemory(), and needToFreeMemory().