You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					130 lines
				
				4.1 KiB
			
		
		
			
		
	
	
					130 lines
				
				4.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 *	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 <qpOASES_e/Bounds.h>
							 | 
						||
| 
								 | 
							
								#include <qpOASES_e/Constraints.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								 */
							 |