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.
		
		
		
		
		
			
		
			
				
					
					
						
							178 lines
						
					
					
						
							5.3 KiB
						
					
					
				
			
		
		
	
	
							178 lines
						
					
					
						
							5.3 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/SubjectTo.hpp
 | 
						|
 *	\author Hans Joachim Ferreau
 | 
						|
 *	\version 1.3embedded
 | 
						|
 *	\date 2007-2008
 | 
						|
 *
 | 
						|
 *	Declaration of the SubjectTo class designed to manage working sets of
 | 
						|
 *	constraints and bounds within a QProblem.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
#ifndef QPOASES_SUBJECTTO_HPP
 | 
						|
#define QPOASES_SUBJECTTO_HPP
 | 
						|
 | 
						|
 | 
						|
#include <Indexlist.hpp>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/** This class manages working sets of constraints and bounds by storing
 | 
						|
 *	index sets and other status information.
 | 
						|
 *
 | 
						|
 *	\author Hans Joachim Ferreau
 | 
						|
 *	\version 1.3embedded
 | 
						|
 *	\date 2007-2008
 | 
						|
 */
 | 
						|
class SubjectTo
 | 
						|
{
 | 
						|
	/*
 | 
						|
	 *	PUBLIC MEMBER FUNCTIONS
 | 
						|
	 */
 | 
						|
	public:
 | 
						|
		/** Default constructor. */
 | 
						|
		SubjectTo( );
 | 
						|
 | 
						|
		/** Copy constructor (deep copy). */
 | 
						|
		SubjectTo(	const SubjectTo& rhs	/**< Rhs object. */
 | 
						|
					);
 | 
						|
 | 
						|
		/** Destructor. */
 | 
						|
		~SubjectTo( );
 | 
						|
 | 
						|
		/** Assignment operator (deep copy). */
 | 
						|
		SubjectTo& operator=(	const SubjectTo& rhs	/**< Rhs object. */
 | 
						|
								);
 | 
						|
 | 
						|
 | 
						|
		/** Pseudo-constructor takes the number of constraints or bounds.
 | 
						|
		 *	\return SUCCESSFUL_RETURN */
 | 
						|
		returnValue init(	int n 	/**< Number of constraints or bounds. */
 | 
						|
							);
 | 
						|
 | 
						|
 | 
						|
		/** Returns type of (constraints') bound.
 | 
						|
		 *	\return Type of (constraints') bound \n
 | 
						|
		 			RET_INDEX_OUT_OF_BOUNDS */
 | 
						|
		inline SubjectToType getType(	int i		/**< Number of (constraints') bound. */
 | 
						|
										) const ;
 | 
						|
 | 
						|
		/** Returns status of (constraints') bound.
 | 
						|
		 *	\return Status of (constraints') bound \n
 | 
						|
		 			ST_UNDEFINED */
 | 
						|
		inline SubjectToStatus getStatus(	int i		/**< Number of (constraints') bound. */
 | 
						|
											) const;
 | 
						|
 | 
						|
 | 
						|
		/** Sets type of (constraints') bound.
 | 
						|
		 *	\return SUCCESSFUL_RETURN \n
 | 
						|
		 			RET_INDEX_OUT_OF_BOUNDS */
 | 
						|
		inline returnValue setType(	int i,				/**< Number of (constraints') bound. */
 | 
						|
									SubjectToType value	/**< Type of (constraints') bound. */
 | 
						|
									);
 | 
						|
 | 
						|
		/** Sets status of (constraints') bound.
 | 
						|
		 *	\return SUCCESSFUL_RETURN \n
 | 
						|
		 			RET_INDEX_OUT_OF_BOUNDS */
 | 
						|
		inline returnValue setStatus(	int i,					/**< Number of (constraints') bound. */
 | 
						|
										SubjectToStatus value	/**< Status of (constraints') bound. */
 | 
						|
										);
 | 
						|
 | 
						|
 | 
						|
		/** Sets status of lower (constraints') bounds. */
 | 
						|
		inline void setNoLower(	BooleanType _status		/**< Status of lower (constraints') bounds. */
 | 
						|
								);
 | 
						|
 | 
						|
		/** Sets status of upper (constraints') bounds. */
 | 
						|
		inline void setNoUpper(	BooleanType _status		/**< Status of upper (constraints') bounds. */
 | 
						|
								);
 | 
						|
 | 
						|
 | 
						|
		/** Returns status of lower (constraints') bounds.
 | 
						|
		 *	\return BT_TRUE if there is no lower (constraints') bound on any variable. */
 | 
						|
		inline BooleanType isNoLower( ) const;
 | 
						|
 | 
						|
		/** Returns status of upper bounds.
 | 
						|
		 *	\return BT_TRUE if there is no upper (constraints') bound on any variable. */
 | 
						|
		inline BooleanType isNoUpper( ) const;
 | 
						|
 | 
						|
 | 
						|
	/*
 | 
						|
	 *	PROTECTED MEMBER FUNCTIONS
 | 
						|
	 */
 | 
						|
	protected:
 | 
						|
		/** Adds the index of a new constraint or bound to index set.
 | 
						|
		 *	\return SUCCESSFUL_RETURN \n
 | 
						|
		 			RET_ADDINDEX_FAILED */
 | 
						|
		returnValue addIndex(	Indexlist* const indexlist,	/**< Index list to which the new index shall be added. */
 | 
						|
								int newnumber,				/**< Number of new constraint or bound. */
 | 
						|
								SubjectToStatus newstatus	/**< Status of new constraint or bound. */
 | 
						|
								);
 | 
						|
 | 
						|
		/** Removes the index of a constraint or bound from index set.
 | 
						|
		 *	\return SUCCESSFUL_RETURN \n
 | 
						|
		 			RET_UNKNOWN_BUG */
 | 
						|
		returnValue removeIndex(	Indexlist* const indexlist,	/**< Index list from which the new index shall be removed. */
 | 
						|
									int removenumber			/**< Number of constraint or bound to be removed. */
 | 
						|
									);
 | 
						|
 | 
						|
		/** Swaps the indices of two constraints or bounds within the index set.
 | 
						|
		 *	\return SUCCESSFUL_RETURN \n
 | 
						|
		 			RET_SWAPINDEX_FAILED */
 | 
						|
		returnValue swapIndex(	Indexlist* const indexlist,	/**< Index list in which the indices shold be swapped. */
 | 
						|
								int number1,				/**< Number of first constraint or bound. */
 | 
						|
								int number2					/**< Number of second constraint or bound. */
 | 
						|
								);
 | 
						|
 | 
						|
 | 
						|
	/*
 | 
						|
	 *	PROTECTED MEMBER VARIABLES
 | 
						|
	 */
 | 
						|
	protected:
 | 
						|
		SubjectToType type[NVMAX+NCMAX]; 		/**< Type of constraints/bounds. */
 | 
						|
		SubjectToStatus status[NVMAX+NCMAX];	/**< Status of constraints/bounds. */
 | 
						|
 | 
						|
		BooleanType noLower;				 	/**< This flag indicates if there is no lower bound on any variable. */
 | 
						|
		BooleanType noUpper;	 				/**< This flag indicates if there is no upper bound on any variable. */
 | 
						|
 | 
						|
 | 
						|
	/*
 | 
						|
	 *	PRIVATE MEMBER VARIABLES
 | 
						|
	 */
 | 
						|
	private:
 | 
						|
		int size;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#include <SubjectTo.ipp>
 | 
						|
 | 
						|
#endif	/* QPOASES_SUBJECTTO_HPP */
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
 *	end of file
 | 
						|
 */
 | 
						|
 |