Class UFTournamentSelector<G extends Gene<?,​G>,​C extends Comparable<? super 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 Detail

      • 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:
        ofVec()
    • Method Detail

      • 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