Class GeneticAlgorithm<H extends AbstractHypothesis<H>>

  • Type Parameters:
    H - The hypothesis class to use.

    public class GeneticAlgorithm<H extends AbstractHypothesis<H>>
    extends Object
    Generic genetic algorithm implementation.
    Author:
    Stephan Fuhrmann
    • Constructor Detail

      • GeneticAlgorithm

        public GeneticAlgorithm​(double inCrossOverRate,
                                double inMutationRate,
                                int inGenerationSize)
        Constructs a new genetic algorithm.
        Parameters:
        inCrossOverRate - the fraction at which the cross over operator is applied to the population, between 0 and 1.
        inMutationRate - the fraction at which the mutation operator is applied to the population, between 0 and 1.
        inGenerationSize - the number of individual hypothesis in the population for each generation, greater than 1.
        Throws:
        IllegalArgumentException - if the parameters are illegal.
    • Method Detail

      • select

        protected void select​(List<H> population,
                              Collection<H> selectedList)
        Selects a fraction of 1-crossOverRate hypothesis relative to their fitness.
        Parameters:
        population - the population to select on.
        selectedList - the target list to put selected elements to.
      • crossover

        protected void crossover​(List<H> population,
                                 Collection<H> selectedSet)
        Cross-overs a fraction of crossOverRate hypothesis relative to their fitness.
        Parameters:
        population - the population to select on.
        selectedSet - the target set to put crossed over elements to.
      • mutate

        protected void mutate​(List<H> selectedSet)
        Mutates a fraction of mutationRate hypothesis.
        Parameters:
        selectedSet - the population to mutate on.
      • probabilisticSelect

        protected H probabilisticSelect​(List<H> population,
                                        Collection<H> targetList,
                                        boolean addToTargetList)
        Probabilistically selects one hypothesis relative to the selection probability of it.
        Parameters:
        population - the population to select from.
        targetList - the target list to eventually add the element to.
        addToTargetList - whether to add the element to the targetList.
        Returns:
        the selected element.
      • max

        protected Optional<H> max​(Collection<H> in)
        Find the maximum fitness element of the given collection.
        Parameters:
        in - the population to find the maximum in.
        Returns:
        the maximum element, if any.
      • findMaximum

        public Optional<H> findMaximum​(Function<H,​Boolean> loopCondition,
                                       Supplier<H> hypothesisSupplier)
        Perform the genetic operation.
        Parameters:
        loopCondition - the abort condition that stays true while the maximum is not yet reached. Gets presented the best hypothesis as input.
        hypothesisSupplier - creation function for new hypothesis.
        Returns:
        the maximum element, if any.