chrono::ChOptimizerGenetic Class Reference
  Description
Class for global optimization with the genetic method (evolutive simulation).
#include <ChSolvmin.h>
Inheritance diagram for chrono::ChOptimizerGenetic:

Collaboration diagram for chrono::ChOptimizerGenetic:

Public Member Functions | |
| ChOptimizerGenetic (const ChOptimizerGenetic &other) | |
| virtual bool | DoOptimize () override | 
| This function computes the optimal xv[].  More... | |
| bool | CreatePopulation (ChGenotype **&my_population, int my_popsize) | 
| bool | DeletePopulation (ChGenotype **&my_population, int my_popsize) | 
| ChGenotype * | Select_roulette (ChGenotype **my_population) | 
| ChGenotype * | Select_best (ChGenotype **my_population) | 
| ChGenotype * | Select_worst (ChGenotype **my_population) | 
| double | Get_fitness_interval (ChGenotype **my_population) | 
| double | ComputeFitness (ChGenotype *) | 
| void | ApplyCrossover (ChGenotype *par1, ChGenotype *par2, ChGenotype &child1, ChGenotype &child2) | 
| bool | InitializePopulation () | 
| bool | ComputeAllFitness () | 
| void | Selection () | 
| void | Crossover () | 
| void | Mutation () | 
| void | PopulationStats (double &average, double &max, double &min, double &stdeviation) | 
| void | LogOut (bool filelog) | 
  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 | |
| int | popsize | 
| def = 100; initial population size in array "population"  | |
| ChGenotype ** | population | 
| Array of pointers to population genotypes.  | |
| ChGenotype * | best_indiv | 
| Copy of the individual with best fitness found in latest optimization.  | |
| int | max_generations | 
| max number of generations to perform  | |
| SelectionType | selection | 
| reproduction (selection) type  | |
| CrossoverType | crossover | 
| crossover type  | |
| MutationType | mutation | 
| mutation type;  | |
| bool | elite | 
| if true, best parent is always kept after crossover  | |
| CrossoverChangeType | crossv_change | 
| see codes above, if NO_CHANGE the crossover type is always the same  | |
| CrossoverType | crossv_changeto | 
| the type of new crossover if using crossv_change  | |
| long | crossv_changewhen | 
| generation number, when the "change of crossover type" takes place  | |
| double | mutation_prob | 
| probability of mutation, 0..1, default = 0.001  | |
| double | crossover_prob | 
| crossover probability, default = 0.3;  | |
| bool | speciation_mating | 
| if true, marriage happens between similar individuals;  | |
| bool | incest_taboo | 
| if true, avoids marriage between individuals too similar  | |
| ReplaceMode | replacement | 
| replacement mode  | |
| double | eugenetics | 
| range (0..1); if 0, no eugenetics, otherwise clamp for fitness (normalized in 0..1)  | |
| bool | stop_by_stdeviation | 
| if true... (def: false)  | |
| double | stop_stdeviation | 
| stop search if stdeviation becomes lower than this value (def.0)  | |
| bool | stop_by_fitness | 
| if true... (def. false)  | |
| double | stop_fitness | 
| stop search if fitness of best individual exceed this value (def.0)  | |
| double | average | 
| the average fitness of individuals  | |
| double | stdeviation | 
| the unbiased standard deviation (=sqrt(variance)) of fitness  | |
| double | min_fitness | 
| double | max_fitness | 
| long | generations_done | 
| number of generations performed  | |
| long | mutants | 
| mutated individuals since start of optimizations  | |
| ChVectorDynamic * | his_average | 
| ChVectorDynamic * | his_stdeviation | 
| ChVectorDynamic * | his_maxfitness | 
| ChVectorDynamic * | his_minfitness | 
  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  | |
| std::string | err_message | 
| error message  | |
| int | error_code | 
| numeric 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
◆ Crossover()
| void chrono::ChOptimizerGenetic::Crossover | ( | ) | 
if (par1->genes->Equals(par2->genes)) /cout << "\n --incest";
◆ 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
 
 Public Member Functions inherited from