1 #ifndef SimTK_SIMMATH_OPTIMIZER_REP_H_ 2 #define SimTK_SIMMATH_OPTIMIZER_REP_H_ 73 convergenceTolerance(
Real(1e-3)),
74 constraintTolerance(
Real(1e-4)),
76 limitedMemoryHistory(50),
81 numericalGradient(false),
82 numericalJacobian(false)
93 convergenceTolerance(
Real(1e-3)),
94 constraintTolerance(
Real(1e-4)),
96 limitedMemoryHistory(50),
101 numericalGradient(false),
102 numericalJacobian(false)
114 void setDiagnosticsLevel(
const int level );
115 void setConvergenceTolerance(
Real accuracy );
116 void setConstraintTolerance(
Real tolerance );
117 void setMaxIterations(
const int iter );
118 void setLimitedMemoryHistory(
const int history );
120 bool setAdvancedStrOption(
const std::string &option,
const std::string &value );
121 bool setAdvancedRealOption(
const std::string &option,
const Real value );
122 bool setAdvancedIntOption(
const std::string &option,
const int value );
123 bool setAdvancedBoolOption(
const std::string &option,
const bool value );
124 bool setAdvancedVectorOption(
const std::string &option,
const Vector value );
126 bool getAdvancedStrOption(
const std::string &option, std::string &value )
const;
127 bool getAdvancedRealOption(
const std::string &option,
Real &value )
const;
128 bool getAdvancedIntOption(
const std::string &option,
int &value )
const;
129 bool getAdvancedBoolOption(
const std::string &option,
bool &value )
const;
130 bool getAdvancedVectorOption(
const std::string &option,
Vector &value )
const;
136 void useNumericalGradient(
bool flag,
Real objEstAccuracy);
137 void useNumericalJacobian(
bool flag,
Real consEstAccuracy);
144 {
return objectiveEstimatedAccuracy; }
146 {
return constraintsEstimatedAccuracy; }
162 static int numericalGradient_static(
const OptimizerSystem&,
const Vector & parameters,
const bool new_parameters,
Vector &gradient );
164 const Vector& parameters,
const bool new_parameters,
Matrix& jacobian );
172 static int objectiveFuncWrapper (
int n,
const Real* x,
int new_x,
Real*
f,
void*
rep);
173 static int gradientFuncWrapper (
int n,
const Real* x,
int new_x,
Real* gradient,
void* rep);
174 static int constraintFuncWrapper(
int n,
const Real* x,
int new_x,
int m,
Real* g,
void* rep);
175 static int constraintJacobianWrapper(
int n,
const Real* x,
int new_x,
int m,
int nele_jac,
176 int* iRow,
int* jCol,
Real* values,
void* rep);
177 static int hessianWrapper(
int n,
const Real* x,
int new_x,
Real obj_factor,
178 int m,
Real* lambda,
int new_lambda,
179 int nele_hess,
int* iRow,
int* jCol,
180 Real* values,
void* rep);
193 bool numericalGradient;
194 bool numericalJacobian;
201 std::map<std::string, std::string> advancedStrOptions;
202 std::map<std::string, Real> advancedRealOptions;
203 std::map<std::string, int> advancedIntOptions;
204 std::map<std::string, bool> advancedBoolOptions;
205 std::map<std::string, Vector> advancedVectorOptions;
214 OptimizerRep* clone()
const override;
221 #endif // SimTK_SIMMATH_OPTIMIZER_REP_H_ FunctionRep * rep
Definition: Differentiator.h:175
Given a function f(y), where f, y or both can be vectors, calculate the derivative (gradient...
Definition: Differentiator.h:77
virtual OptimizerAlgorithm getAlgorithm() const
Definition: OptimizerRep.h:158
const Differentiator & getGradientDifferentiator() const
Definition: OptimizerRep.h:148
Definition: OptimizerRep.h:36
int f(const Vector &y, Real &fy) const override
Definition: OptimizerRep.h:42
void clearMyHandle()
Definition: OptimizerRep.h:134
int f(const Vector &y, Vector &fy) const override
Definition: OptimizerRep.h:56
GradientFunction(int ny=-1, Real acc=-1)
Real constraintsEstimatedAccuracy
Definition: OptimizerRep.h:189
Real constraintTolerance
Definition: OptimizerRep.h:184
API for SimTK Simmath's optimizers.
Definition: Optimizer.h:421
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
const OptimizerSystem * sysp
Definition: OptimizerRep.h:45
Definition: OptimizerRep.h:63
bool isUsingNumericalGradient() const
Definition: OptimizerRep.h:140
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:606
virtual OptimizerRep * clone() const
Definition: OptimizerRep.h:106
Real convergenceTolerance
Definition: OptimizerRep.h:183
void setMyHandle(Optimizer &cp)
Definition: OptimizerRep.h:132
SysObjectiveFunc(int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:38
static bool isAvailable()
Definition: OptimizerRep.h:107
int maxIterations
Definition: OptimizerRep.h:185
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
int diagnosticsLevel
Definition: OptimizerRep.h:182
Real objectiveEstimatedAccuracy
Definition: OptimizerRep.h:188
OptimizerRep(const OptimizerSystem &sys)
Definition: OptimizerRep.h:66
const Optimizer & getMyHandle() const
Definition: OptimizerRep.h:133
Method
Definition: Differentiator.h:92
Definition: OptimizerRep.h:50
Real getEstimatedAccuracyOfObjective() const
Definition: OptimizerRep.h:143
const OptimizerSystem * sysp
Definition: OptimizerRep.h:59
SysConstraintFunc(int nf, int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:52
int limitedMemoryHistory
Definition: OptimizerRep.h:186
OptimizerRep()
Definition: OptimizerRep.h:86
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:98
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:71
const OptimizerSystem & getOptimizerSystem() const
Definition: OptimizerRep.h:111
Real getEstimatedAccuracyOfConstraints() const
Definition: OptimizerRep.h:145
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:111
Derive a concrete class from this one if you have a scalar function of multiple variables that you wa...
Definition: Differentiator.h:208
const Differentiator & getJacobianDifferentiator() const
Definition: OptimizerRep.h:153
Definition: Optimizer.h:61
OptimizerAlgorithm
The available Optimizer algorithms.
Definition: Optimizer.h:40
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
Derive a concrete class from this one if you have a set of functions (i.e., a vector-valued function)...
Definition: Differentiator.h:227
Definition: OptimizerRep.h:212
Differentiator::Method getDifferentiatorMethod() const
Definition: OptimizerRep.h:142
bool isUsingNumericalJacobian() const
Definition: OptimizerRep.h:141
Differentiator::Method diffMethod
Definition: OptimizerRep.h:187