/* * This file is part of qpOASES. * * qpOASES -- An Implementation of the Online Active Set Strategy. * Copyright (C) 2007-2015 by Hans Joachim Ferreau, Andreas Potschka, * Christian Kirches et al. All rights reserved. * * qpOASES is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * qpOASES is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with qpOASES; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ /** * \file include/qpOASES_e/Flipper.h * \author Hans Joachim Ferreau, Andreas Potschka, Christian Kirches * \version 3.1embedded * \date 2007-2015 * * Declaration of the Options class designed to manage user-specified * options for solving a QProblem. */ #ifndef QPOASES_FLIPPER_H #define QPOASES_FLIPPER_H #include #include BEGIN_NAMESPACE_QPOASES /** * \brief Auxiliary class for storing a copy of the current matrix factorisations. * * This auxiliary class stores a copy of the current matrix factorisations. It * is used by the classe QProblemB and QProblem in case flipping bounds are enabled. * * \author Hans Joachim Ferreau, Andreas Potschka, Christian Kirches * \version 3.1embedded * \date 2007-2015 */ typedef struct { Bounds *bounds; /**< Data structure for problem's bounds. */ Constraints *constraints; /**< Data structure for problem's constraints. */ real_t *R; /**< Cholesky factor of H (i.e. H = R^T*R). */ real_t *Q; /**< Orthonormal quadratic matrix, A = [0 T]*Q'. */ real_t *T; /**< Reverse triangular matrix, A = [0 T]*Q'. */ unsigned int nV; /**< Number of variables. */ unsigned int nC; /**< Number of constraints. */ } Flipper; int Flipper_calculateMemorySize( unsigned int nV, unsigned int nC ); char *Flipper_assignMemory( unsigned int nV, unsigned int nC, Flipper **mem, void *raw_memory ); Flipper *Flipper_createMemory( unsigned int nV, unsigned int nC ); /** Constructor which takes the number of bounds and constraints. */ void FlipperCON( Flipper* _THIS, unsigned int _nV, /**< Number of bounds. */ unsigned int _nC /**< Number of constraints. */ ); /** Copy constructor (deep copy). */ void FlipperCPY( Flipper* FROM, Flipper* TO ); /** Initialises object with given number of bounds and constraints. * \return SUCCESSFUL_RETURN \n RET_INVALID_ARGUMENTS */ returnValue Flipper_init( Flipper* _THIS, unsigned int _nV, /**< Number of bounds. */ unsigned int _nC /**< Number of constraints. */ ); /** Copies current values to non-null arguments (assumed to be allocated with consistent size). * \return SUCCESSFUL_RETURN */ returnValue Flipper_get( Flipper* _THIS, Bounds* const _bounds, /**< Pointer to new bounds. */ real_t* const R, /**< New matrix R. */ Constraints* const _constraints, /**< Pointer to new constraints. */ real_t* const _Q, /**< New matrix Q. */ real_t* const _T /**< New matrix T. */ ); /** Assigns new values to non-null arguments. * \return SUCCESSFUL_RETURN */ returnValue Flipper_set( Flipper* _THIS, const Bounds* const _bounds, /**< Pointer to new bounds. */ const real_t* const _R, /**< New matrix R. */ const Constraints* const _constraints, /**< Pointer to new constraints. */ const real_t* const _Q, /**< New matrix Q. */ const real_t* const _T /**< New matrix T. */ ); /** Returns dimension of matrix T. * \return Dimension of matrix T. */ unsigned int Flipper_getDimT( Flipper* _THIS ); END_NAMESPACE_QPOASES #endif /* QPOASES_FLIPPER_H */ /* * end of file */