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.
		
		
		
		
			
				
					154 lines
				
				6.0 KiB
			
		
		
			
		
	
	
					154 lines
				
				6.0 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/Options.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_OPTIONS_H
							 | 
						||
| 
								 | 
							
								#define QPOASES_OPTIONS_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <qpOASES_e/Utils.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BEGIN_NAMESPACE_QPOASES
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *	\brief Manages all user-specified options for solving QPs.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *	This class manages all user-specified options used for solving
							 | 
						||
| 
								 | 
							
								 *	quadratic programs.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *	\author Hans Joachim Ferreau, Andreas Potschka, Christian Kirches
							 | 
						||
| 
								 | 
							
								 *	\version 3.1embedded
							 | 
						||
| 
								 | 
							
								 *	\date 2007-2015
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									PrintLevel printLevel;					/**< Print level. */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									BooleanType enableRamping;				/**< Specifies whether ramping shall be enabled or not. */
							 | 
						||
| 
								 | 
							
									BooleanType enableFarBounds;			/**< Specifies whether far bounds shall be used or not. */
							 | 
						||
| 
								 | 
							
									BooleanType enableFlippingBounds;		/**< Specifies whether flipping bounds shall be used or not. */
							 | 
						||
| 
								 | 
							
									BooleanType enableRegularisation;		/**< Specifies whether Hessian matrix shall be regularised in case semi-definiteness is detected. */
							 | 
						||
| 
								 | 
							
									BooleanType enableFullLITests;			/**< Specifies whether condition-hardened LI test shall be used or not. */
							 | 
						||
| 
								 | 
							
									BooleanType enableNZCTests;				/**< Specifies whether nonzero curvature tests shall be used. */
							 | 
						||
| 
								 | 
							
									int enableDriftCorrection;				/**< Specifies the frequency of drift corrections (0 = off). */
							 | 
						||
| 
								 | 
							
									int enableCholeskyRefactorisation;		/**< Specifies the frequency of full refactorisation of proj. Hessian (otherwise updates). */
							 | 
						||
| 
								 | 
							
									BooleanType enableEqualities;			/**< Specifies whether equalities shall be always treated as active constraints. */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									real_t terminationTolerance;			/**< Termination tolerance. */
							 | 
						||
| 
								 | 
							
									real_t boundTolerance;					/**< Lower/upper (constraints') bound tolerance (an inequality constraint whose lower and upper bounds differ by less is regarded to be an equality constraint). */
							 | 
						||
| 
								 | 
							
									real_t boundRelaxation;					/**< Offset for relaxing (constraints') bounds at beginning of an initial homotopy. It is also as initial value for far bounds. */
							 | 
						||
| 
								 | 
							
									real_t epsNum;							/**< Numerator tolerance for ratio tests. */
							 | 
						||
| 
								 | 
							
									real_t epsDen;							/**< Denominator tolerance for ratio tests. */
							 | 
						||
| 
								 | 
							
									real_t maxPrimalJump;					/**< Maximum allowed jump in primal variables in nonzero curvature tests. */
							 | 
						||
| 
								 | 
							
									real_t maxDualJump;						/**< Maximum allowed jump in dual variables in linear independence tests. */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									real_t initialRamping;					/**< Start value for Ramping Strategy. */
							 | 
						||
| 
								 | 
							
									real_t finalRamping;					/**< Final value for Ramping Strategy. */
							 | 
						||
| 
								 | 
							
									real_t initialFarBounds;				/**< Initial size of Far Bounds. */
							 | 
						||
| 
								 | 
							
									real_t growFarBounds;					/**< Factor to grow Far Bounds. */
							 | 
						||
| 
								 | 
							
									SubjectToStatus initialStatusBounds;	/**< Initial status of bounds at first iteration. */
							 | 
						||
| 
								 | 
							
									real_t epsFlipping;						/**< Tolerance of squared Cholesky diagonal factor which triggers flipping bound. */
							 | 
						||
| 
								 | 
							
									int numRegularisationSteps;				/**< Maximum number of successive regularisation steps. */
							 | 
						||
| 
								 | 
							
									real_t epsRegularisation;				/**< Scaling factor of identity matrix used for Hessian regularisation. */
							 | 
						||
| 
								 | 
							
									int numRefinementSteps;					/**< Maximum number of iterative refinement steps. */
							 | 
						||
| 
								 | 
							
									real_t epsIterRef;						/**< Early termination tolerance for iterative refinement. */
							 | 
						||
| 
								 | 
							
									real_t epsLITests;						/**< Tolerance for linear independence tests. */
							 | 
						||
| 
								 | 
							
									real_t epsNZCTests;						/**< Tolerance for nonzero curvature tests. */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									BooleanType enableDropInfeasibles;		/**< ... */
							 | 
						||
| 
								 | 
							
									int    dropBoundPriority;				/**< ... */
							 | 
						||
| 
								 | 
							
									int    dropEqConPriority;				/**< ... */
							 | 
						||
| 
								 | 
							
									int    dropIneqConPriority;				/**< ... */
							 | 
						||
| 
								 | 
							
								} Options;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OptionsCON(	Options* _THIS
							 | 
						||
| 
								 | 
							
													);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Copies all members from given rhs object.
							 | 
						||
| 
								 | 
							
								 *  \return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								void OptionsCPY(	Options* FROM,
							 | 
						||
| 
								 | 
							
													Options* TO
							 | 
						||
| 
								 | 
							
													);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Sets all options to default values.
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								returnValue Options_setToDefault(	Options* _THIS
							 | 
						||
| 
								 | 
							
																	);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Sets all options to values resulting in maximum reliabilty.
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								returnValue Options_setToReliable(	Options* _THIS
							 | 
						||
| 
								 | 
							
																	);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Sets all options to values resulting in minimum solution time.
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								returnValue Options_setToMPC(		Options* _THIS
							 | 
						||
| 
								 | 
							
																	);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Same as setToMPC( ), for ensuring backwards compatibility.
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								returnValue Options_setToFast(		Options* _THIS
							 | 
						||
| 
								 | 
							
																	);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Ensures that all options have consistent values by automatically
							 | 
						||
| 
								 | 
							
								 *	adjusting inconsistent ones.
							 | 
						||
| 
								 | 
							
								 *	Note: This routine cannot (and does not try to) ensure that values
							 | 
						||
| 
								 | 
							
								 *	      are set to reasonable values that make the QP solution work!
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN \n 
							 | 
						||
| 
								 | 
							
								 *		    RET_OPTIONS_ADJUSTED */
							 | 
						||
| 
								 | 
							
								returnValue Options_ensureConsistency(	Options* _THIS
							 | 
						||
| 
								 | 
							
																		);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Prints values of all options.
							 | 
						||
| 
								 | 
							
								 *	\return SUCCESSFUL_RETURN */
							 | 
						||
| 
								 | 
							
								returnValue Options_print(	Options* _THIS
							 | 
						||
| 
								 | 
							
															);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								END_NAMESPACE_QPOASES
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif	/* QPOASES_OPTIONS_H */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 *	end of file
							 | 
						||
| 
								 | 
							
								 */
							 |