| 
    qpOASES
    3.2.1
    
   An Implementation of the Online Active Set Strategy 
   | 
  
  
  
 
#include <stdio.h>#include <string.h>#include <qpOASES/Constants.hpp>#include <qpOASES/MessageHandling.ipp>Go to the source code of this file.
| #define __FILE__ 0 | 
Ensures that __FILE__ macro is defined.
Referenced by SQProblemSchur::addBound_ensureLI(), QProblem::addBound_ensureLI(), SQProblemSchur::addConstraint_ensureLI(), QProblem::addConstraint_ensureLI(), QProblem::changeActiveSet(), QProblemB::changeActiveSet(), QProblem::performStep(), QProblemB::performStep(), readFromFile(), QProblem::solveQP(), QProblemB::solveQP(), MessageHandling::throwError(), MessageHandling::throwInfo(), MessageHandling::throwMessage(), MessageHandling::throwWarning(), and writeIntoFile().
| #define __FUNC__ ("(no function name provided)") | 
Define __FUNC__ macro providing current function for debugging.
Referenced by QProblem::addBound_ensureLI(), QProblem::addConstraint_ensureLI(), QProblem::changeActiveSet(), QProblemB::changeActiveSet(), QProblem::performStep(), QProblemB::performStep(), readFromFile(), QProblem::solveQP(), QProblemB::solveQP(), MessageHandling::throwError(), MessageHandling::throwInfo(), MessageHandling::throwMessage(), MessageHandling::throwWarning(), and writeIntoFile().
| #define __LINE__ 0 | 
Ensures that __LINE__ macro is defined.
Referenced by SQProblemSchur::addBound_ensureLI(), QProblem::addBound_ensureLI(), SQProblemSchur::addConstraint_ensureLI(), QProblem::addConstraint_ensureLI(), QProblem::changeActiveSet(), QProblemB::changeActiveSet(), QProblem::performStep(), QProblemB::performStep(), readFromFile(), QProblem::solveQP(), QProblemB::solveQP(), MessageHandling::throwError(), MessageHandling::throwInfo(), MessageHandling::throwMessage(), MessageHandling::throwWarning(), and writeIntoFile().
| #define THROWERROR | ( | retval | ) | ( getGlobalMessageHandler( )->throwError((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) ) | 
Short version of throwError with default values, only returnValue is needed
Referenced by SQProblemSchur::addBound(), QProblem::addBound(), QProblemB::addBound(), SQProblemSchur::addBound_ensureLI(), QProblem::addBound_ensureLI(), SQProblemSchur::addConstraint(), QProblem::addConstraint(), SQProblemSchur::addConstraint_ensureLI(), QProblem::addConstraint_ensureLI(), SubjectTo::addIndex(), Indexlist::addNumber(), SparseMatrix::addToDiag(), SparseMatrixRow::addToDiag(), SQProblemSchur::addToSchurComplement(), SQProblemSchur::backsolveR(), QProblemB::backsolveR(), SQProblemSchur::backsolveT(), QProblem::backsolveT(), SymSparseMat::bilinear(), QProblem::changeActiveSet(), QProblemB::changeActiveSet(), SolutionAnalysis::checkCurvatureOnStronglyActiveConstraints(), QProblemB::computeCholesky(), SQProblemSchur::computeMTimes(), SQProblemSchur::computeMTransTimes(), QProblem::computeProjectedCholesky(), SQProblemSchur::correctInertia(), QProblemB::determineHessianType(), SQProblemSchur::determineStepDirection(), QProblem::determineStepDirection(), QProblemB::determineStepDirection(), SQProblemSchur::determineStepDirection2(), SparseMatrix::diag(), SparseMatrixRow::diag(), Constraints::flipFixed(), Bounds::flipFixed(), QProblemB::getBounds(), QProblem::getConstraints(), SolutionAnalysis::getKktViolation(), getNorm(), Indexlist::getNumberArray(), SparseMatrix::getRowNorm(), DenseMatrix::getSparseSubmatrix(), SparseMatrix::getSparseSubmatrix(), SparseMatrixRow::getSparseSubmatrix(), SolutionAnalysis::getVarianceCovariance(), QProblem::getWorkingSet(), QProblemB::getWorkingSetBounds(), QProblemB::getWorkingSetConstraints(), QProblem::getWorkingSetConstraints(), SQProblem::hotstart(), QProblemB::hotstart(), QProblem::hotstart(), Constraints::init(), Bounds::init(), SubjectTo::init(), Indexlist::init(), QProblemB::init(), QProblem::init(), QProblemB::loadQPvectorsFromFile(), QProblem::loadQPvectorsFromFile(), Constraints::moveActiveToInactive(), Bounds::moveFixedToFree(), Bounds::moveFreeToFixed(), Constraints::moveInactiveToActive(), myPrintf(), normaliseConstraints(), QProblemB::obtainAuxiliaryWorkingSet(), QProblem::obtainAuxiliaryWorkingSet(), QProblem::performStep(), QProblem::printIteration(), QProblemB::printIteration(), QProblem::QProblem(), QProblemB::QProblemB(), readOqpData(), readOqpDimensions(), QProblemB::regulariseHessian(), SQProblemSchur::removeBound(), QProblem::removeBound(), QProblemB::removeBound(), SQProblemSchur::removeConstraint(), QProblem::removeConstraint(), SubjectTo::removeIndex(), SQProblemSchur::reset(), QProblem::reset(), QProblemB::reset(), SQProblemSchur::resetSchurComplement(), Constraints::rotate(), Bounds::rotate(), runOqpBenchmark(), QProblem::setA(), QProblemB::setG(), QProblemB::setInfeasibilityFlag(), QProblemB::setLB(), QProblem::setLBA(), SubjectTo::setStatus(), SubjectTo::setType(), QProblemB::setUB(), QProblem::setUBA(), Constraints::setupAll(), Bounds::setupAll(), SQProblemSchur::setupAuxiliaryQP(), QProblem::setupAuxiliaryQP(), QProblemB::setupAuxiliaryQP(), QProblem::setupAuxiliaryQPbounds(), QProblemB::setupAuxiliaryQPbounds(), SQProblemSchur::setupAuxiliaryWorkingSet(), QProblem::setupAuxiliaryWorkingSet(), QProblemB::setupAuxiliaryWorkingSet(), Bounds::setupBound(), Constraints::setupConstraint(), SQProblem::setupNewAuxiliaryQP(), QProblemB::setupQPdata(), QProblem::setupQPdata(), QProblemB::setupQPdataFromFile(), QProblem::setupQPdataFromFile(), QProblem::setupSubjectToType(), Constraints::shift(), Bounds::shift(), QProblem::solveCurrentEQP(), QProblem::solveInitialQP(), QProblemB::solveInitialQP(), solveOqpBenchmark(), QProblem::solveQP(), QProblemB::solveQP(), Bounds::swapFree(), SubjectTo::swapIndex(), Indexlist::swapNumbers(), QProblem::updateActivitiesForHotstart(), DenseMatrix::writeToFile(), and SparseMatrixRow::writeToFile().
| #define THROWINFO | ( | retval | ) | ( getGlobalMessageHandler( )->throwInfo((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) ) | 
Short version of throwInfo with default values, only returnValue is needed
Referenced by QProblem::addBound_checkLI(), SQProblemSchur::addBound_checkLISchur(), QProblem::addConstraint_checkLI(), SQProblemSchur::addConstraint_checkLISchur(), QProblemB::determineHessianType(), getSimpleStatus(), QProblemB::regulariseHessian(), QProblemB::setPrintLevel(), QProblem::solveInitialQP(), QProblemB::solveInitialQP(), QProblem::solveQP(), and QProblemB::solveQP().
| #define THROWWARNING | ( | retval | ) | ( getGlobalMessageHandler( )->throwWarning((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) ) | 
Short version of throwWarning with default values, only returnValue is needed
Referenced by Options::ensureConsistency(), QProblemB::init(), QProblem::init(), QProblem::solveInitialQP(), QProblemB::solveInitialQP(), QProblem::solveRegularisedQP(), QProblemB::solveRegularisedQP(), and SubjectTo::swapIndex().
| enum returnValue | 
The enumeration returnValueType defines all symbols for global return values. Important: All return values are assumed to be nonnegative!
| TERMINAL_LIST_ELEMENT | 
 Terminal list element, internal usage only!  | 
