chrono::ChOptimizerGradient Class Reference
Description
Class for local optimization with the cheap method of gradient and bisection.
#include <ChSolvmin.h>
Inheritance diagram for chrono::ChOptimizerGradient:
Collaboration diagram for chrono::ChOptimizerGradient:
Public Member Functions | |
ChOptimizerGradient (const ChOptimizerGradient &other) | |
virtual bool | DoOptimize () override |
This function computes the optimal xv[]. More... | |
Public Member Functions inherited from chrono::ChOptimizer | |
ChOptimizer (const ChOptimizer &other) | |
virtual void | SetObjective (ChFx *mformula) |
Sets the objective function to maximize. | |
virtual ChFx * | GetObjective () const |
virtual void | SetObjectiveGrad (ChFx *mformula) |
Sets the objective function gradient (not mandatory, because if not set, the default bacward differentiation is used). | |
virtual ChFx * | GetObjectiveGrad () const |
virtual void | SetNumOfVars (int mv) |
Set the number of optimization variables. More... | |
virtual int | GetNumOfVars () const |
Returns the number of optimization variables. | |
double * | GetXv () const |
double * | GetXv_sup () const |
double * | GetXv_inf () const |
void | SetXv (double *mx) |
void | SetXv_sup (double *mx) |
void | SetXv_inf (double *mx) |
double | Eval_fx (double x[]) |
Returns the value of the functional, for given state of variables and with the given "database" multibody system. More... | |
double | Eval_fx (const ChVectorDynamic<> &x) |
void | Eval_grad (double x[], double gr[]) |
Computes the gradient of objective function, for given state of variables. More... | |
void | Eval_grad (const ChVectorDynamic<> &x, ChVectorDynamic<> &gr) |
virtual bool | PreOptimize () |
Performs the optimization of the ChSystem pointed by "database" (or whatever object which can evaluate the string "function" and the "optvarlist") using the current parameters. More... | |
virtual bool | PostOptimize () |
Finalization and cleanup. | |
virtual bool | Optimize () |
Does the three steps in sequence PreOptimize, DoOptimize, PostOptimize. More... | |
void | DoBreakCheck () |
Each break_cycles number of times this fx is called, the function break_funct() is evaluated (if any) and if positive, the variable user_break becomes true. | |
Public Attributes | |
double | initial_step |
def = 1; initial trial step size | |
double | arg_tol |
argument rel.error, def 1.e-6 | |
double | fun_tol |
function rel error, def 1.e-7 | |
int | maxevaluations |
max number of fx evaluations, def 800; | |
int | maxgradients |
max number of gradient evaluations, def 50; | |
int | maxdilationsteps |
max number of 'exploring' steps in forward gradient direction (def 8); | |
int | maxbisections |
number of bisections in climbing interval, before recomputing gradient (def 10); | |
double | dilation |
space dilation coeff, def. 2 | |
bool | do_conjugate |
if true, corrects the gradient by conjugate method (default= off) | |
Public Attributes inherited from chrono::ChOptimizer | |
bool | minimize |
default = false; just maximize | |
double | grad_step |
default = 1.e-12; step size for evaluation of gradient | |
double | opt_fx |
best resulting value of objective function | |
char | err_message [200] |
the ok/warning/error messages are written here | |
int | error_code |
long | fx_evaluations |
number of function evaluations | |
long | grad_evaluations |
number of gradient evaluations | |
int(* | break_funct )() |
if not null, this function is called each 'break_cycles' evaluations | |
int | break_cycles |
how many fx evaluations per check | |
int | user_break |
if break_funct() reported true, this flag is ON, and optimizers should exit all cycles | |
int | break_cyclecounter |
internal | |
Additional Inherited Members | |
Protected Attributes inherited from chrono::ChOptimizer | |
ChFx * | afunction |
the function to be maximized | |
ChFx * | afunctionGrad |
the gradient of the function to be maximized, or null for default BDF. | |
int | C_vars |
number of input variables | |
double * | xv |
Vector of variables, also 1st approximation. | |
double * | xv_sup |
These are the hi/lo limits for the variables,. | |
double * | xv_inf |
these are not used by all optimizer, and can be NULL for gradient, but needed for genetic. | |
Member Function Documentation
◆ DoOptimize()
|
overridevirtual |
This function computes the optimal xv[].
It must be implemented by derived classes
Reimplemented from chrono::ChOptimizer.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/solver/ChSolvmin.h
- /builds/uwsbel/chrono/src/chrono/solver/ChSolvmin.cpp