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.
		
		
		
		
		
			
		
			
				
					
					
						
							181 lines
						
					
					
						
							5.5 KiB
						
					
					
				
			
		
		
	
	
							181 lines
						
					
					
						
							5.5 KiB
						
					
					
				| /*
 | |
|  *	This file is part of qpOASES.
 | |
|  *
 | |
|  *	qpOASES -- An Implementation of the Online Active Set Strategy.
 | |
|  *	Copyright (C) 2007-2008 by Hans Joachim Ferreau 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/Constraints.hpp
 | |
|  *	\author Hans Joachim Ferreau
 | |
|  *	\version 1.3embedded
 | |
|  *	\date 2007-2008
 | |
|  *
 | |
|  *	Declaration of the Constraints class designed to manage working sets of
 | |
|  *	constraints within a QProblem.
 | |
|  */
 | |
| 
 | |
| 
 | |
| #ifndef QPOASES_CONSTRAINTS_HPP
 | |
| #define QPOASES_CONSTRAINTS_HPP
 | |
| 
 | |
| 
 | |
| #include <SubjectTo.hpp>
 | |
| 
 | |
| 
 | |
| 
 | |
| /** This class manages working sets of constraints by storing
 | |
|  *	index sets and other status information.
 | |
|  *
 | |
|  *	\author Hans Joachim Ferreau
 | |
|  *	\version 1.3embedded
 | |
|  *	\date 2007-2008
 | |
|  */
 | |
| class Constraints : public SubjectTo
 | |
| {
 | |
| 	/*
 | |
| 	 *	PUBLIC MEMBER FUNCTIONS
 | |
| 	 */
 | |
| 	public:
 | |
| 		/** Default constructor. */
 | |
| 		Constraints( );
 | |
| 
 | |
| 		/** Copy constructor (deep copy). */
 | |
| 		Constraints(	const Constraints& rhs	/**< Rhs object. */
 | |
| 						);
 | |
| 
 | |
| 		/** Destructor. */
 | |
| 		~Constraints( );
 | |
| 
 | |
| 		/** Assignment operator (deep copy). */
 | |
| 		Constraints& operator=(	const Constraints& rhs	/**< Rhs object. */
 | |
| 								);
 | |
| 
 | |
| 
 | |
| 		/** Pseudo-constructor takes the number of constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		returnValue init(	int n	/**< Number of constraints. */
 | |
| 							);
 | |
| 
 | |
| 
 | |
| 		/** Initially adds number of a new (i.e. not yet in the list) constraint to
 | |
| 		 *  a given index set.
 | |
| 		 *	\return SUCCESSFUL_RETURN \n
 | |
| 		 			RET_SETUP_CONSTRAINT_FAILED \n
 | |
| 					RET_INDEX_OUT_OF_BOUNDS \n
 | |
| 					RET_INVALID_ARGUMENTS */
 | |
| 		returnValue setupConstraint(	int _number,				/**< Number of new constraint. */
 | |
| 										SubjectToStatus _status		/**< Status of new constraint. */
 | |
| 										);
 | |
| 
 | |
| 		/** Initially adds all enabled numbers of new (i.e. not yet in the list) constraints to
 | |
| 		 *  to the index set of inactive constraints; the order depends on the SujectToType
 | |
| 		 *  of each index. Only disabled constraints are added to index set of disabled constraints!
 | |
| 		 *	\return SUCCESSFUL_RETURN \n
 | |
| 		 			RET_SETUP_CONSTRAINT_FAILED */
 | |
| 		returnValue setupAllInactive( );
 | |
| 
 | |
| 
 | |
| 		/** Moves index of a constraint from index list of active to that of inactive constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN \n
 | |
| 		 			RET_MOVING_CONSTRAINT_FAILED */
 | |
| 		returnValue moveActiveToInactive(	int _number				/**< Number of constraint to become inactive. */
 | |
| 											);
 | |
| 
 | |
| 		/** Moves index of a constraint from index list of inactive to that of active constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN \n
 | |
| 		 			RET_MOVING_CONSTRAINT_FAILED */
 | |
| 		returnValue moveInactiveToActive(	int _number,			/**< Number of constraint to become active. */
 | |
| 											SubjectToStatus _status	/**< Status of constraint to become active. */
 | |
| 											);
 | |
| 
 | |
| 
 | |
| 		/** Returns the number of constraints.
 | |
| 		 *	\return Number of constraints. */
 | |
| 		inline int getNC( ) const;
 | |
| 
 | |
| 		/** Returns the number of implicit equality constraints.
 | |
| 		 *	\return Number of implicit equality constraints. */
 | |
| 		inline int getNEC( ) const;
 | |
| 
 | |
| 		/** Returns the number of "real" inequality constraints.
 | |
| 		 *	\return Number of "real" inequality constraints. */
 | |
| 		inline int getNIC( ) const;
 | |
| 
 | |
| 		/** Returns the number of unbounded constraints (i.e. without any bounds).
 | |
| 		 *	\return Number of unbounded constraints (i.e. without any bounds). */
 | |
| 		inline int getNUC( ) const;
 | |
| 
 | |
| 
 | |
| 		/** Sets number of implicit equality constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		inline returnValue setNEC(	int n	/**< Number of implicit equality constraints. */
 | |
| 							);
 | |
| 
 | |
| 		/** Sets number of "real" inequality constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		inline returnValue setNIC(	int n	/**< Number of "real" inequality constraints. */
 | |
| 									);
 | |
| 
 | |
| 		/** Sets number of unbounded constraints (i.e. without any bounds).
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		inline returnValue setNUC(	int n	/**< Number of unbounded constraints (i.e. without any bounds). */
 | |
| 									);
 | |
| 
 | |
| 
 | |
| 		/** Returns the number of active constraints.
 | |
| 		 *	\return Number of constraints. */
 | |
| 		inline int getNAC( );
 | |
| 
 | |
| 		/** Returns the number of inactive constraints.
 | |
| 		 *	\return Number of constraints. */
 | |
| 		inline int getNIAC( );
 | |
| 
 | |
| 
 | |
| 		/** Returns a pointer to active constraints index list.
 | |
| 		 *	\return Pointer to active constraints index list. */
 | |
| 		inline Indexlist* getActive( );
 | |
| 
 | |
| 		/** Returns a pointer to inactive constraints index list.
 | |
| 		 *	\return Pointer to inactive constraints index list. */
 | |
| 		inline Indexlist* getInactive( );
 | |
| 
 | |
| 
 | |
| 	/*
 | |
| 	 *	PROTECTED MEMBER VARIABLES
 | |
| 	 */
 | |
| 	protected:
 | |
| 		int nC;					/**< Number of constraints (nC = nEC + nIC + nUC). */
 | |
| 		int nEC;				/**< Number of implicit equality constraints. */
 | |
| 		int	nIC;				/**< Number of "real" inequality constraints. */
 | |
| 		int nUC;				/**< Number of unbounded constraints (i.e. without any bounds). */
 | |
| 
 | |
| 		Indexlist active;		/**< Index list of active constraints. */
 | |
| 		Indexlist inactive;		/**< Index list of inactive constraints. */
 | |
| };
 | |
| 
 | |
| 
 | |
| #include <Constraints.ipp>
 | |
| 
 | |
| #endif	/* QPOASES_CONSTRAINTS_HPP */
 | |
| 
 | |
| 
 | |
| /*
 | |
|  *	end of file
 | |
|  */
 | |
| 
 |