Package de.sfuhrm.genetic
Class GeneticAlgorithm<H extends AbstractHypothesis<H>>
- java.lang.Object
-
- de.sfuhrm.genetic.GeneticAlgorithm<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 Summary
Constructors Constructor Description GeneticAlgorithm(double inCrossOverRate, double inMutationRate, int inGenerationSize)Constructs a new genetic algorithm.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcrossover(List<H> population, Collection<H> selectedSet)Cross-overs a fraction ofcrossOverRatehypothesis relative to their fitness.Optional<H>findMaximum(Function<H,Boolean> loopCondition, Supplier<H> hypothesisSupplier)Perform the genetic operation.protected Optional<H>max(Collection<H> in)Find the maximum fitness element of the given collection.protected voidmutate(List<H> selectedSet)Mutates a fraction ofmutationRatehypothesis.protected HprobabilisticSelect(List<H> population, Collection<H> targetList, boolean addToTargetList)Probabilistically selects one hypothesis relative to the selection probability of it.protected voidselect(List<H> population, Collection<H> selectedList)Selects a fraction of1-crossOverRatehypothesis relative to their fitness.
-
-
-
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 of1-crossOverRatehypothesis 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 ofcrossOverRatehypothesis 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 ofmutationRatehypothesis.- 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.
-
-