1 #ifndef SimTK_SIMMATH_OPTIMIZER_H_
2 #define SimTK_SIMMATH_OPTIMIZER_H_
50 numEqualityConstraints(0),
51 numInequalityConstraints(0),
52 numLinearEqualityConstraints(0),
53 numLinearInequalityConstraints(0),
61 setNumParameters(nParameters);
74 bool new_parameters, Real& f )
const {
81 bool new_parameters,
Vector &gradient )
const {
87 bool new_parameters,
Vector & constraints )
const {
93 bool new_parameters,
Matrix& jac )
const {
99 bool new_parameters,
Vector &gradient)
const {
105 if( nParameters < 1 ) {
106 const char* where =
" OptimizerSystem Constructor";
107 const char* szName =
"number of parameters";
110 numParameters = nParameters;
116 const char* where =
" OptimizerSystem setNumEqualityConstraints";
117 const char* szName =
"number of equality constraints";
120 numEqualityConstraints = n;
126 const char* where =
" OptimizerSystem setNumInequalityConstraints";
127 const char* szName =
"number of inequality constraints";
130 numInequalityConstraints = n;
135 if( n < 0 || n > numEqualityConstraints ) {
136 const char* where =
" OptimizerSystem setNumLinearEqualityConstraints";
137 const char* szName =
"number of linear equality constraints";
140 numLinearEqualityConstraints = n;
145 if( n < 0 || n > numInequalityConstraints ) {
146 const char* where =
" OptimizerSystem setNumLinearInequalityConstraints";
147 const char* szName =
"number of linear inequality constraints";
150 numLinearInequalityConstraints = n;
155 if( upper.
size() != numParameters && upper.
size() != 0) {
156 const char* where =
" OptimizerSystem setParamtersLimits";
157 const char* szName =
"upper limits length";
160 if( lower.
size() != numParameters && lower.
size() != 0 ) {
161 const char* where =
" OptimizerSystem setParamtersLimits";
162 const char* szName =
"lower limits length";
172 if( upper.
size() == 0 ) {
175 lowerLimits =
new Vector( lower );
176 upperLimits =
new Vector( upper );
205 *lower = &(*lowerLimits)[0];
206 *upper = &(*upperLimits)[0];
211 int numEqualityConstraints;
212 int numInequalityConstraints;
213 int numLinearEqualityConstraints;
214 int numLinearInequalityConstraints;
251 void setConvergenceTolerance(Real accuracy );
254 void setConstraintTolerance(Real tolerance);
262 void setMaxIterations(
int iter );
264 void setLimitedMemoryHistory(
int history );
266 void setDiagnosticsLevel(
int level );
272 bool setAdvancedStrOption(
const char *option,
const char *value );
274 bool setAdvancedRealOption(
const char *option,
const Real value );
276 bool setAdvancedIntOption(
const char *option,
const int value );
278 bool setAdvancedBoolOption(
const char *option,
const bool value );
308 void useNumericalGradient(
bool flag,
322 void useNumericalJacobian(
bool flag,
332 bool isUsingNumericalGradient()
const;
334 bool isUsingNumericalJacobian()
const;
336 Real getEstimatedAccuracyOfObjective()
const;
338 Real getEstimatedAccuracyOfConstraints()
const;
347 const OptimizerRep& getRep()
const {assert(rep);
return *rep;}
358 #endif //SimTK_SIMMATH_OPTIMIZER_H_
Definition: Optimizer.h:38
Definition: Exception.h:204
void setNumParameters(const int nParameters)
Sets the number of parameters in the objective function.
Definition: Optimizer.h:104
virtual int objectiveFunc(const Vector ¶meters, bool new_parameters, Real &f) const
Objective/cost function which is to be optimized; return 0 when successful.
Definition: Optimizer.h:73
Definition: Optimizer.h:37
int getNumNonlinearInequalityConstraints() const
Returns the number of linear inequality constraints.
Definition: Optimizer.h:197
Definition: Optimizer.h:35
void setParameterLimits(const Vector &lower, const Vector &upper)
Set the upper and lower bounds on the paramters.
Definition: Optimizer.h:154
void setNumEqualityConstraints(const int n)
Sets the number of equality constraints.
Definition: Optimizer.h:114
API for SimTK Simmath's optimizers.
Definition: Optimizer.h:241
virtual int hessian(const Vector ¶meters, bool new_parameters, Vector &gradient) const
Computes Hessian of the objective function; return 0 when successful.
Definition: Optimizer.h:98
OptimizerSystem()
Definition: Optimizer.h:49
int getNumInequalityConstraints() const
Returns the number of inequality constraints.
Definition: Optimizer.h:189
OptimizerSystem(int nParameters)
Definition: Optimizer.h:59
Definition: SimTKmath/include/simmath/internal/common.h:118
int size() const
Definition: BigMatrix.h:1411
virtual int constraintJacobian(const Vector ¶meters, bool new_parameters, Matrix &jac) const
Computes Jacobian of the constraints; return 0 when successful.
Definition: Optimizer.h:92
virtual int gradientFunc(const Vector ¶meters, bool new_parameters, Vector &gradient) const
Computes the gradient of the objective function; return 0 when successful.
Definition: Optimizer.h:80
Definition: OptimizerRep.h:63
int getNumLinearInequalityConstraints() const
Returns the number of linear inequality constraints.
Definition: Optimizer.h:195
Definition: Exception.h:174
void getParameterLimits(Real **lower, Real **upper) const
Returns the limits on the allowed values of each parameter, as an array of lower bounds and an array ...
Definition: Optimizer.h:204
Definition: Exception.h:189
void setNumInequalityConstraints(const int n)
Sets the number of inequality constraints.
Definition: Optimizer.h:124
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
int getNumParameters() const
Returns the number of parameters, that is, the number of variables that the Optimizer may adjust whil...
Definition: Optimizer.h:183
Vector_< Real > Vector
Read fixed-size VectorView from input stream.
Definition: BigMatrix.h:3541
#define SimTK_THROW2(exc, a1, a2)
Definition: Exception.h:313
#define SimTK_THROW5(exc, a1, a2, a3, a4, a5)
Definition: Exception.h:319
Definition: Optimizer.h:39
Method
Definition: Differentiator.h:92
int getNumLinearEqualityConstraints() const
Returns the number of linear equality constraints.
Definition: Optimizer.h:191
This is the Matrix class intended to appear in user code.
Definition: BigMatrix.h:181
#define SimTK_THROW3(exc, a1, a2, a3)
Definition: Exception.h:315
int getNumNonlinearEqualityConstraints() const
Returns the number of nonlinear equality constraints.
Definition: Optimizer.h:193
virtual int constraintFunc(const Vector ¶meters, bool new_parameters, Vector &constraints) const
Computes the value of the constraints; return 0 when successful.
Definition: Optimizer.h:86
This is the header file that every Simmath compilation unit should include first. ...
int getNumConstraints() const
Returns the total number of constraints.
Definition: Optimizer.h:185
This is the header file that user code should include to pick up the SimTK Simmath numerical differen...
const Real SignificantReal
SignificantReal is the smallest value that we consider to be clearly distinct from roundoff error whe...
Abstract class which defines an objective/cost function which is optimized by and Optimizer object...
Definition: Optimizer.h:47
Definition: Optimizer.h:36
Definition: Exception.h:247
void setNumLinearEqualityConstraints(const int n)
Sets the number of lineaer equality constraints.
Definition: Optimizer.h:134
bool getHasLimits() const
Returns true if there are limits on the parameters.
Definition: Optimizer.h:200
virtual ~OptimizerSystem()
Definition: Optimizer.h:64
OptimizerAlgorithm
Definition: Optimizer.h:34
#define SimTK_THROW4(exc, a1, a2, a3, a4)
Definition: Exception.h:317
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
void setNumLinearInequalityConstraints(const int n)
Sets the number of lineaer inequality constraints.
Definition: Optimizer.h:144
int getNumEqualityConstraints() const
Returns the number of equality constraints.
Definition: Optimizer.h:187