| SUCCESSFUL_RETURN | 
 Successful return.  | 
| RET_DIV_BY_ZERO | 
 Division by zero.  | 
| RET_INDEX_OUT_OF_BOUNDS | 
 Index out of bounds.  | 
| RET_INVALID_ARGUMENTS | 
 At least one of the arguments is invalid.  | 
| RET_ERROR_UNDEFINED | 
 Error number undefined.  | 
| RET_WARNING_UNDEFINED | 
 Warning number undefined.  | 
| RET_INFO_UNDEFINED | 
 Info number undefined.  | 
| RET_EWI_UNDEFINED | 
 Error/warning/info number undefined.  | 
| RET_AVAILABLE_WITH_LINUX_ONLY | 
 This function is available under Linux only.  | 
| RET_UNKNOWN_BUG | 
 The error occurred is not yet known.  | 
| RET_PRINTLEVEL_CHANGED | 
 Print level changed. (10)  | 
| RET_NOT_YET_IMPLEMENTED | 
 Requested function is not yet implemented in this version of qpOASES.  | 
| RET_INDEXLIST_MUST_BE_REORDERD | 
 Index list has to be reordered.  | 
| RET_INDEXLIST_EXCEEDS_MAX_LENGTH | 
 Index list exceeds its maximal physical length.  | 
