Brush C++ API
A flexible interpretable machine learning framework
Loading...
Searching...
No Matches
Brush::Var::Variation< T > Class Template Reference

Class representing the variation operators in Brush. More...

#include <variation.h>

Collaboration diagram for Brush::Var::Variation< T >:

Public Member Functions

 Variation ()=default
 Default constructor.
 
 Variation (Parameters &params, SearchSpace &ss)
 Constructor that initializes the Variation object with parameters and search space.
 
 ~Variation ()
 Destructor.
 
void init (Parameters &params, SearchSpace &ss)
 Initializes the Variation object with parameters and search space.
 
std::optional< Individual< T > > cross (const Individual< T > &mom, const Individual< T > &dad)
 Performs crossover operation on two individuals.
 
std::optional< Individual< T > > mutate (const Individual< T > &parent)
 Performs mutation operation on an individual.
 
void vary (Population< T > &pop, int island, const vector< size_t > &parents)
 Handles variation of a population.
 

Private Attributes

SearchSpace search_space
 
Parameters parameters
 

Detailed Description

template<ProgramType T>
class Brush::Var::Variation< T >

Class representing the variation operators in Brush.

The Variation class is responsible for performing individual-level variations and handling the variation of a population in Brush. It contains methods for crossing individuals, mutating individuals, and varying a population.

Definition at line 53 of file variation.h.

Constructor & Destructor Documentation

◆ Variation() [1/2]

template<ProgramType T>
Brush::Var::Variation< T >::Variation ( )
default

Default constructor.

◆ Variation() [2/2]

template<ProgramType T>
Brush::Var::Variation< T >::Variation ( Parameters & params,
SearchSpace & ss )
inline

Constructor that initializes the Variation object with parameters and search space.

Parameters
paramsThe parameters for the variation operator.
ssThe search space for the variation operator.

Definition at line 66 of file variation.h.

◆ ~Variation()

template<ProgramType T>
Brush::Var::Variation< T >::~Variation ( )
inline

Destructor.

Definition at line 74 of file variation.h.

Member Function Documentation

◆ cross()

template<Brush::ProgramType T>
std::optional< Individual< T > > Brush::Var::Variation< T >::cross ( const Individual< T > & mom,
const Individual< T > & dad )

Performs crossover operation on two individuals.

Stochastically swaps subtrees between root and other, returning a new program.

Parameters
momThe first parent individual.
dadThe second parent individual.
Returns
An optional containing the offspring individual if the crossover is successful, or an empty optional otherwise.

The spot where the cross will take place in the root parent is sampled based on attribute get_prob_change of each node in the tree. After selecting the cross spot, the program will iterate through the other parent searching for all compatible sub-trees to replace.

Due to the stochastic behavior, it may come to a case where there is no candidate to replace the spot node. In this case, the method returns std::nullopt (and has overloads so it can be used in a boolean context).

If the cross succeeds, the child program can be accessed through the .value() attribute of the std::optional. TODO: update this documentation (it doesnt take the program but the individual. also update mutation documentation) This means that, if you use the cross as auto opt = mutate(parent, SS), either opt==false or opt.value() contains the child.

Template Parameters
Tthe program type
Parameters
rootthe root parent
otherthe donating parent
Returns
std::optional that may contain the child program of type T

Definition at line 345 of file variation.cpp.

Here is the call graph for this function:

◆ init()

template<ProgramType T>
void Brush::Var::Variation< T >::init ( Parameters & params,
SearchSpace & ss )
inline

Initializes the Variation object with parameters and search space.

Parameters
paramsThe parameters for the variation operator.
ssThe search space for the variation operator.

Definition at line 82 of file variation.h.

◆ mutate()

template<Brush::ProgramType T>
std::optional< Individual< T > > Brush::Var::Variation< T >::mutate ( const Individual< T > & parent)

Performs mutation operation on an individual.

Stochastically mutate a program.

Parameters
parentThe parent individual.
Returns
An optional containing the mutated individual if the mutation is successful, or an empty optional otherwise.

Types of mutation:

  • point mutation changes a single node.
  • insertion mutation inserts a node as the parent of an existing node, and fills in the other arguments.
  • deletion mutation deletes a node.
  • subtree mutation inserts a new subtree into the program.
  • toggle_weight_on mutation turns a node's weight ON.
  • toggle_weight_off mutation turns a node's weight OFF.

Every mutation has a probability (weight) based on global parameters. The spot where the mutation will take place is sampled based on attribute get_prob_change of each node in the tree. Inside each type of mutation, when a new node is inserted, it is sampled based on terminal_weights.

Due to the stochastic behavior, and the several sampling steps, it may come to a case where the search space does not hold any possible modification to do in the program. In this case, the method returns std::nullopt (and has overloads so it can be used in a boolean context).

If the mutation succeeds, the mutated program can be accessed through the .value() attribute of the std::optional.

This means that, if you use the mutation as auto opt = mutate(parent, SS), either opt==false or opt.value() contains the child program.

Template Parameters
Tprogram type
Parameters
parentthe program to be mutated
SSa search space
Returns
std::optional that may contain the child program of type T

Definition at line 486 of file variation.cpp.

Here is the call graph for this function:

◆ vary()

template<Brush::ProgramType T>
void Brush::Var::Variation< T >::vary ( Population< T > & pop,
int island,
const vector< size_t > & parents )

Handles variation of a population.

Parameters
popThe population to be varied.
islandThe island index.
parentsThe indices of the parent individuals.
pThe parameters for the variation operator.

Definition at line 578 of file variation.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ parameters

template<ProgramType T>
Parameters Brush::Var::Variation< T >::parameters
private

Definition at line 119 of file variation.h.

◆ search_space

template<ProgramType T>
SearchSpace Brush::Var::Variation< T >::search_space
private

Definition at line 118 of file variation.h.


The documentation for this class was generated from the following files: