Class UFTournamentSelector<G extends Gene<?,G>,C extends Comparable<? super C>>

java.lang.Object
io.jenetics.ext.moea.UFTournamentSelector<G,C>
All Implemented Interfaces:
Selector<G,C>

public class UFTournamentSelector<G extends Gene<?,G>,C extends Comparable<? super C>> extends Object implements Selector<G,C>
Unique fitness based tournament selection.

The selection of unique fitnesses lifts the selection bias towards over-represented fitnesses by reducing multiple solutions sharing the same fitness to a single point in the objective space. It is therefore no longer required to assign a crowding distance of zero to individual of equal fitness as the selection operator correctly enforces diversity preservation by picking unique points in the objective space.

Reference: FĂ©lix-Antoine Fortin and Marc Parizeau. 2013. Revisiting the NSGA-II crowding-distance computation. In Proceedings of the 15th annual conference on Genetic and evolutionary computation (GECCO '13), Christian Blum (Ed.). ACM, New York, NY, USA, 623-630. DOI= 10.1145/2463372.2463456

Since:
4.1
Version:
4.1
  • Constructor Details

    • UFTournamentSelector

      public UFTournamentSelector(Comparator<? super C> dominance, ElementComparator<? super C> comparator, ElementDistance<? super C> distance, ToIntFunction<? super C> dimension)
      Creates a new UFTournamentSelector with the functions needed for handling the multi-objective result type C. For the Vec classes, a selector is created like in the following example:
      new UFTournamentSelector<>(
          Vec<T>::dominance,
          Vec<T>::compare,
          Vec<T>::distance,
          Vec<T>::length
      );
      
      Parameters:
      dominance - the pareto dominance comparator
      comparator - the vector element comparator
      distance - the vector element distance
      dimension - the dimensionality of vector type C
      See Also:
  • Method Details

    • select

      public ISeq<Phenotype<G,C>> select(Seq<Phenotype<G,C>> population, int count, Optimize opt)
      Specified by:
      select in interface Selector<G extends Gene<?,G>,C extends Comparable<? super C>>
    • ofVec

      public static <G extends Gene<?, G>, T, V extends Vec<T>> UFTournamentSelector<G,V> ofVec()
      Return a new selector for the given result type V. This method is a shortcut for
      new UFTournamentSelector<>(
          Vec<T>::dominance,
          Vec<T>::compare,
          Vec<T>::distance,
          Vec<T>::length
      );
      
      Type Parameters:
      G - the gene type
      T - the array type, e.g. double[]
      V - the multi object result type vector
      Returns:
      a new selector for the given result type V