| RET_INDEXLIST_CORRUPTED | 
 Index list corrupted.  | 
| RET_INDEXLIST_OUTOFBOUNDS | 
 Physical index is out of bounds.  | 
| RET_INDEXLIST_ADD_FAILED | 
 Adding indices from another index set failed.  | 
| RET_INDEXLIST_INTERSECT_FAILED | 
 Intersection with another index set failed.  | 
| RET_INDEX_ALREADY_OF_DESIRED_STATUS | 
 Index is already of desired status. (18)  | 
| RET_ADDINDEX_FAILED | 
 Adding index to index set failed.  | 
| RET_REMOVEINDEX_FAILED | 
 Removing index from index set failed. (20)  | 
| RET_SWAPINDEX_FAILED | 
 Cannot swap between different indexsets.  | 
| RET_NOTHING_TO_DO | 
 Nothing to do.  | 
| RET_SETUP_BOUND_FAILED | 
 Setting up bound index failed.  | 
| RET_SETUP_CONSTRAINT_FAILED | 
 Setting up constraint index failed.  | 
| RET_MOVING_BOUND_FAILED | 
 Moving bound between index sets failed.  | 
| RET_MOVING_CONSTRAINT_FAILED | 
 Moving constraint between index sets failed.  | 
| RET_SHIFTING_FAILED | 
 Shifting of bounds/constraints failed.  | 
| RET_ROTATING_FAILED | 
 Rotating of bounds/constraints failed.  | 
| RET_QPOBJECT_NOT_SETUP | 
 The QP object has not been setup correctly, use another constructor.  | 
| RET_QP_ALREADY_INITIALISED | 
 QProblem has already been initialised. (30)  | 
| RET_NO_INIT_WITH_STANDARD_SOLVER | 
 Initialisation via extern QP solver is not yet implemented.  | 
| RET_RESET_FAILED | 
 Reset failed.  | 
| RET_INIT_FAILED | 
 Initialisation failed.  | 
| RET_INIT_FAILED_TQ | 
 Initialisation failed due to TQ factorisation.  | 
| RET_INIT_FAILED_CHOLESKY | 
 Initialisation failed due to Cholesky decomposition.  | 
| RET_INIT_FAILED_HOTSTART | 
 Initialisation failed! QP could not be solved!  | 
| RET_INIT_FAILED_INFEASIBILITY | 
 Initial QP could not be solved due to infeasibility!  | 
| RET_INIT_FAILED_UNBOUNDEDNESS | 
 Initial QP could not be solved due to unboundedness!  | 
| RET_INIT_FAILED_REGULARISATION | 
 Initialisation failed as Hessian matrix could not be regularised.  | 
| RET_INIT_SUCCESSFUL | 
 Initialisation done. (40)  | 
| RET_OBTAINING_WORKINGSET_FAILED | 
 Failed to obtain working set for auxiliary QP.  | 
