Model-Based Crossover Operator
With the GGA++ tuning algorithm, OPTANO Algorithm Tuner offers an alternative method for GGA to generate offspring. Instead of the classical genetic crossover, a model-based crossover operator can be used. The operator trains a random forest model that predicts the performance of some potential offspring (i.e. a combination of a tournament winner and a non-competitive genome).
For each pair of parents a set of potential offspring is generated (using a targeted sampling method) and the offspring with the best predicted rank (=performance) is selected. Specific details on the algorithm can be found in this paper.
Usage
OPTANO Algorithm Tuner provides several flavors with respect to the internal components that are used by the model-based crossover operator. The default implementation of the OPTANO Algorithm Tuner uses the following set of components:
- Learner Model
StandardRandomForestLearner<ReuseOldTreesStrategy>
- Predictor Model
GenomePredictionForestModel<GenomePredictionTree>
- Sampling Strategy
ReuseOldTreesStrategy
These components, that can be specified via generic type parameters for the AlgorithmTuner
, mainly reflect the behavior that is described in the referenced paper.
An exception to this is the learner model: The original learner model is implemented in GenomePredictionRandomForest<ReuseOldTreesStrategy
and can still be specified. However, internal experiments have shown that a standard random forest often leads to better results in practice.
Another setting which has proven beneficial in some cases is the following configuration:
- Additional parameters
- Make sure to use the
HammingDistance
with--maxRanksCompensatedByDistance
approx. 20% of your--miniTournamentSize
.
- Make sure to use the
In order to enable the model-based crossover, you need to set the --engineeredProportion
to a value larger than 0.