1 package net.bmahe.genetics4j.core.util;
2
3 import java.util.Comparator;
4 import java.util.Objects;
5
6 import net.bmahe.genetics4j.core.Individual;
7 import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
8
9 public class IndividualUtils {
10
11 private IndividualUtils() {
12 }
13
14 public static <T extends Comparable<T>> Comparator<Individual<T>> fitnessBasedComparator(
15 final AbstractEAConfiguration<T> eaConfiguration) {
16 Objects.requireNonNull(eaConfiguration);
17
18 final Comparator<Individual<T>> individualComparator = Comparator.comparing(Individual<T>::fitness);
19
20 return switch (eaConfiguration.optimization()) {
21 case MAXIMIZE -> individualComparator;
22 case MINIMIZE -> individualComparator.reversed();
23 };
24 }
25 }