| RET_SETUP_WORKINGSET_FAILED | 
 Failed to setup working set for auxiliary QP.  | 
| RET_SETUP_AUXILIARYQP_FAILED | 
 Failed to setup auxiliary QP for initialised homotopy.  | 
| RET_NO_CHOLESKY_WITH_INITIAL_GUESS | 
 Externally computed Cholesky factor cannot be combined with an initial guess.  | 
| RET_NO_EXTERN_SOLVER | 
 No extern QP solver available.  | 
| RET_QP_UNBOUNDED | 
 QP is unbounded.  | 
| RET_QP_INFEASIBLE | 
 QP is infeasible.  | 
| RET_QP_NOT_SOLVED | 
 Problems occurred while solving QP with standard solver.  | 
| RET_QP_SOLVED | 
 QP successfully solved.  | 
| RET_UNABLE_TO_SOLVE_QP | 
 Problems occurred while solving QP. (50)  | 
| RET_INITIALISATION_STARTED | 
 Starting problem initialisation...  | 
| RET_HOTSTART_FAILED | 
 Unable to perform homotopy due to internal error.  | 
| RET_HOTSTART_FAILED_TO_INIT | 
 Unable to initialise problem.  | 
| RET_HOTSTART_FAILED_AS_QP_NOT_INITIALISED | 
 Unable to perform homotopy as previous QP is not solved.  | 
| RET_ITERATION_STARTED | 
 Iteration...  | 
| RET_SHIFT_DETERMINATION_FAILED | 
 Determination of shift of the QP data failed.  | 
| RET_STEPDIRECTION_DETERMINATION_FAILED | 
 Determination of step direction failed.  | 
| RET_STEPLENGTH_DETERMINATION_FAILED | 
 Determination of step direction failed.  | 
| RET_OPTIMAL_SOLUTION_FOUND | 
 Optimal solution of neighbouring QP found.  | 
| RET_HOMOTOPY_STEP_FAILED | 
 Unable to perform homotopy step. (60)  | 
| RET_HOTSTART_STOPPED_INFEASIBILITY | 
 Premature homotopy termination because QP is infeasible.  | 
| RET_HOTSTART_STOPPED_UNBOUNDEDNESS | 
 Premature homotopy termination because QP is unbounded.  | 
| RET_WORKINGSET_UPDATE_FAILED | 
 Unable to update working sets according to initial guesses.  | 
| RET_MAX_NWSR_REACHED | 
 Maximum number of working set recalculations performed.  | 
| RET_CONSTRAINTS_NOT_SPECIFIED | 
 Problem does comprise constraints! You also have to specify new constraints' bounds.  | 
| RET_INVALID_FACTORISATION_FLAG | 
 Invalid factorisation flag.  | 
| RET_UNABLE_TO_SAVE_QPDATA | 
 Unable to save QP data.  | 
| RET_STEPDIRECTION_FAILED_TQ | 
 Abnormal termination due to TQ factorisation.  | 
| RET_STEPDIRECTION_FAILED_CHOLESKY | 
 Abnormal termination due to Cholesky factorisation.  | 
| RET_CYCLING_DETECTED | 
 Cycling detected. (70)  | 
| RET_CYCLING_NOT_RESOLVED | 
 Cycling cannot be resolved, QP probably infeasible.  | 
| RET_CYCLING_RESOLVED | 
 Cycling probably resolved.  | 
| RET_STEPSIZE | 
 For displaying performed stepsize.  | 
| RET_STEPSIZE_NONPOSITIVE | 
 For displaying non-positive stepsize.  | 
| RET_SETUPSUBJECTTOTYPE_FAILED | 
 Setup of SubjectToTypes failed.  | 
| RET_ADDCONSTRAINT_FAILED | 
 Addition of constraint to working set failed.  | 
| RET_ADDCONSTRAINT_FAILED_INFEASIBILITY | 
 Addition of constraint to working set failed (due to QP infeasibility).  | 
| RET_ADDBOUND_FAILED | 
 Addition of bound to working set failed.  | 
| RET_ADDBOUND_FAILED_INFEASIBILITY | 
 Addition of bound to working set failed (due to QP infeasibility).  | 
| RET_REMOVECONSTRAINT_FAILED | 
 Removal of constraint from working set failed. (80)  | 
