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)
144 {
return objectiveEstimatedAccuracy; }
146 {
return constraintsEstimatedAccuracy; }
164 const Vector& parameters,
const bool new_parameters,
Matrix& jacobian );
176 int* iRow,
int* jCol,
Real* values,
void* rep);
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;
This is the header file that user code should include to pick up the SimTK Simmath numerical differen...
Includes internal headers providing declarations for the basic SimTK Core classes,...
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
Definition: OptimizerRep.h:212
Derive a concrete class from this one if you have a scalar function of multiple variables that you wa...
Definition: Differentiator.h:208
GradientFunction(int ny=-1, Real acc=-1)
Derive a concrete class from this one if you have a set of functions (i.e., a vector-valued function)...
Definition: Differentiator.h:227
JacobianFunction(int nf=-1, int ny=-1, Real acc=-1)
Given a function f(y), where f, y or both can be vectors, calculate the derivative (gradient,...
Definition: Differentiator.h:77
Method
Definition: Differentiator.h:92
Abstract class which defines an objective/cost function which is optimized by and Optimizer object.
Definition: Optimizer.h:71
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
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
Definition: OptimizerRep.h:63
void setMaxIterations(const int iter)
static int constraintFuncWrapper(int n, const Real *x, int new_x, int m, Real *g, void *rep)
bool setAdvancedStrOption(const std::string &option, const std::string &value)
int limitedMemoryHistory
Definition: OptimizerRep.h:186
Real getEstimatedAccuracyOfObjective() const
Definition: OptimizerRep.h:143
static int numericalGradient_static(const OptimizerSystem &, const Vector ¶meters, const bool new_parameters, Vector &gradient)
virtual OptimizerRep * clone() const
Definition: OptimizerRep.h:106
void clearMyHandle()
Definition: OptimizerRep.h:134
Real convergenceTolerance
Definition: OptimizerRep.h:183
void setDifferentiatorMethod(Differentiator::Method method)
void useNumericalJacobian(bool flag, Real consEstAccuracy)
bool getAdvancedStrOption(const std::string &option, std::string &value) const
static bool isAvailable()
Definition: OptimizerRep.h:107
Real constraintTolerance
Definition: OptimizerRep.h:184
bool isUsingNumericalJacobian() const
Definition: OptimizerRep.h:141
void setDiagnosticsLevel(const int level)
bool setAdvancedRealOption(const std::string &option, const Real value)
static int constraintJacobianWrapper(int n, const Real *x, int new_x, int m, int nele_jac, int *iRow, int *jCol, Real *values, void *rep)
void setLimitedMemoryHistory(const int history)
bool getAdvancedIntOption(const std::string &option, int &value) const
OptimizerRep()
Definition: OptimizerRep.h:86
virtual Real optimize(Vector &results)=0
bool getAdvancedVectorOption(const std::string &option, Vector &value) const
void setConstraintTolerance(Real tolerance)
void setConvergenceTolerance(Real accuracy)
const Optimizer & getMyHandle() const
Definition: OptimizerRep.h:133
static int hessianWrapper(int n, const Real *x, int new_x, Real obj_factor, int m, Real *lambda, int new_lambda, int nele_hess, int *iRow, int *jCol, Real *values, void *rep)
virtual OptimizerAlgorithm getAlgorithm() const
Definition: OptimizerRep.h:158
bool setAdvancedBoolOption(const std::string &option, const bool value)
bool isUsingNumericalGradient() const
Definition: OptimizerRep.h:140
bool getAdvancedBoolOption(const std::string &option, bool &value) const
static int gradientFuncWrapper(int n, const Real *x, int new_x, Real *gradient, void *rep)
int maxIterations
Definition: OptimizerRep.h:185
bool setAdvancedIntOption(const std::string &option, const int value)
Real getEstimatedAccuracyOfConstraints() const
Definition: OptimizerRep.h:145
static int numericalJacobian_static(const OptimizerSystem &, const Vector ¶meters, const bool new_parameters, Matrix &jacobian)
Differentiator::Method diffMethod
Definition: OptimizerRep.h:187
Real constraintsEstimatedAccuracy
Definition: OptimizerRep.h:189
bool setAdvancedVectorOption(const std::string &option, const Vector value)
const Differentiator & getJacobianDifferentiator() const
Definition: OptimizerRep.h:153
OptimizerRep(const OptimizerSystem &sys)
Definition: OptimizerRep.h:66
const Differentiator & getGradientDifferentiator() const
Definition: OptimizerRep.h:148
Real objectiveEstimatedAccuracy
Definition: OptimizerRep.h:188
void setMyHandle(Optimizer &cp)
Definition: OptimizerRep.h:132
const OptimizerSystem & getOptimizerSystem() const
Definition: OptimizerRep.h:111
static int objectiveFuncWrapper(int n, const Real *x, int new_x, Real *f, void *rep)
Differentiator::Method getDifferentiatorMethod() const
Definition: OptimizerRep.h:142
void useNumericalGradient(bool flag, Real objEstAccuracy)
int diagnosticsLevel
Definition: OptimizerRep.h:182
bool getAdvancedRealOption(const std::string &option, Real &value) const
API for SimTK Simmath's optimizers.
Definition: Optimizer.h:421
Definition: OptimizerRep.h:50
int f(const Vector &y, Vector &fy) const override
Definition: OptimizerRep.h:56
SysConstraintFunc(int nf, int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:52
const OptimizerSystem * sysp
Definition: OptimizerRep.h:59
Definition: OptimizerRep.h:36
SysObjectiveFunc(int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:38
const OptimizerSystem * sysp
Definition: OptimizerRep.h:45
int f(const Vector &y, Real &fy) const override
Definition: OptimizerRep.h:42
const Real SignificantReal
SignificantReal is the smallest value that we consider to be clearly distinct from roundoff error whe...
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
OptimizerAlgorithm
The available Optimizer algorithms.
Definition: Optimizer.h:40
@ UnknownOptimizerAlgorithm
Definition: Optimizer.h:61
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:607