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 );
125 bool getAdvancedStrOption(
const std::string &option, std::string &value )
const;
126 bool getAdvancedRealOption(
const std::string &option,
Real &value )
const;
127 bool getAdvancedIntOption(
const std::string &option,
int &value )
const;
128 bool getAdvancedBoolOption(
const std::string &option,
bool &value )
const;
134 void useNumericalGradient(
bool flag,
Real objEstAccuracy);
135 void useNumericalJacobian(
bool flag,
Real consEstAccuracy);
142 {
return objectiveEstimatedAccuracy; }
144 {
return constraintsEstimatedAccuracy; }
160 static int numericalGradient_static(
const OptimizerSystem&,
const Vector & parameters,
const bool new_parameters,
Vector &gradient );
162 const Vector& parameters,
const bool new_parameters,
Matrix& jacobian );
170 static int objectiveFuncWrapper (
int n,
const Real* x,
int new_x,
Real* f,
void* rep);
171 static int gradientFuncWrapper (
int n,
const Real* x,
int new_x,
Real* gradient,
void* rep);
172 static int constraintFuncWrapper(
int n,
const Real* x,
int new_x,
int m,
Real* g,
void* rep);
173 static int constraintJacobianWrapper(
int n,
const Real* x,
int new_x,
int m,
int nele_jac,
174 int* iRow,
int* jCol,
Real* values,
void* rep);
175 static int hessianWrapper(
int n,
const Real* x,
int new_x,
Real obj_factor,
176 int m,
Real* lambda,
int new_lambda,
177 int nele_hess,
int* iRow,
int* jCol,
178 Real* values,
void* rep);
191 bool numericalGradient;
192 bool numericalJacobian;
199 std::map<std::string, std::string> advancedStrOptions;
200 std::map<std::string, Real> advancedRealOptions;
201 std::map<std::string, int> advancedIntOptions;
202 std::map<std::string, bool> advancedBoolOptions;
218 #endif // SimTK_SIMMATH_OPTIMIZER_REP_H_
Given a function f(y), where f, y or both can be vectors, calculate the derivative (gradient...
Definition: Differentiator.h:77
Real getEstimatedAccuracyOfConstraints() const
Definition: OptimizerRep.h:143
Definition: OptimizerRep.h:36
JacobianFunction(int nf=-1, int ny=-1, Real acc=-1)
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
void clearMyHandle()
Definition: OptimizerRep.h:132
GradientFunction(int ny=-1, Real acc=-1)
Real constraintsEstimatedAccuracy
Definition: OptimizerRep.h:187
Real constraintTolerance
Definition: OptimizerRep.h:182
API for SimTK Simmath's optimizers.
Definition: Optimizer.h:355
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
int f(const Vector &y, Vector &fy) const
Definition: OptimizerRep.h:56
const Optimizer & getMyHandle() const
Definition: OptimizerRep.h:131
const OptimizerSystem * sysp
Definition: OptimizerRep.h:45
Definition: OptimizerRep.h:63
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:577
Real convergenceTolerance
Definition: OptimizerRep.h:181
void setMyHandle(Optimizer &cp)
Definition: OptimizerRep.h:130
const Differentiator & getJacobianDifferentiator() const
Definition: OptimizerRep.h:151
Real getEstimatedAccuracyOfObjective() const
Definition: OptimizerRep.h:141
SysObjectiveFunc(int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:38
static bool isAvailable()
Definition: OptimizerRep.h:107
int maxIterations
Definition: OptimizerRep.h:183
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
int diagnosticsLevel
Definition: OptimizerRep.h:180
virtual OptimizerRep * clone() const
Definition: OptimizerRep.h:106
Real objectiveEstimatedAccuracy
Definition: OptimizerRep.h:186
OptimizerRep(const OptimizerSystem &sys)
Definition: OptimizerRep.h:66
int f(const Vector &y, Real &fy) const
Definition: OptimizerRep.h:42
Method
Definition: Differentiator.h:92
Definition: OptimizerRep.h:50
bool isUsingNumericalGradient() const
Definition: OptimizerRep.h:138
const OptimizerSystem * sysp
Definition: OptimizerRep.h:59
SysConstraintFunc(int nf, int ny, const OptimizerSystem *sysPtr)
Definition: OptimizerRep.h:52
int limitedMemoryHistory
Definition: OptimizerRep.h:184
OptimizerRep()
Definition: OptimizerRep.h:86
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
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...
const Differentiator & getGradientDifferentiator() const
Definition: OptimizerRep.h:146
Abstract class which defines an objective/cost function which is optimized by and Optimizer object...
Definition: Optimizer.h:71
bool isUsingNumericalJacobian() const
Definition: OptimizerRep.h:139
const OptimizerSystem & getOptimizerSystem() const
Definition: OptimizerRep.h:111
Differentiator::Method getDifferentiatorMethod() const
Definition: OptimizerRep.h:140
Derive a concrete class from this one if you have a scalar function of multiple variables that you wa...
Definition: Differentiator.h:208
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:209
virtual OptimizerAlgorithm getAlgorithm() const
Definition: OptimizerRep.h:156
Differentiator::Method diffMethod
Definition: OptimizerRep.h:185