| RET_REMOVEBOUND_FAILED | 
 Removal of bound from working set failed.  | 
| RET_REMOVE_FROM_ACTIVESET | 
 Removing from active set...  | 
| RET_ADD_TO_ACTIVESET | 
 Adding to active set...  | 
| RET_REMOVE_FROM_ACTIVESET_FAILED | 
 Removing from active set failed.  | 
| RET_ADD_TO_ACTIVESET_FAILED | 
 Adding to active set failed.  | 
| RET_CONSTRAINT_ALREADY_ACTIVE | 
 Constraint is already active.  | 
| RET_ALL_CONSTRAINTS_ACTIVE | 
 All constraints are active, no further constraint can be added.  | 
| RET_LINEARLY_DEPENDENT | 
 New bound/constraint is linearly dependent.  | 
| RET_LINEARLY_INDEPENDENT | 
 New bound/constraint is linearly independent.  | 
| RET_LI_RESOLVED | 
 Linear independence of active constraint matrix successfully resolved. (90)  | 
| RET_ENSURELI_FAILED | 
 Failed to ensure linear independence of active constraint matrix.  | 
| RET_ENSURELI_FAILED_TQ | 
 Abnormal termination due to TQ factorisation.  | 
| RET_ENSURELI_FAILED_NOINDEX | 
 QP is infeasible.  | 
| RET_ENSURELI_FAILED_CYCLING | 
 QP is infeasible.  | 
| RET_BOUND_ALREADY_ACTIVE | 
 Bound is already active.  | 
| RET_ALL_BOUNDS_ACTIVE | 
 All bounds are active, no further bound can be added.  | 
| RET_CONSTRAINT_NOT_ACTIVE | 
 Constraint is not active.  | 
| RET_BOUND_NOT_ACTIVE | 
 Bound is not active.  | 
| RET_HESSIAN_NOT_SPD | 
 Projected Hessian matrix not positive definite.  | 
| RET_HESSIAN_INDEFINITE | 
 Hessian matrix is indefinite. (100)  | 
| RET_MATRIX_SHIFT_FAILED | 
 Unable to update matrices or to transform vectors.  | 
| RET_MATRIX_FACTORISATION_FAILED | 
 Unable to calculate new matrix factorisations.  | 
| RET_PRINT_ITERATION_FAILED | 
 Unable to print information on current iteration.  | 
| RET_NO_GLOBAL_MESSAGE_OUTPUTFILE | 
 No global message output file initialised.  | 
| RET_DISABLECONSTRAINTS_FAILED | 
 Unable to disbable constraints.  | 
| RET_ENABLECONSTRAINTS_FAILED | 
 Unable to enbable constraints.  | 
| RET_ALREADY_ENABLED | 
 Bound or constraint is already enabled.  | 
| RET_ALREADY_DISABLED | 
 Bound or constraint is already disabled.  | 
| RET_NO_HESSIAN_SPECIFIED | 
 No Hessian matrix has been specified.  | 
| RET_USING_REGULARISATION | 
 Using regularisation as Hessian matrix is not positive definite. (110)  | 
| RET_EPS_MUST_BE_POSITVE | 
 Eps for regularisation must be sufficiently positive.  | 
| RET_REGSTEPS_MUST_BE_POSITVE | 
 Maximum number of regularisation steps must be non-negative.  | 
| RET_HESSIAN_ALREADY_REGULARISED | 
 Hessian has been already regularised.  | 
| RET_CANNOT_REGULARISE_IDENTITY | 
 Identity Hessian matrix cannot be regularised.  | 
| RET_CANNOT_REGULARISE_SPARSE | 
 Sparse matrix cannot be regularised as diagonal entry is missing.  | 
| RET_NO_REGSTEP_NWSR | 
 No additional regularisation step could be performed due to limits.  | 
| RET_FEWER_REGSTEPS_NWSR | 
 Fewer additional regularisation steps have been performed due to limits.  | 
| RET_CHOLESKY_OF_ZERO_HESSIAN | 
 Cholesky decomposition of (unregularised) zero Hessian matrix.  | 
| RET_ZERO_HESSIAN_ASSUMED | 
 Zero Hessian matrix assumed as null pointer passed without specifying hessianType.  | 
