qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
Functions
Utils.cpp File Reference
#include <math.h>
#include <qpOASES/Utils.hpp>

Functions

BEGIN_NAMESPACE_QPOASES returnValue print (const real_t *const v, int_t n, const char *name)
 
returnValue print (const real_t *const v, int_t n, const int_t *const V_idx, const char *name)
 
returnValue print (const real_t *const M, int_t nrow, int_t ncol, const char *name)
 
returnValue print (const real_t *const M, int_t nrow, int_t ncol, const int_t *const ROW_idx, const int_t *const COL_idx, const char *name)
 
returnValue print (const int_t *const index, int_t n, const char *name)
 
returnValue myPrintf (const char *s)
 
returnValue printCopyrightNotice ()
 
returnValue readFromFile (real_t *data, int_t nrow, int_t ncol, const char *datafilename)
 
returnValue readFromFile (real_t *data, int_t n, const char *datafilename)
 
returnValue readFromFile (int_t *data, int_t n, const char *datafilename)
 
returnValue writeIntoFile (const real_t *const data, int_t nrow, int_t ncol, const char *datafilename, BooleanType append)
 
returnValue writeIntoFile (const real_t *const data, int_t n, const char *datafilename, BooleanType append)
 
returnValue writeIntoFile (const int_t *const integer, int_t n, const char *datafilename, BooleanType append)
 
returnValue writeIntoMatFile (FILE *const matFile, const real_t *const data, int_t nRows, int_t nCols, const char *name)
 
returnValue writeIntoMatFile (FILE *const matFile, const int_t *const data, int_t nRows, int_t nCols, const char *name)
 
real_t getCPUtime ()
 
real_t getNorm (const real_t *const v, int_t n, int_t type)
 
returnValue getKktViolation (int_t nV, int_t nC, 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, const real_t *const x, const real_t *const y, real_t &stat, real_t &feas, real_t &cmpl, const real_t *const workingSetB, const real_t *const workingSetC, BooleanType hasIdentityHessian)
 
returnValue getKktViolation (int_t nV, const real_t *const H, const real_t *const g, const real_t *const lb, const real_t *const ub, const real_t *const x, const real_t *const y, real_t &stat, real_t &feas, real_t &cmpl, const real_t *const workingSetB, BooleanType hasIdentityHessian)
 
returnValue convertBooleanTypeToString (BooleanType value, char *const string)
 
returnValue convertSubjectToStatusToString (SubjectToStatus value, char *const string)
 
returnValue convertPrintLevelToString (PrintLevel value, char *const string)
 
int_t getSimpleStatus (returnValue returnvalue, BooleanType doPrintStatus)
 
returnValue normaliseConstraints (int_t nV, int_t nC, real_t *A, real_t *lbA, real_t *ubA, int_t type)
 

Detailed Description

Author
Hans Joachim Ferreau, Andreas Potschka, Christian Kirches (thanks to Eckhard Arnold)
Version
3.2
Date
2007-2017

Implementation of some utility functions for working with qpOASES.

Function Documentation

◆ convertBooleanTypeToString()

returnValue convertBooleanTypeToString ( BooleanType  value,
char *const  string 
)

Writes a value of BooleanType into a string.

Returns
SUCCESSFUL_RETURN
Parameters
valueValue to be written.
stringInput: String of sufficient size,
Output: String containing value.

References BT_FALSE, and SUCCESSFUL_RETURN.

Referenced by Options::print().

◆ convertPrintLevelToString()

returnValue convertPrintLevelToString ( PrintLevel  value,
char *const  string 
)

Writes a value of PrintLevel into a string.

Returns
SUCCESSFUL_RETURN
Parameters
valueValue to be written.
stringInput: String of sufficient size,
Output: String containing value.

References PL_DEBUG_ITER, PL_HIGH, PL_LOW, PL_MEDIUM, PL_NONE, PL_TABULAR, and SUCCESSFUL_RETURN.

Referenced by Options::print().

◆ convertSubjectToStatusToString()

returnValue convertSubjectToStatusToString ( SubjectToStatus  value,
char *const  string 
)

Writes a value of SubjectToStatus into a string.

Returns
SUCCESSFUL_RETURN
Parameters
valueValue to be written.
stringInput: String of sufficient size,
Output: String containing value.

References ST_INACTIVE, ST_INFEASIBLE_LOWER, ST_INFEASIBLE_UPPER, ST_LOWER, ST_UNDEFINED, ST_UPPER, and SUCCESSFUL_RETURN.

Referenced by Options::print().

◆ getCPUtime()

real_t getCPUtime ( )

