public abstract class ProbabilitySelector<G extends Gene<?,G>,C extends Comparable<? super C>> extends Object implements Selector<G,C>
Fitness proportional selection works as shown in the figure above. The runtime complexity of the implemented probability selectors is O(n+log(n)) instead of O(n2) as for the naive approach: A binary (index) search is performed on the summed probability array.
Modifier | Constructor and Description |
---|---|
protected |
ProbabilitySelector()
Create a new selector with
sorted = false . |
protected |
ProbabilitySelector(boolean sorted)
Create a new
ProbabilitySelector with the given sorting
flag. |
Modifier and Type | Method and Description |
---|---|
protected abstract double[] |
probabilities(Population<G,C> population,
int count)
Return an Probability array, which corresponds to the given Population.
|
protected double[] |
probabilities(Population<G,C> population,
int count,
Optimize opt)
This method takes the probabilities from the
probabilities(Population, int) method and inverts it if needed. |
Population<G,C> |
select(Population<G,C> population,
int count,
Optimize opt)
Select phenotypes from the Population.
|
protected ProbabilitySelector(boolean sorted)
ProbabilitySelector
with the given sorting
flag. This flag must set to true
if the selector
implementation is sorting the population in the
probabilities(Population, int)
method.sorted
- true
if the implementation is sorting the
population when calculating the selection probabilities,
false
otherwise.protected ProbabilitySelector()
sorted = false
.public Population<G,C> select(Population<G,C> population, int count, Optimize opt)
Selector
select
in interface Selector<G extends Gene<?,G>,C extends Comparable<? super C>>
population
- The population to select from.count
- The number of phenotypes to select.opt
- Determines whether the individuals with higher fitness values
or lower fitness values must be selected. This parameter determines
whether the GA maximizes or minimizes the fitness function.protected final double[] probabilities(Population<G,C> population, int count, Optimize opt)
probabilities(Population, int)
method and inverts it if needed.population
- The population.count
- The number of phenotypes to select.opt
- Determines whether the individuals with higher fitness values
or lower fitness values must be selected. This parameter
determines whether the GA maximizes or minimizes the fitness
function.protected abstract double[] probabilities(Population<G,C> population, int count)
Return an Probability array, which corresponds to the given Population. The probability array and the population must have the same size. The population is not sorted. If a subclass needs a sorted population, the subclass is responsible to sort the population.
The implementer always assumes that higher fitness values are better. The base class inverts the probabilities (p = 1.0 - p
) if the GA is
supposed to minimize the fitness function.population
- The unsorted population.count
- The number of phenotypes to select. This parameter is not
needed for most implementations.population.size()
and must sum to
one. The returned value is checked with
assert(Math.abs(math.sum(probabilities) - 1.0) < 0.0001)
in the base class.© 2007-2014 Franz Wilhelmstötter (2014-12-28 10:45)