| RET_CONSTRAINTS_ARE_NOT_SCALED | 
 (no longer in use) (120)  | 
| RET_INITIAL_BOUNDS_STATUS_NYI | 
 (no longer in use)  | 
| RET_ERROR_IN_CONSTRAINTPRODUCT | 
 Error in user-defined constraint product function.  | 
| RET_FIX_BOUNDS_FOR_LP | 
 All initial bounds must be fixed when solving an (unregularised) LP.  | 
| RET_USE_REGULARISATION_FOR_LP | 
 Set options.enableRegularisation=BT_TRUE for solving LPs.  | 
| RET_UPDATEMATRICES_FAILED | 
 Unable to update QP matrices.  | 
| RET_UPDATEMATRICES_FAILED_AS_QP_NOT_SOLVED | 
 Unable to update matrices as previous QP is not solved.  | 
| RET_UNABLE_TO_OPEN_FILE | 
 Unable to open file.  | 
| RET_UNABLE_TO_WRITE_FILE | 
 Unable to write into file.  | 
| RET_UNABLE_TO_READ_FILE | 
 Unable to read from file.  | 
| RET_FILEDATA_INCONSISTENT | 
 File contains inconsistent data. (130)  | 
| RET_OPTIONS_ADJUSTED | 
 Options needed to be adjusted for consistency reasons.  | 
| RET_UNABLE_TO_ANALYSE_QPROBLEM | 
 Unable to analyse (S)QProblem(B) object.  | 
| RET_NWSR_SET_TO_ONE | 
 Maximum number of working set changes was set to 1.  | 
| RET_UNABLE_TO_READ_BENCHMARK | 
 Unable to read benchmark data.  | 
| RET_BENCHMARK_ABORTED | 
 Benchmark aborted.  | 
| RET_INITIAL_QP_SOLVED | 
 Initial QP solved.  | 
| RET_QP_SOLUTION_STARTED | 
 Solving QP...  | 
| RET_BENCHMARK_SUCCESSFUL | 
 Benchmark terminated successfully.  | 
| RET_NO_DIAGONAL_AVAILABLE | 
 Sparse matrix does not have entries on full diagonal.  | 
| RET_DIAGONAL_NOT_INITIALISED | 
 Diagonal data of sparse matrix has not been initialised. (140)  | 
| RET_ENSURELI_DROPPED | 
 Linear independence resolved by dropping blocking constraint.  | 
| RET_KKT_MATRIX_SINGULAR | 
 KKT matrix is singular.  | 
| RET_QR_FACTORISATION_FAILED | 
 QR factorization of Schur complement failed.  | 
| RET_INERTIA_CORRECTION_FAILED | 
 Inertia correction failed after KKT matrix had too many negative eigenvalues.  | 
| RET_NO_SPARSE_SOLVER | 
 No factorization routine for the KKT matrix installed.  | 
| RET_SIMPLE_STATUS_P1 | 
 QP problem could not be solved within given number of iterations.  | 
| RET_SIMPLE_STATUS_P0 | 
 QP problem solved.  | 
| RET_SIMPLE_STATUS_M1 | 
 QP problem could not be solved due to an internal error.  | 
| RET_SIMPLE_STATUS_M2 | 
 QP problem is infeasible (and thus could not be solved).  | 
| RET_SIMPLE_STATUS_M3 | 
 QP problem is unbounded (and thus could not be solved). (150)  | 
Returns a pointer to global message handler.
Global message handler for all qpOASES modules.
References stdFile, and VS_VISIBLE.
Referenced by SQProblemSchur::addBound_ensureLI(), QProblem::addBound_ensureLI(), SQProblemSchur::addConstraint_ensureLI(), QProblem::addConstraint_ensureLI(), QProblem::changeActiveSet(), QProblemB::changeActiveSet(), getSimpleStatus(), myPrintf(), QProblem::performStep(), QProblemB::performStep(), QProblemB::QProblemB(), readFromFile(), QProblemB::setPrintLevel(), QProblem::solveQP(), QProblemB::solveQP(), writeIntoFile(), and QProblemB::~QProblemB().
Default file to display messages.
Referenced by getGlobalMessageHandler(), MessageHandling::MessageHandling(), and MessageHandling::reset().
 1.7.6.1