◆ getKktViolation() [1/2]

returnValue getKktViolation ( int_t  nV,
int_t  nC,
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,
const real_t *const  x,
const real_t *const  y,
real_t stat,
real_t feas,
real_t cmpl,
const real_t *const  workingSetB = 0,
const real_t *const  workingSetC = 0,
BooleanType  hasIdentityHessian = BT_FALSE 
)

Computes the maximum violation of the KKT optimality conditions of given iterate for given QP data.

Parameters
nVNumber of variables.
nCNumber of constraints.
HHessian matrix (may be NULL if Hessian is zero or identity matrix).
gGradient vector.
AConstraint matrix.
lbLower bound vector (on variables).
ubUpper bound vector (on variables).
lbALower constraints' bound vector.
ubAUpper constraints' bound vector.
xPrimal trial vector.
yDual trial vector.
statOutput: maximum value of stationarity condition residual.
feasOutput: maximum value of primal feasibility violation.
cmplOutput: maximum value of complementarity residual.
workingSetBWorking set of bounds (used to determine active bounds).
workingSetCWorking set of constraints (used to determine active constraints).
hasIdentityHessianIndicating whether Hessian matrix is identity matrix or not if NULL pointer is passed.

References BT_TRUE, EPS, getAbs(), isEqual(), real_t, and SUCCESSFUL_RETURN.

Referenced by getKktViolation(), and solveOqpBenchmark().

◆ getKktViolation() [2/2]

returnValue getKktViolation ( int_t  nV,
const real_t *const  H,
const real_t *const  g,
const real_t *const  lb,
const real_t *const  ub,
const real_t *const  x,
const real_t *const  y,
real_t stat,
real_t feas,
real_t cmpl,
const real_t *const  workingSetB = 0,
BooleanType  hasIdentityHessian = BT_FALSE 
)

Computes the maximum violation of the KKT optimality conditions of given iterate for given QP data.

Parameters
nVNumber of variables.
HHessian matrix (may be NULL if Hessian is zero or identity matrix).
gGradient vector.
lbLower bound vector (on variables).
ubUpper bound vector (on variables).
xPrimal trial vector.
yDual trial vector.
statOutput: maximum value of stationarity condition residual.
feasOutput: maximum value of primal feasibility violation.
cmplOutput: maximum value of complementarity residual.
workingSetBWorking set of bounds (used to determine active bounds).
hasIdentityHessianIndicating whether Hessian matrix is identity matrix or not if NULL pointer is passed

References getKktViolation().

◆ getNorm()

real_t getNorm ( const real_t *const  v,
int_t  n,
int_t  type = 2 
)

Returns the N-norm of a vector.

Returns
>= 0.0: successful
Parameters
vVector.
nVector's dimension.
typeNorm type, 1: one-norm, 2: Euclidean norm.

References getAbs(), getSqrt(), INFTY, real_t, RET_INVALID_ARGUMENTS, and THROWERROR.

Referenced by normaliseConstraints(), and QProblemB::regulariseHessian().

◆ getSimpleStatus()

int_t getSimpleStatus ( returnValue  returnvalue,
BooleanType  doPrintStatus = BT_FALSE 
)

Converts a returnValue from an (S)QProblem(B) object into a more simple status flag.

Returns
0: QP problem solved 1: QP could not be solved within given number of iterations -1: QP could not be solved due to an internal error -2: QP is infeasible (and thus could not be solved) -3: QP is unbounded (and thus could not be solved)
Parameters
returnvalueReturnValue to be analysed.
doPrintStatusFlag indicating whether simple status shall be printed to screen.

References BT_TRUE, getGlobalMessageHandler(), MessageHandling::getInfoVisibilityStatus(), RET_HOTSTART_STOPPED_INFEASIBILITY, RET_HOTSTART_STOPPED_UNBOUNDEDNESS, RET_INIT_FAILED_INFEASIBILITY, RET_INIT_FAILED_UNBOUNDEDNESS, RET_MAX_NWSR_REACHED, RET_SIMPLE_STATUS_P0, MessageHandling::setErrorCount(), MessageHandling::setInfoVisibilityStatus(), SUCCESSFUL_RETURN, THROWINFO, and VS_VISIBLE.

◆ myPrintf()

returnValue myPrintf ( const char *  s)

◆ normaliseConstraints()

returnValue normaliseConstraints ( int_t  nV,
int_t  nC,
real_t A,
real_t lbA,
real_t ubA,
int_t  type = 1 
)

Normalises QP constraints.

Returns
SUCCESSFUL_RETURN
RET_INVALID_ARGUMENTS
Parameters
nVNumber of variables.
nCNumber of constraints.
AInput: Constraint matrix,
Output: Normalised constraint matrix.
lbAInput: Constraints' lower bound vector,
Output: Normalised constraints' lower bound vector.
ubAInput: Constraints' upper bound vector,
Output: Normalised constraints' upper bound vector.
typeNorm type, 1: one-norm, 2: Euclidean norm.

References END_NAMESPACE_QPOASES, EPS, getNorm(), getSqrt(), INFTY, real_t, RET_INVALID_ARGUMENTS, SUCCESSFUL_RETURN, and THROWERROR.

◆ print() [1/5]

BEGIN_NAMESPACE_QPOASES returnValue print ( const real_t *const  v,
int_t  n,
const char *  name = 0 
)

Prints a (possibly named) vector.

Returns
SUCCESSFUL_RETURN
Parameters
vVector to be printed.
nLength of vector.
nameName of vector.

References MAX_STRING_LENGTH, myPrintf(), and SUCCESSFUL_RETURN.

Referenced by print().

◆ print() [2/5]

returnValue print ( const real_t *const  v,
int_t  n,
const int_t *const  V_idx,
const char *  name = 0 
)

Prints a (possibly named) permuted vector.

Returns
SUCCESSFUL_RETURN
Parameters
vVector to be printed.
nLength of vector.
V_idxPemutation vector.
nameName of vector.

References MAX_STRING_LENGTH, myPrintf(), and SUCCESSFUL_RETURN.

◆ print() [3/5]

returnValue print ( const real_t *const  M,
int_t  nrow,
int_t  ncol,
const char *  name = 0 
)

Prints a (possibly named) matrix.

Returns
SUCCESSFUL_RETURN
Parameters
MMatrix to be printed.
nrowRow number of matrix.
ncolColumn number of matrix.
nameName of matrix.

References MAX_STRING_LENGTH, myPrintf(), print(), and SUCCESSFUL_RETURN.

◆ print() [4/5]

returnValue print ( const real_t *const  M,
int_t  nrow,
int_t  ncol,
const int_t *const  ROW_idx,
const int_t *const  COL_idx,
const char *  name = 0 
)

Prints a (possibly named) permuted matrix.

Returns
SUCCESSFUL_RETURN
Parameters
MMatrix to be printed.
nrowRow number of matrix.
ncolColumn number of matrix.
ROW_idxRow pemutation vector.
COL_idxColumn pemutation vector.
nameName of matrix.

References MAX_STRING_LENGTH, myPrintf(), print(), and SUCCESSFUL_RETURN.

◆ print() [5/5]

returnValue print ( const int_t *const  index,
int_t  n,
const char *  name = 0 
)

Prints a (possibly named) index array.

Returns
SUCCESSFUL_RETURN
Parameters
indexIndex array to be printed.
nLength of index array.
nameName of index array.

References MAX_STRING_LENGTH, myPrintf(), and SUCCESSFUL_RETURN.

◆ printCopyrightNotice()

returnValue printCopyrightNotice ( )

Prints qpOASES copyright notice.

Returns
SUCCESSFUL_RETURN

References myPrintf(), and SUCCESSFUL_RETURN.

Referenced by QProblemB::QProblemB().

◆ readFromFile() [1/3]

returnValue readFromFile ( real_t data,
int_t  nrow,
int_t  ncol,
const char *  datafilename 
)

Reads a real_t matrix from file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
RET_UNABLE_TO_READ_FILE
Parameters
dataMatrix to be read from file.
nrowRow number of matrix.
ncolColumn number of matrix.
datafilenameData file name.

References __FILE__, __FUNC__, __LINE__, getGlobalMessageHandler(), MAX_STRING_LENGTH, real_t, RET_NOT_YET_IMPLEMENTED, RET_UNABLE_TO_OPEN_FILE, RET_UNABLE_TO_READ_FILE, SUCCESSFUL_RETURN, MessageHandling::throwError(), and VS_VISIBLE.

Referenced by SQProblem::hotstart(), QProblemB::init(), QProblem::init(), QProblemB::loadQPvectorsFromFile(), QProblem::loadQPvectorsFromFile(), readFromFile(), readOqpData(), readOqpDimensions(), QProblemB::setupQPdataFromFile(), and QProblem::setupQPdataFromFile().

◆ readFromFile() [2/3]

returnValue readFromFile ( real_t data,
int_t  n,
const char *  datafilename 
)

Reads a real_t vector from file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
RET_UNABLE_TO_READ_FILE
Parameters
dataVector to be read from file.
nLength of vector.
datafilenameData file name.

References readFromFile().

◆ readFromFile() [3/3]

returnValue readFromFile ( int_t data,
int_t  n,
const char *  datafilename 
)

Reads an integer (column) vector from file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
RET_UNABLE_TO_READ_FILE
Parameters
dataVector to be read from file.
nLength of vector.
datafilenameData file name.

References __FILE__, __FUNC__, __LINE__, getGlobalMessageHandler(), MAX_STRING_LENGTH, RET_NOT_YET_IMPLEMENTED, RET_UNABLE_TO_OPEN_FILE, RET_UNABLE_TO_READ_FILE, SUCCESSFUL_RETURN, MessageHandling::throwError(), and VS_VISIBLE.

◆ writeIntoFile() [1/3]

returnValue writeIntoFile ( const real_t *const  data,
int_t  nrow,
int_t  ncol,
const char *  datafilename,
BooleanType  append = BT_FALSE 
)

Writes a real_t matrix into a file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
Parameters
dataMatrix to be written into file.
nrowRow number of matrix.
ncolColumn number of matrix.
datafilenameData file name.
appendIndicates if data shall be appended if the file already exists (otherwise it is overwritten).

References __FILE__, __FUNC__, __LINE__, BT_TRUE, getGlobalMessageHandler(), MAX_STRING_LENGTH, RET_NOT_YET_IMPLEMENTED, RET_UNABLE_TO_OPEN_FILE, SUCCESSFUL_RETURN, MessageHandling::throwError(), and VS_VISIBLE.

Referenced by writeIntoFile().

◆ writeIntoFile() [2/3]

returnValue writeIntoFile ( const real_t *const  data,
int_t  n,
const char *  datafilename,
BooleanType  append = BT_FALSE 
)

Writes a real_t vector into a file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
Parameters
dataVector to be written into file.
nLength of vector.
datafilenameData file name.
appendIndicates if data shall be appended if the file already exists (otherwise it is overwritten).

References writeIntoFile().

◆ writeIntoFile() [3/3]

returnValue writeIntoFile ( const int_t *const  integer,
int_t  n,
const char *  datafilename,
BooleanType  append = BT_FALSE 
)

Writes an integer (column) vector into a file.

Returns
SUCCESSFUL_RETURN
RET_UNABLE_TO_OPEN_FILE
Parameters
integerInteger vector to be written into file.
nLength of vector.
datafilenameData file name.
appendIndicates if integer shall be appended if the file already exists (otherwise it is overwritten).

References __FILE__, __FUNC__, __LINE__, BT_TRUE, getGlobalMessageHandler(), MAX_STRING_LENGTH, RET_NOT_YET_IMPLEMENTED, RET_UNABLE_TO_OPEN_FILE, SUCCESSFUL_RETURN, MessageHandling::throwError(), and VS_VISIBLE.

◆ writeIntoMatFile() [1/2]

returnValue writeIntoMatFile ( FILE *const  matFile,
const real_t *const  data,
int_t  nRows,
int_t  nCols,
const char *  name 
)

Writes a real_t matrix/vector into a Matlab binary file.

Returns
SUCCESSFUL_RETURN
RET_INVALID_ARGUMENTS RET_UNABLE_TO_WRITE_FILE
Parameters
matFilePointer to Matlab binary file.
dataData to be written into file.
nRowsRow number of matrix.
nColsColumn number of matrix.
nameMatlab name of matrix/vector to be stored.

References MatMatrixHeader::imaginaryPart, MatMatrixHeader::nCharName, MatMatrixHeader::nCols, MatMatrixHeader::nRows, MatMatrixHeader::numericFormat, real_t, RET_INVALID_ARGUMENTS, RET_NOT_YET_IMPLEMENTED, RET_UNABLE_TO_WRITE_FILE, and SUCCESSFUL_RETURN.

Referenced by writeIntoMatFile(), QProblem::writeQpDataIntoMatFile(), and QProblem::writeQpWorkspaceIntoMatFile().

◆ writeIntoMatFile() [2/2]

returnValue writeIntoMatFile ( FILE *const  matFile,
const int_t *const  data,
int_t  nRows,
int_t  nCols,
const char *  name 
)

Writes in integer matrix/vector into a Matlab binary file.

Returns
SUCCESSFUL_RETURN
RET_INVALID_ARGUMENTS RET_UNABLE_TO_WRITE_FILE
Parameters
matFilePointer to Matlab binary file.
dataData to be written into file.
nRowsRow number of matrix.
nColsColumn number of matrix.
nameMatlab name of matrix/vector to be stored.

References real_t, and writeIntoMatFile().