| 1 | package net.bmahe.genetics4j.moo.spea2.replacement; | |
| 2 | ||
| 3 | import java.util.ArrayList; | |
| 4 | import java.util.Collections; | |
| 5 | import java.util.Comparator; | |
| 6 | import java.util.HashMap; | |
| 7 | import java.util.List; | |
| 8 | import java.util.Map; | |
| 9 | import java.util.Map.Entry; | |
| 10 | import java.util.Objects; | |
| 11 | import java.util.Set; | |
| 12 | import java.util.TreeSet; | |
| 13 | import java.util.function.BiFunction; | |
| 14 | import java.util.stream.Collectors; | |
| 15 | import java.util.stream.IntStream; | |
| 16 | ||
| 17 | import org.apache.commons.lang3.Validate; | |
| 18 | import org.apache.commons.lang3.time.DurationFormatUtils; | |
| 19 | import org.apache.commons.lang3.tuple.Pair; | |
| 20 | import org.apache.logging.log4j.LogManager; | |
| 21 | import org.apache.logging.log4j.Logger; | |
| 22 | ||
| 23 | import net.bmahe.genetics4j.core.Genotype; | |
| 24 | import net.bmahe.genetics4j.core.Population; | |
| 25 | import net.bmahe.genetics4j.core.replacement.ReplacementStrategyImplementor; | |
| 26 | import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration; | |
| 27 | import net.bmahe.genetics4j.moo.spea2.spec.replacement.SPEA2Replacement; | |
| 28 | ||
| 29 | public class SPEA2ReplacementStrategyImplementor<T extends Comparable<T>> implements ReplacementStrategyImplementor<T> { | |
| 30 | final static public Logger logger = LogManager.getLogger(SPEA2ReplacementStrategyImplementor.class); | |
| 31 | ||
| 32 | private final SPEA2Replacement<T> spea2Replacement; | |
| 33 | ||
| 34 | public SPEA2ReplacementStrategyImplementor(final SPEA2Replacement<T> _spea2Replacement) { | |
| 35 |
1
1. <init> : Removed assignment to member variable spea2Replacement → NO_COVERAGE |
this.spea2Replacement = _spea2Replacement; |
| 36 | } | |
| 37 | ||
| 38 | protected double[] computeStrength(final Comparator<T> dominance, final Population<T> population) { | |
| 39 | Objects.requireNonNull(dominance); | |
| 40 | Objects.requireNonNull(population); | |
| 41 | Validate.isTrue(population.size() > 0); | |
| 42 | ||
| 43 |
1
1. computeStrength : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final double[] strengths = new double[population.size()]; |
| 44 |
6
1. computeStrength : Substituted 0 with 1 → NO_COVERAGE 2. computeStrength : negated conditional → NO_COVERAGE 3. computeStrength : changed conditional boundary → NO_COVERAGE 4. computeStrength : removed conditional - replaced comparison check with true → NO_COVERAGE 5. computeStrength : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 6. computeStrength : removed conditional - replaced comparison check with false → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 45 |
1
1. computeStrength : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
final T fitness = population.getFitness(i); |
| 46 | ||
| 47 |
2
1. computeStrength : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2Utils::strength with argument → NO_COVERAGE 2. computeStrength : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2Utils::strength → NO_COVERAGE |
strengths[i] = SPEA2Utils.strength(dominance, i, fitness, population); |
| 48 | } | |
| 49 | ||
| 50 |
1
1. computeStrength : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeStrength → NO_COVERAGE |
return strengths; |
| 51 | } | |
| 52 | ||
| 53 | protected double[][] computeObjectiveDistances(final BiFunction<T, T, Double> distance, | |
| 54 | final Population<T> population) { | |
| 55 | Objects.requireNonNull(distance); | |
| 56 | Objects.requireNonNull(population); | |
| 57 | Validate.isTrue(population.size() > 0); | |
| 58 | ||
| 59 |
2
1. computeObjectiveDistances : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 2. computeObjectiveDistances : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final double[][] distanceObjectives = new double[population.size()][population.size()]; |
| 60 | ||
| 61 |
6
1. computeObjectiveDistances : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 2. computeObjectiveDistances : negated conditional → NO_COVERAGE 3. computeObjectiveDistances : removed conditional - replaced comparison check with false → NO_COVERAGE 4. computeObjectiveDistances : changed conditional boundary → NO_COVERAGE 5. computeObjectiveDistances : removed conditional - replaced comparison check with true → NO_COVERAGE 6. computeObjectiveDistances : Substituted 0 with 1 → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 62 |
5
1. computeObjectiveDistances : changed conditional boundary → NO_COVERAGE 2. computeObjectiveDistances : removed conditional - replaced comparison check with true → NO_COVERAGE 3. computeObjectiveDistances : removed conditional - replaced comparison check with false → NO_COVERAGE 4. computeObjectiveDistances : Substituted 0 with 1 → NO_COVERAGE 5. computeObjectiveDistances : negated conditional → NO_COVERAGE |
for (int j = 0; j < i; j++) { |
| 63 |
4
1. computeObjectiveDistances : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE 2. computeObjectiveDistances : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE 3. computeObjectiveDistances : replaced call to java/util/function/BiFunction::apply with argument → NO_COVERAGE 4. computeObjectiveDistances : removed call to java/util/function/BiFunction::apply → NO_COVERAGE |
final Double distanceMeasure = distance.apply(population.getFitness(i), population.getFitness(j)); |
| 64 |
1
1. computeObjectiveDistances : removed call to java/lang/Double::doubleValue → NO_COVERAGE |
distanceObjectives[i][j] = distanceMeasure; |
| 65 |
1
1. computeObjectiveDistances : removed call to java/lang/Double::doubleValue → NO_COVERAGE |
distanceObjectives[j][i] = distanceMeasure; |
| 66 | } | |
| 67 | ||
| 68 |
1
1. computeObjectiveDistances : Substituted 0.0 with 1.0 → NO_COVERAGE |
distanceObjectives[i][i] = 0.0; |
| 69 | } | |
| 70 |
1
1. computeObjectiveDistances : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeObjectiveDistances → NO_COVERAGE |
return distanceObjectives; |
| 71 | } | |
| 72 | ||
| 73 | protected double[] computeRawFitness(final Comparator<T> dominance, final double[] strengths, | |
| 74 | final Population<T> population) { | |
| 75 | Objects.requireNonNull(dominance); | |
| 76 | Objects.requireNonNull(strengths); | |
| 77 | Objects.requireNonNull(population); | |
| 78 | Validate.isTrue(population.size() == strengths.length); | |
| 79 | Validate.isTrue(population.size() > 0); | |
| 80 | ||
| 81 |
1
1. computeRawFitness : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final double[] rawFitness = new double[population.size()]; |
| 82 |
6
1. computeRawFitness : Substituted 0 with 1 → NO_COVERAGE 2. computeRawFitness : removed conditional - replaced comparison check with false → NO_COVERAGE 3. computeRawFitness : removed conditional - replaced comparison check with true → NO_COVERAGE 4. computeRawFitness : negated conditional → NO_COVERAGE 5. computeRawFitness : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 6. computeRawFitness : changed conditional boundary → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 83 |
1
1. computeRawFitness : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
final T fitness = population.getFitness(i); |
| 84 | ||
| 85 |
2
1. computeRawFitness : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2Utils::rawFitness with argument → NO_COVERAGE 2. computeRawFitness : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2Utils::rawFitness → NO_COVERAGE |
rawFitness[i] = SPEA2Utils.rawFitness(dominance, strengths, i, fitness, population); |
| 86 | } | |
| 87 | ||
| 88 |
1
1. computeRawFitness : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeRawFitness → NO_COVERAGE |
return rawFitness; |
| 89 | } | |
| 90 | ||
| 91 | protected List<List<Pair<Integer, Double>>> computeSortedDistances(final double[][] distanceObjectives, | |
| 92 | final Population<T> population) { | |
| 93 | Objects.requireNonNull(distanceObjectives); | |
| 94 | Objects.requireNonNull(population); | |
| 95 | Validate.isTrue(population.size() == distanceObjectives.length); // won't test all the rows | |
| 96 | Validate.isTrue(population.size() > 0); | |
| 97 | ||
| 98 |
1
1. computeSortedDistances : removed call to java/util/ArrayList::<init> → NO_COVERAGE |
final List<List<Pair<Integer, Double>>> distances = new ArrayList<>(); |
| 99 |
6
1. computeSortedDistances : removed conditional - replaced comparison check with true → NO_COVERAGE 2. computeSortedDistances : changed conditional boundary → NO_COVERAGE 3. computeSortedDistances : Substituted 0 with 1 → NO_COVERAGE 4. computeSortedDistances : negated conditional → NO_COVERAGE 5. computeSortedDistances : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 6. computeSortedDistances : removed conditional - replaced comparison check with false → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 100 |
1
1. computeSortedDistances : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
final T fitness = population.getFitness(i); |
| 101 | ||
| 102 | final List<Pair<Integer, Double>> kthDistances = SPEA2Utils | |
| 103 |
1
1. computeSortedDistances : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2Utils::kthDistances → NO_COVERAGE |
.kthDistances(distanceObjectives, i, fitness, population); |
| 104 |
1
1. computeSortedDistances : removed call to java/util/List::add → NO_COVERAGE |
distances.add(kthDistances); |
| 105 | ||
| 106 | } | |
| 107 |
1
1. computeSortedDistances : replaced return value with Collections.emptyList for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeSortedDistances → NO_COVERAGE |
return distances; |
| 108 | } | |
| 109 | ||
| 110 | protected double[] computeDensity(final List<List<Pair<Integer, Double>>> distances, final int k, | |
| 111 | final Population<T> population) { | |
| 112 | Objects.requireNonNull(distances); | |
| 113 | Validate.isTrue(population.size() == distances.size()); | |
| 114 | Validate.isTrue(k > 0); | |
| 115 | Objects.requireNonNull(population); | |
| 116 | Validate.isTrue(population.size() > 0); | |
| 117 | ||
| 118 |
1
1. computeDensity : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final double[] density = new double[population.size()]; |
| 119 |
6
1. computeDensity : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 2. computeDensity : removed conditional - replaced comparison check with true → NO_COVERAGE 3. computeDensity : negated conditional → NO_COVERAGE 4. computeDensity : removed conditional - replaced comparison check with false → NO_COVERAGE 5. computeDensity : Substituted 0 with 1 → NO_COVERAGE 6. computeDensity : changed conditional boundary → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 120 |
2
1. computeDensity : Substituted 1.0 with 2.0 → NO_COVERAGE 2. computeDensity : removed call to java/util/List::get → NO_COVERAGE |
density[i] = 1.0d / (distances.get(i) |
| 121 |
1
1. computeDensity : removed call to java/util/List::get → NO_COVERAGE |
.get(k) |
| 122 |
5
1. computeDensity : Replaced double division with multiplication → NO_COVERAGE 2. computeDensity : Replaced double addition with subtraction → NO_COVERAGE 3. computeDensity : removed call to java/lang/Double::doubleValue → NO_COVERAGE 4. computeDensity : Substituted 2.0 with 1.0 → NO_COVERAGE 5. computeDensity : removed call to org/apache/commons/lang3/tuple/Pair::getRight → NO_COVERAGE |
.getRight() + 2); |
| 123 | } | |
| 124 | ||
| 125 |
1
1. computeDensity : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeDensity → NO_COVERAGE |
return density; |
| 126 | } | |
| 127 | ||
| 128 | protected double[] computeFinalFitness(final double[] rawFitness, final double[] density, | |
| 129 | final Population<T> population) { | |
| 130 | Objects.requireNonNull(rawFitness); | |
| 131 | Objects.requireNonNull(density); | |
| 132 | Validate.isTrue(rawFitness.length == density.length); | |
| 133 | Objects.requireNonNull(population); | |
| 134 | Validate.isTrue(population.size() > 0); | |
| 135 | Validate.isTrue(population.size() == density.length); | |
| 136 | ||
| 137 |
1
1. computeFinalFitness : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final double[] finalFitness = new double[population.size()]; |
| 138 |
6
1. computeFinalFitness : Substituted 0 with 1 → NO_COVERAGE 2. computeFinalFitness : changed conditional boundary → NO_COVERAGE 3. computeFinalFitness : removed conditional - replaced comparison check with false → NO_COVERAGE 4. computeFinalFitness : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 5. computeFinalFitness : removed conditional - replaced comparison check with true → NO_COVERAGE 6. computeFinalFitness : negated conditional → NO_COVERAGE |
for (int i = 0; i < population.size(); i++) { |
| 139 |
1
1. computeFinalFitness : Replaced double addition with subtraction → NO_COVERAGE |
finalFitness[i] = rawFitness[i] + density[i]; |
| 140 | } | |
| 141 | ||
| 142 |
1
1. computeFinalFitness : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeFinalFitness → NO_COVERAGE |
return finalFitness; |
| 143 | } | |
| 144 | ||
| 145 | protected int skipNull(final List<Pair<Integer, Double>> distances, final int i) { | |
| 146 | Objects.requireNonNull(distances); | |
| 147 | Validate.isTrue(i >= 0); | |
| 148 | Validate.isTrue(i <= distances.size()); | |
| 149 | ||
| 150 | int j = i; | |
| 151 | ||
| 152 |
9
1. skipNull : removed conditional - replaced comparison check with false → NO_COVERAGE 2. skipNull : removed conditional - replaced comparison check with true → NO_COVERAGE 3. skipNull : negated conditional → NO_COVERAGE 4. skipNull : removed conditional - replaced equality check with true → NO_COVERAGE 5. skipNull : removed conditional - replaced equality check with false → NO_COVERAGE 6. skipNull : removed call to java/util/List::size → NO_COVERAGE 7. skipNull : negated conditional → NO_COVERAGE 8. skipNull : removed call to java/util/List::get → NO_COVERAGE 9. skipNull : changed conditional boundary → NO_COVERAGE |
while (j < distances.size() && distances.get(j) == null) { |
| 153 | j++; | |
| 154 | } | |
| 155 | ||
| 156 |
1
1. skipNull : replaced int return with 0 for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull → NO_COVERAGE |
return j; |
| 157 | } | |
| 158 | ||
| 159 | protected List<Integer> computeAdditionalIndividuals(final Set<Integer> selectedIndex, final double[] rawFitness, | |
| 160 | final Population<T> population, final int numIndividuals) { | |
| 161 | Objects.requireNonNull(selectedIndex); | |
| 162 | Objects.requireNonNull(rawFitness); | |
| 163 | Objects.requireNonNull(population); | |
| 164 | Validate.isTrue(rawFitness.length == population.size()); | |
| 165 | Validate.isTrue(numIndividuals >= selectedIndex.size()); | |
| 166 | ||
| 167 |
4
1. computeAdditionalIndividuals : negated conditional → NO_COVERAGE 2. computeAdditionalIndividuals : removed call to java/util/Set::size → NO_COVERAGE 3. computeAdditionalIndividuals : removed conditional - replaced equality check with true → NO_COVERAGE 4. computeAdditionalIndividuals : removed conditional - replaced equality check with false → NO_COVERAGE |
if (numIndividuals == selectedIndex.size()) { |
| 168 |
1
1. computeAdditionalIndividuals : removed call to java/util/Collections::emptyList → NO_COVERAGE |
return Collections.emptyList(); |
| 169 | } | |
| 170 | ||
| 171 |
3
1. computeAdditionalIndividuals : removed call to java/util/stream/IntStream::range → NO_COVERAGE 2. computeAdditionalIndividuals : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 3. computeAdditionalIndividuals : Substituted 0 with 1 → NO_COVERAGE |
final List<Integer> additionalIndividuals = IntStream.range(0, population.size()) |
| 172 |
1
1. computeAdditionalIndividuals : removed call to java/util/stream/IntStream::boxed → NO_COVERAGE |
.boxed() |
| 173 |
9
1. lambda$computeAdditionalIndividuals$0 : negated conditional → NO_COVERAGE 2. lambda$computeAdditionalIndividuals$0 : replaced boolean return with true for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$computeAdditionalIndividuals$0 → NO_COVERAGE 3. lambda$computeAdditionalIndividuals$0 : removed conditional - replaced equality check with false → NO_COVERAGE 4. lambda$computeAdditionalIndividuals$0 : removed call to java/util/Set::contains → NO_COVERAGE 5. lambda$computeAdditionalIndividuals$0 : Substituted 0 with 1 → NO_COVERAGE 6. computeAdditionalIndividuals : removed call to java/util/stream/Stream::filter → NO_COVERAGE 7. lambda$computeAdditionalIndividuals$0 : Substituted 1 with 0 → NO_COVERAGE 8. lambda$computeAdditionalIndividuals$0 : removed conditional - replaced equality check with true → NO_COVERAGE 9. computeAdditionalIndividuals : replaced call to java/util/stream/Stream::filter with receiver → NO_COVERAGE |
.filter((i) -> selectedIndex.contains(i) == false) |
| 174 |
6
1. lambda$computeAdditionalIndividuals$1 : removed call to java/lang/Integer::intValue → NO_COVERAGE 2. lambda$computeAdditionalIndividuals$1 : replaced int return with 0 for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$computeAdditionalIndividuals$1 → NO_COVERAGE 3. lambda$computeAdditionalIndividuals$1 : removed call to java/lang/Double::compare → NO_COVERAGE 4. computeAdditionalIndividuals : replaced call to java/util/stream/Stream::sorted with receiver → NO_COVERAGE 5. computeAdditionalIndividuals : removed call to java/util/stream/Stream::sorted → NO_COVERAGE 6. lambda$computeAdditionalIndividuals$1 : removed call to java/lang/Integer::intValue → NO_COVERAGE |
.sorted((a, b) -> Double.compare(rawFitness[a], rawFitness[b])) |
| 175 |
4
1. computeAdditionalIndividuals : removed call to java/util/Set::size → NO_COVERAGE 2. computeAdditionalIndividuals : replaced call to java/util/stream/Stream::limit with receiver → NO_COVERAGE 3. computeAdditionalIndividuals : removed call to java/util/stream/Stream::limit → NO_COVERAGE 4. computeAdditionalIndividuals : Replaced integer subtraction with addition → NO_COVERAGE |
.limit(numIndividuals - selectedIndex.size()) |
| 176 |
2
1. computeAdditionalIndividuals : removed call to java/util/stream/Stream::collect → NO_COVERAGE 2. computeAdditionalIndividuals : removed call to java/util/stream/Collectors::toList → NO_COVERAGE |
.collect(Collectors.toList()); |
| 177 | ||
| 178 |
1
1. computeAdditionalIndividuals : replaced return value with Collections.emptyList for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeAdditionalIndividuals → NO_COVERAGE |
return additionalIndividuals; |
| 179 | } | |
| 180 | ||
| 181 | protected void truncatePopulation(final List<List<Pair<Integer, Double>>> distances, final Population<T> population, | |
| 182 | final int numIndividuals, final Set<Integer> selectedIndex) { | |
| 183 | ||
| 184 |
1
1. truncatePopulation : removed call to java/util/HashMap::<init> → NO_COVERAGE |
final Map<Integer, List<Pair<Integer, Double>>> selectedDistances = new HashMap<>(); |
| 185 |
1
1. truncatePopulation : removed call to java/util/HashMap::<init> → NO_COVERAGE |
final Map<Integer, Map<Integer, Integer>> selectedDistancesIndex = new HashMap<>(); |
| 186 | ||
| 187 | /** | |
| 188 | * The goal here is two fold: - Build selectedDistances, which is a map of individual index -> ordered list of | |
| 189 | * nearest neighbors, with only the individuals from selectedIndex. This will prevent the unnecessary processing | |
| 190 | * of ignored individuals | |
| 191 | * | |
| 192 | * - Build an inverted index selectedDistancesIndex so that we know where to delete entries in selectedDistances | |
| 193 | * whenever an individual has been removed The index is in the form: individual -> key in selectedDistance -> | |
| 194 | * Which position in the nearest neighbors | |
| 195 | */ | |
| 196 |
1
1. truncatePopulation : removed call to java/lang/Integer::intValue → NO_COVERAGE |
for (final int index : selectedIndex) { |
| 197 | ||
| 198 |
1
1. truncatePopulation : removed call to java/util/List::get → NO_COVERAGE |
final List<Pair<Integer, Double>> kthDistances = distances.get(index) |
| 199 |
1
1. truncatePopulation : removed call to java/util/List::stream → NO_COVERAGE |
.stream() |
| 200 |
6
1. lambda$truncatePopulation$2 : removed call to org/apache/commons/lang3/tuple/Pair::getLeft → NO_COVERAGE 2. lambda$truncatePopulation$2 : removed call to java/util/Set::contains → NO_COVERAGE 3. truncatePopulation : removed call to java/util/stream/Stream::filter → NO_COVERAGE 4. truncatePopulation : replaced call to java/util/stream/Stream::filter with receiver → NO_COVERAGE 5. lambda$truncatePopulation$2 : replaced boolean return with false for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$truncatePopulation$2 → NO_COVERAGE 6. lambda$truncatePopulation$2 : replaced boolean return with true for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$truncatePopulation$2 → NO_COVERAGE |
.filter(p -> selectedIndex.contains(p.getLeft())) |
| 201 |
2
1. truncatePopulation : removed call to java/util/stream/Stream::collect → NO_COVERAGE 2. truncatePopulation : removed call to java/util/stream/Collectors::toList → NO_COVERAGE |
.collect(Collectors.toList()); |
| 202 | ||
| 203 | Validate.isTrue(kthDistances.size() == selectedIndex.size()); | |
| 204 |
3
1. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE 2. truncatePopulation : replaced call to java/util/Map::put with argument → NO_COVERAGE 3. truncatePopulation : removed call to java/util/Map::put → NO_COVERAGE |
selectedDistances.put(index, kthDistances); |
| 205 | ||
| 206 |
6
1. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 2. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE 3. truncatePopulation : removed call to java/util/List::size → NO_COVERAGE 4. truncatePopulation : negated conditional → NO_COVERAGE 5. truncatePopulation : Substituted 0 with 1 → NO_COVERAGE 6. truncatePopulation : changed conditional boundary → NO_COVERAGE |
for (int i = 0; i < kthDistances.size(); i++) { |
| 207 |
1
1. truncatePopulation : removed call to java/util/List::get → NO_COVERAGE |
final Pair<Integer, Double> pair = kthDistances.get(i); |
| 208 | ||
| 209 |
5
1. truncatePopulation : negated conditional → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::containsKey → NO_COVERAGE 3. truncatePopulation : removed call to org/apache/commons/lang3/tuple/Pair::getKey → NO_COVERAGE 4. truncatePopulation : removed conditional - replaced equality check with true → NO_COVERAGE 5. truncatePopulation : removed conditional - replaced equality check with false → NO_COVERAGE |
if (selectedDistancesIndex.containsKey(pair.getKey()) == false) { |
| 210 |
4
1. truncatePopulation : removed call to org/apache/commons/lang3/tuple/Pair::getKey → NO_COVERAGE 2. truncatePopulation : removed call to java/util/HashMap::<init> → NO_COVERAGE 3. truncatePopulation : replaced call to java/util/Map::put with argument → NO_COVERAGE 4. truncatePopulation : removed call to java/util/Map::put → NO_COVERAGE |
selectedDistancesIndex.put(pair.getKey(), new HashMap<>()); |
| 211 | } | |
| 212 | ||
| 213 |
3
1. truncatePopulation : replaced call to java/util/Map::get with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::get → NO_COVERAGE 3. truncatePopulation : removed call to org/apache/commons/lang3/tuple/Pair::getKey → NO_COVERAGE |
selectedDistancesIndex.get(pair.getKey()) |
| 214 |
4
1. truncatePopulation : replaced call to java/util/Map::put with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::put → NO_COVERAGE 3. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE 4. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
.put(index, i); |
| 215 | } | |
| 216 | } | |
| 217 | ||
| 218 |
5
1. truncatePopulation : changed conditional boundary → NO_COVERAGE 2. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE 3. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 4. truncatePopulation : negated conditional → NO_COVERAGE 5. truncatePopulation : removed call to java/util/Set::size → NO_COVERAGE |
while (selectedIndex.size() > numIndividuals) { |
| 219 | ||
| 220 |
1
1. truncatePopulation : Substituted -1 with 0 → NO_COVERAGE |
int minIndex = -1; |
| 221 | List<Pair<Integer, Double>> minDistances = null; | |
| 222 |
1
1. truncatePopulation : removed call to java/lang/Integer::intValue → NO_COVERAGE |
for (final int candidateIndex : selectedIndex) { |
| 223 | ||
| 224 |
4
1. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 2. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE 3. truncatePopulation : negated conditional → NO_COVERAGE 4. truncatePopulation : changed conditional boundary → NO_COVERAGE |
if (minIndex < 0) { |
| 225 | minIndex = candidateIndex; | |
| 226 |
3
1. truncatePopulation : replaced call to java/util/Map::get with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::get → NO_COVERAGE 3. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
minDistances = selectedDistances.get(candidateIndex); |
| 227 | } else { | |
| 228 |
3
1. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE 2. truncatePopulation : replaced call to java/util/Map::get with argument → NO_COVERAGE 3. truncatePopulation : removed call to java/util/Map::get → NO_COVERAGE |
final List<Pair<Integer, Double>> distancesCandidate = selectedDistances.get(candidateIndex); |
| 229 | Validate.isTrue(minDistances.size() == distancesCandidate.size()); | |
| 230 | ||
| 231 |
1
1. truncatePopulation : Substituted 0 with 1 → NO_COVERAGE |
int result = 0; |
| 232 |
3
1. truncatePopulation : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull with argument → NO_COVERAGE 2. truncatePopulation : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull → NO_COVERAGE 3. truncatePopulation : Substituted 0 with 1 → NO_COVERAGE |
int j = skipNull(minDistances, 0); |
| 233 |
3
1. truncatePopulation : Substituted 0 with 1 → NO_COVERAGE 2. truncatePopulation : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull → NO_COVERAGE 3. truncatePopulation : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull with argument → NO_COVERAGE |
int l = skipNull(distancesCandidate, 0); |
| 234 | ||
| 235 |
13
1. truncatePopulation : changed conditional boundary → NO_COVERAGE 2. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE 3. truncatePopulation : removed call to java/util/List::size → NO_COVERAGE 4. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 5. truncatePopulation : negated conditional → NO_COVERAGE 6. truncatePopulation : removed call to java/util/List::size → NO_COVERAGE 7. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 8. truncatePopulation : negated conditional → NO_COVERAGE 9. truncatePopulation : negated conditional → NO_COVERAGE 10. truncatePopulation : removed conditional - replaced equality check with false → NO_COVERAGE 11. truncatePopulation : removed conditional - replaced equality check with true → NO_COVERAGE 12. truncatePopulation : changed conditional boundary → NO_COVERAGE 13. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE |
while (result == 0 && j < minDistances.size() && l < distancesCandidate.size()) { |
| 236 | ||
| 237 |
2
1. truncatePopulation : removed call to java/lang/Double::compare → NO_COVERAGE 2. truncatePopulation : removed call to java/util/List::get → NO_COVERAGE |
result = Double.compare(minDistances.get(j) |
| 238 |
2
1. truncatePopulation : removed call to java/lang/Double::doubleValue → NO_COVERAGE 2. truncatePopulation : removed call to org/apache/commons/lang3/tuple/Pair::getRight → NO_COVERAGE |
.getRight(), |
| 239 |
1
1. truncatePopulation : removed call to java/util/List::get → NO_COVERAGE |
distancesCandidate.get(l) |
| 240 |
2
1. truncatePopulation : removed call to java/lang/Double::doubleValue → NO_COVERAGE 2. truncatePopulation : removed call to org/apache/commons/lang3/tuple/Pair::getRight → NO_COVERAGE |
.getRight()); |
| 241 | ||
| 242 |
2
1. truncatePopulation : Removed increment 1 → NO_COVERAGE 2. truncatePopulation : Changed increment from 1 to -1 → NO_COVERAGE |
j++; |
| 243 |
2
1. truncatePopulation : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull → NO_COVERAGE 2. truncatePopulation : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull with argument → NO_COVERAGE |
j = skipNull(minDistances, j); |
| 244 | ||
| 245 |
2
1. truncatePopulation : Removed increment 1 → NO_COVERAGE 2. truncatePopulation : Changed increment from 1 to -1 → NO_COVERAGE |
l++; |
| 246 |
2
1. truncatePopulation : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull with argument → NO_COVERAGE 2. truncatePopulation : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::skipNull → NO_COVERAGE |
l = skipNull(distancesCandidate, l); |
| 247 | } | |
| 248 | ||
| 249 |
4
1. truncatePopulation : removed conditional - replaced comparison check with false → NO_COVERAGE 2. truncatePopulation : changed conditional boundary → NO_COVERAGE 3. truncatePopulation : removed conditional - replaced comparison check with true → NO_COVERAGE 4. truncatePopulation : negated conditional → NO_COVERAGE |
if (result > 0) { |
| 250 | minIndex = candidateIndex; | |
| 251 | minDistances = distancesCandidate; | |
| 252 | } | |
| 253 | } | |
| 254 | } | |
| 255 | ||
| 256 | /** | |
| 257 | * We cannot just remove it. We have to set the entry to 'null' as to not mess up the positions recorded in | |
| 258 | * selectedDistancesIndex. | |
| 259 | */ | |
| 260 |
3
1. truncatePopulation : replaced call to java/util/Map::get with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::get → NO_COVERAGE 3. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
final Map<Integer, Integer> reverseIndex = selectedDistancesIndex.get(minIndex); |
| 261 |
1
1. truncatePopulation : removed call to java/util/Map::entrySet → NO_COVERAGE |
for (Entry<Integer, Integer> entry : reverseIndex.entrySet()) { |
| 262 |
3
1. truncatePopulation : replaced call to java/util/Map::get with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::get → NO_COVERAGE 3. truncatePopulation : removed call to java/util/Map$Entry::getKey → NO_COVERAGE |
final List<Pair<Integer, Double>> distancesToClean = selectedDistances.get(entry.getKey()); |
| 263 |
4
1. truncatePopulation : replaced call to java/util/List::set with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/List::set → NO_COVERAGE 3. truncatePopulation : removed call to java/lang/Integer::intValue → NO_COVERAGE 4. truncatePopulation : removed call to java/util/Map$Entry::getValue → NO_COVERAGE |
distancesToClean.set((int) entry.getValue(), null); |
| 264 | } | |
| 265 |
1
1. truncatePopulation : removed call to java/util/Map::values → NO_COVERAGE |
for (Map<Integer, Integer> map : selectedDistancesIndex.values()) { |
| 266 |
3
1. truncatePopulation : removed call to java/util/Map::remove → NO_COVERAGE 2. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE 3. truncatePopulation : replaced call to java/util/Map::remove with argument → NO_COVERAGE |
map.remove(minIndex); |
| 267 | } | |
| 268 | ||
| 269 |
3
1. truncatePopulation : replaced call to java/util/Map::remove with argument → NO_COVERAGE 2. truncatePopulation : removed call to java/util/Map::remove → NO_COVERAGE 3. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
selectedDistancesIndex.remove(minIndex); |
| 270 |
3
1. truncatePopulation : removed call to java/util/Map::remove → NO_COVERAGE 2. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE 3. truncatePopulation : replaced call to java/util/Map::remove with argument → NO_COVERAGE |
selectedDistances.remove(minIndex); |
| 271 |
2
1. truncatePopulation : removed call to java/util/Set::remove → NO_COVERAGE 2. truncatePopulation : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
selectedIndex.remove(minIndex); |
| 272 | } | |
| 273 | ||
| 274 | } | |
| 275 | ||
| 276 | protected Set<Integer> environmentalSelection(final List<List<Pair<Integer, Double>>> distances, | |
| 277 | final double[] rawFitness, final double[] finalFitness, final Population<T> population, | |
| 278 | final int numIndividuals) { | |
| 279 | ||
| 280 |
3
1. environmentalSelection : removed call to java/util/stream/IntStream::range → NO_COVERAGE 2. environmentalSelection : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 3. environmentalSelection : Substituted 0 with 1 → NO_COVERAGE |
final Set<Integer> selectedIndex = IntStream.range(0, population.size()) |
| 281 |
1
1. environmentalSelection : removed call to java/util/stream/IntStream::boxed → NO_COVERAGE |
.boxed() |
| 282 |
11
1. lambda$environmentalSelection$3 : Substituted 1.0 with 2.0 → NO_COVERAGE 2. lambda$environmentalSelection$3 : replaced boolean return with true for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$environmentalSelection$3 → NO_COVERAGE 3. lambda$environmentalSelection$3 : removed call to java/lang/Integer::intValue → NO_COVERAGE 4. lambda$environmentalSelection$3 : negated conditional → NO_COVERAGE 5. lambda$environmentalSelection$3 : Substituted 1 with 0 → NO_COVERAGE 6. lambda$environmentalSelection$3 : removed conditional - replaced comparison check with false → NO_COVERAGE 7. lambda$environmentalSelection$3 : changed conditional boundary → NO_COVERAGE 8. environmentalSelection : removed call to java/util/stream/Stream::filter → NO_COVERAGE 9. environmentalSelection : replaced call to java/util/stream/Stream::filter with receiver → NO_COVERAGE 10. lambda$environmentalSelection$3 : removed conditional - replaced comparison check with true → NO_COVERAGE 11. lambda$environmentalSelection$3 : Substituted 0 with 1 → NO_COVERAGE |
.filter((i) -> finalFitness[i] < 1) |
| 283 |
2
1. environmentalSelection : removed call to java/util/stream/Stream::collect → NO_COVERAGE 2. environmentalSelection : removed call to java/util/stream/Collectors::toSet → NO_COVERAGE |
.collect(Collectors.toSet()); |
| 284 | ||
| 285 | logger.trace("Selected index size: {}", selectedIndex.size()); | |
| 286 | ||
| 287 |
5
1. environmentalSelection : changed conditional boundary → NO_COVERAGE 2. environmentalSelection : removed conditional - replaced comparison check with false → NO_COVERAGE 3. environmentalSelection : negated conditional → NO_COVERAGE 4. environmentalSelection : removed call to java/util/Set::size → NO_COVERAGE 5. environmentalSelection : removed conditional - replaced comparison check with true → NO_COVERAGE |
if (selectedIndex.size() < numIndividuals) { |
| 288 | ||
| 289 |
1
1. environmentalSelection : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeAdditionalIndividuals → NO_COVERAGE |
final List<Integer> additionalIndividuals = computeAdditionalIndividuals(selectedIndex, |
| 290 | rawFitness, | |
| 291 | population, | |
| 292 | numIndividuals); | |
| 293 | ||
| 294 | logger.trace("Adding {} additional individuals", additionalIndividuals.size()); | |
| 295 |
1
1. environmentalSelection : removed call to java/util/Set::addAll → NO_COVERAGE |
selectedIndex.addAll(additionalIndividuals); |
| 296 | } | |
| 297 | ||
| 298 |
5
1. environmentalSelection : negated conditional → NO_COVERAGE 2. environmentalSelection : changed conditional boundary → NO_COVERAGE 3. environmentalSelection : removed call to java/util/Set::size → NO_COVERAGE 4. environmentalSelection : removed conditional - replaced comparison check with true → NO_COVERAGE 5. environmentalSelection : removed conditional - replaced comparison check with false → NO_COVERAGE |
if (selectedIndex.size() > numIndividuals) { |
| 299 | logger.trace("Need to remove {} individuals", selectedIndex.size() - numIndividuals); | |
| 300 | ||
| 301 |
1
1. environmentalSelection : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::truncatePopulation → NO_COVERAGE |
truncatePopulation(distances, population, numIndividuals, selectedIndex); |
| 302 | } | |
| 303 | ||
| 304 |
1
1. environmentalSelection : replaced return value with Collections.emptySet for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::environmentalSelection → NO_COVERAGE |
return selectedIndex; |
| 305 | } | |
| 306 | ||
| 307 | @Override | |
| 308 | public Population<T> select(final AbstractEAConfiguration<T> eaConfiguration, final long generation, | |
| 309 | final int numIndividuals, final List<Genotype> population, final List<T> populationScores, | |
| 310 | final List<Genotype> offsprings, final List<T> offspringScores) { | |
| 311 | Objects.requireNonNull(eaConfiguration); | |
| 312 | Validate.isTrue(generation >= 0); | |
| 313 | Validate.isTrue(numIndividuals > 0); | |
| 314 | Objects.requireNonNull(population); | |
| 315 | Objects.requireNonNull(populationScores); | |
| 316 | Validate.isTrue(population.size() == populationScores.size()); | |
| 317 | Objects.requireNonNull(offsprings); | |
| 318 | Objects.requireNonNull(offspringScores); | |
| 319 | Validate.isTrue(offsprings.size() == offspringScores.size()); | |
| 320 | ||
| 321 |
1
1. select : removed call to java/lang/System::nanoTime → NO_COVERAGE |
final long startTimeNanos = System.nanoTime(); |
| 322 | logger.debug("Starting with requested {} individuals - {} population - {} offsprings", | |
| 323 |
1
1. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
numIndividuals, |
| 324 |
2
1. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE 2. select : removed call to java/util/List::size → NO_COVERAGE |
population.size(), |
| 325 |
2
1. select : removed call to java/util/List::size → NO_COVERAGE 2. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
offsprings.size()); |
| 326 | ||
| 327 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::<init> → NO_COVERAGE |
final Population<T> archive = new Population<>(population, populationScores); |
| 328 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::<init> → NO_COVERAGE |
final Population<T> offspringPopulation = new Population<>(offsprings, offspringScores); |
| 329 | ||
| 330 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::<init> → NO_COVERAGE |
final Population<T> combinedPopulation = new Population<>(); |
| 331 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::deduplicate → NO_COVERAGE |
if (spea2Replacement.deduplicate() |
| 332 |
4
1. select : negated conditional → NO_COVERAGE 2. select : removed call to java/util/Optional::isPresent → NO_COVERAGE 3. select : removed conditional - replaced equality check with true → NO_COVERAGE 4. select : removed conditional - replaced equality check with false → NO_COVERAGE |
.isPresent()) { |
| 333 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::deduplicate → NO_COVERAGE |
final Comparator<Genotype> individualDeduplicator = spea2Replacement.deduplicate() |
| 334 |
1
1. select : removed call to java/util/Optional::get → NO_COVERAGE |
.get(); |
| 335 |
1
1. select : removed call to java/util/TreeSet::<init> → NO_COVERAGE |
final Set<Genotype> seenGenotype = new TreeSet<>(individualDeduplicator); |
| 336 | ||
| 337 |
6
1. select : negated conditional → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 3. select : changed conditional boundary → NO_COVERAGE 4. select : removed conditional - replaced comparison check with false → NO_COVERAGE 5. select : removed conditional - replaced comparison check with true → NO_COVERAGE 6. select : Substituted 0 with 1 → NO_COVERAGE |
for (int i = 0; i < archive.size(); i++) { |
| 338 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::getGenotype → NO_COVERAGE |
final Genotype genotype = archive.getGenotype(i); |
| 339 | ||
| 340 |
4
1. select : removed conditional - replaced equality check with true → NO_COVERAGE 2. select : removed conditional - replaced equality check with false → NO_COVERAGE 3. select : negated conditional → NO_COVERAGE 4. select : removed call to java/util/Set::add → NO_COVERAGE |
if (seenGenotype.add(genotype)) { |
| 341 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
final T fitness = archive.getFitness(i); |
| 342 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::add → NO_COVERAGE |
combinedPopulation.add(genotype, fitness); |
| 343 | } | |
| 344 | } | |
| 345 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
final int ingestedFromArchive = combinedPopulation.size(); |
| 346 | logger.debug("Ingested {} individuals from the archive out of the {} available", | |
| 347 |
1
1. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
ingestedFromArchive, |
| 348 |
2
1. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 2. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
archive.size()); |
| 349 | ||
| 350 |
6
1. select : removed conditional - replaced comparison check with true → NO_COVERAGE 2. select : changed conditional boundary → NO_COVERAGE 3. select : Substituted 0 with 1 → NO_COVERAGE 4. select : negated conditional → NO_COVERAGE 5. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 6. select : removed conditional - replaced comparison check with false → NO_COVERAGE |
for (int i = 0; i < offspringPopulation.size(); i++) { |
| 351 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::getGenotype → NO_COVERAGE |
final Genotype genotype = offspringPopulation.getGenotype(i); |
| 352 | ||
| 353 |
4
1. select : negated conditional → NO_COVERAGE 2. select : removed call to java/util/Set::add → NO_COVERAGE 3. select : removed conditional - replaced equality check with false → NO_COVERAGE 4. select : removed conditional - replaced equality check with true → NO_COVERAGE |
if (seenGenotype.add(genotype)) { |
| 354 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
final T fitness = offspringPopulation.getFitness(i); |
| 355 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::add → NO_COVERAGE |
combinedPopulation.add(genotype, fitness); |
| 356 | } | |
| 357 | } | |
| 358 | if (logger.isDebugEnabled()) { | |
| 359 | logger.debug("Ingested {} individuals from the offsprings out of the {} available", | |
| 360 |
3
1. select : Replaced integer subtraction with addition → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 3. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
combinedPopulation.size() - ingestedFromArchive, |
| 361 |
2
1. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE |
offspringPopulation.size()); |
| 362 | } | |
| 363 | ||
| 364 | } else { | |
| 365 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::addAll → NO_COVERAGE |
combinedPopulation.addAll(archive); |
| 366 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::addAll → NO_COVERAGE |
combinedPopulation.addAll(offspringPopulation); |
| 367 | } | |
| 368 | ||
| 369 |
6
1. select : Changed switch default to be first case → NO_COVERAGE 2. select : removed call to java/lang/MatchException::<init> → NO_COVERAGE 3. select : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::optimization → NO_COVERAGE 4. select : RemoveSwitch 1 (case value 2) → NO_COVERAGE 5. select : RemoveSwitch 0 (case value 1) → NO_COVERAGE 6. select : removed call to net/bmahe/genetics4j/core/spec/Optimization::ordinal → NO_COVERAGE |
final Comparator<T> dominance = switch (eaConfiguration.optimization()) { |
| 370 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::dominance → NO_COVERAGE |
case MAXIMIZE -> spea2Replacement.dominance(); |
| 371 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::dominance → NO_COVERAGE |
case MINIMIZE -> spea2Replacement.dominance() |
| 372 |
2
1. select : removed call to java/util/Comparator::reversed → NO_COVERAGE 2. select : replaced call to java/util/Comparator::reversed with receiver → NO_COVERAGE |
.reversed(); |
| 373 | }; | |
| 374 | ||
| 375 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::k → NO_COVERAGE |
final int k = spea2Replacement.k() |
| 376 |
7
1. select : removed call to java/lang/Integer::intValue → NO_COVERAGE 2. lambda$select$4 : replaced call to java/lang/Math::sqrt with argument → NO_COVERAGE 3. lambda$select$4 : replaced Integer return value with 0 for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::lambda$select$4 → NO_COVERAGE 4. lambda$select$4 : removed call to java/lang/Math::sqrt → NO_COVERAGE 5. lambda$select$4 : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 6. lambda$select$4 : removed call to java/lang/Integer::valueOf → NO_COVERAGE 7. select : removed call to java/util/Optional::orElseGet → NO_COVERAGE |
.orElseGet(() -> (int) Math.sqrt(combinedPopulation.size())); |
| 377 | logger.trace("Using k={}", k); | |
| 378 | Validate.isTrue(k > 0); | |
| 379 | ||
| 380 | ///////////////// Fitness computation ////////////////////// | |
| 381 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeStrength → NO_COVERAGE |
final double[] strengths = computeStrength(dominance, combinedPopulation); |
| 382 | ||
| 383 |
2
1. select : removed call to net/bmahe/genetics4j/moo/spea2/spec/replacement/SPEA2Replacement::distance → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeObjectiveDistances → NO_COVERAGE |
final double[][] distanceObjectives = computeObjectiveDistances(spea2Replacement.distance(), combinedPopulation); |
| 384 | ||
| 385 |
2
1. select : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeRawFitness with argument → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeRawFitness → NO_COVERAGE |
final double[] rawFitness = computeRawFitness(dominance, strengths, combinedPopulation); |
| 386 | ||
| 387 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeSortedDistances → NO_COVERAGE |
final List<List<Pair<Integer, Double>>> distances = computeSortedDistances(distanceObjectives, |
| 388 | combinedPopulation); | |
| 389 | ||
| 390 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeDensity → NO_COVERAGE |
final double[] density = computeDensity(distances, k, combinedPopulation); |
| 391 | ||
| 392 |
2
1. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeFinalFitness → NO_COVERAGE 2. select : replaced call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::computeFinalFitness with argument → NO_COVERAGE |
final double[] finalFitness = computeFinalFitness(rawFitness, density, combinedPopulation); |
| 393 | ||
| 394 | ///////////////// Environmental Selection ////////////////// | |
| 395 | ||
| 396 |
1
1. select : removed call to net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::environmentalSelection → NO_COVERAGE |
final Set<Integer> selectedIndex = environmentalSelection(distances, |
| 397 | rawFitness, | |
| 398 | finalFitness, | |
| 399 | combinedPopulation, | |
| 400 | numIndividuals); | |
| 401 | ||
| 402 |
1
1. select : removed call to net/bmahe/genetics4j/core/Population::<init> → NO_COVERAGE |
final Population<T> newPopulation = new Population<>(); |
| 403 |
1
1. select : removed call to java/lang/Integer::intValue → NO_COVERAGE |
for (final int i : selectedIndex) { |
| 404 |
3
1. select : removed call to net/bmahe/genetics4j/core/Population::getGenotype → NO_COVERAGE 2. select : removed call to net/bmahe/genetics4j/core/Population::add → NO_COVERAGE 3. select : removed call to net/bmahe/genetics4j/core/Population::getFitness → NO_COVERAGE |
newPopulation.add(combinedPopulation.getGenotype(i), combinedPopulation.getFitness(i)); |
| 405 | } | |
| 406 | ||
| 407 |
1
1. select : removed call to java/lang/System::nanoTime → NO_COVERAGE |
final long endTimeNanos = System.nanoTime(); |
| 408 | if (logger.isDebugEnabled()) { | |
| 409 | logger.debug("Finished with {} new population - Computation time: {}", | |
| 410 |
5
1. select : Substituted 1000000 with 1000001 → NO_COVERAGE 2. select : Replaced long subtraction with addition → NO_COVERAGE 3. select : Replaced long division with multiplication → NO_COVERAGE 4. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE 5. select : removed call to java/lang/Integer::valueOf → NO_COVERAGE |
newPopulation.size(), |
| 411 |
1
1. select : removed call to org/apache/commons/lang3/time/DurationFormatUtils::formatDurationHMS → NO_COVERAGE |
DurationFormatUtils.formatDurationHMS((endTimeNanos - startTimeNanos) / 1_000_000)); |
| 412 | } | |
| 413 | ||
| 414 |
1
1. select : replaced return value with null for net/bmahe/genetics4j/moo/spea2/replacement/SPEA2ReplacementStrategyImplementor::select → NO_COVERAGE |
return newPopulation; |
| 415 | } | |
| 416 | } | |
Mutations | ||
| 35 |
1.1 |
|
| 43 |
1.1 |
|
| 44 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 45 |
1.1 |
|
| 47 |
1.1 2.2 |
|
| 50 |
1.1 |
|
| 59 |
1.1 2.2 |
|
| 61 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 62 |
1.1 2.2 3.3 4.4 5.5 |
|
| 63 |
1.1 2.2 3.3 4.4 |
|
| 64 |
1.1 |
|
| 65 |
1.1 |
|
| 68 |
1.1 |
|
| 70 |
1.1 |
|
| 81 |
1.1 |
|
| 82 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 83 |
1.1 |
|
| 85 |
1.1 2.2 |
|
| 88 |
1.1 |
|
| 98 |
1.1 |
|
| 99 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 100 |
1.1 |
|
| 103 |
1.1 |
|
| 104 |
1.1 |
|
| 107 |
1.1 |
|
| 118 |
1.1 |
|
| 119 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 120 |
1.1 2.2 |
|
| 121 |
1.1 |
|
| 122 |
1.1 2.2 3.3 4.4 5.5 |
|
| 125 |
1.1 |
|
| 137 |
1.1 |
|
| 138 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 139 |
1.1 |
|
| 142 |
1.1 |
|
| 152 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 |
|
| 156 |
1.1 |
|
| 167 |
1.1 2.2 3.3 4.4 |
|
| 168 |
1.1 |
|
| 171 |
1.1 2.2 3.3 |
|
| 172 |
1.1 |
|
| 173 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 |
|
| 174 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 175 |
1.1 2.2 3.3 4.4 |
|
| 176 |
1.1 2.2 |
|
| 178 |
1.1 |
|
| 184 |
1.1 |
|
| 185 |
1.1 |
|
| 196 |
1.1 |
|
| 198 |
1.1 |
|
| 199 |
1.1 |
|
| 200 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 201 |
1.1 2.2 |
|
| 204 |
1.1 2.2 3.3 |
|
| 206 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 207 |
1.1 |
|
| 209 |
1.1 2.2 3.3 4.4 5.5 |
|
| 210 |
1.1 2.2 3.3 4.4 |
|
| 213 |
1.1 2.2 3.3 |
|
| 214 |
1.1 2.2 3.3 4.4 |
|
| 218 |
1.1 2.2 3.3 4.4 5.5 |
|
| 220 |
1.1 |
|
| 222 |
1.1 |
|
| 224 |
1.1 2.2 3.3 4.4 |
|
| 226 |
1.1 2.2 3.3 |
|
| 228 |
1.1 2.2 3.3 |
|
| 231 |
1.1 |
|
| 232 |
1.1 2.2 3.3 |
|
| 233 |
1.1 2.2 3.3 |
|
| 235 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 11.11 12.12 13.13 |
|
| 237 |
1.1 2.2 |
|
| 238 |
1.1 2.2 |
|
| 239 |
1.1 |
|
| 240 |
1.1 2.2 |
|
| 242 |
1.1 2.2 |
|
| 243 |
1.1 2.2 |
|
| 245 |
1.1 2.2 |
|
| 246 |
1.1 2.2 |
|
| 249 |
1.1 2.2 3.3 4.4 |
|
| 260 |
1.1 2.2 3.3 |
|
| 261 |
1.1 |
|
| 262 |
1.1 2.2 3.3 |
|
| 263 |
1.1 2.2 3.3 4.4 |
|
| 265 |
1.1 |
|
| 266 |
1.1 2.2 3.3 |
|
| 269 |
1.1 2.2 3.3 |
|
| 270 |
1.1 2.2 3.3 |
|
| 271 |
1.1 2.2 |
|
| 280 |
1.1 2.2 3.3 |
|
| 281 |
1.1 |
|
| 282 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 11.11 |
|
| 283 |
1.1 2.2 |
|
| 287 |
1.1 2.2 3.3 4.4 5.5 |
|
| 289 |
1.1 |
|
| 295 |
1.1 |
|
| 298 |
1.1 2.2 3.3 4.4 5.5 |
|
| 301 |
1.1 |
|
| 304 |
1.1 |
|
| 321 |
1.1 |
|
| 323 |
1.1 |
|
| 324 |
1.1 2.2 |
|
| 325 |
1.1 2.2 |
|
| 327 |
1.1 |
|
| 328 |
1.1 |
|
| 330 |
1.1 |
|
| 331 |
1.1 |
|
| 332 |
1.1 2.2 3.3 4.4 |
|
| 333 |
1.1 |
|
| 334 |
1.1 |
|
| 335 |
1.1 |
|
| 337 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 338 |
1.1 |
|
| 340 |
1.1 2.2 3.3 4.4 |
|
| 341 |
1.1 |
|
| 342 |
1.1 |
|
| 345 |
1.1 |
|
| 347 |
1.1 |
|
| 348 |
1.1 2.2 |
|
| 350 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 351 |
1.1 |
|
| 353 |
1.1 2.2 3.3 4.4 |
|
| 354 |
1.1 |
|
| 355 |
1.1 |
|
| 360 |
1.1 2.2 3.3 |
|
| 361 |
1.1 2.2 |
|
| 365 |
1.1 |
|
| 366 |
1.1 |
|
| 369 |
1.1 2.2 3.3 4.4 5.5 6.6 |
|
| 370 |
1.1 |
|
| 371 |
1.1 |
|
| 372 |
1.1 2.2 |
|
| 375 |
1.1 |
|
| 376 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 |
|
| 381 |
1.1 |
|
| 383 |
1.1 2.2 |
|
| 385 |
1.1 2.2 |
|
| 387 |
1.1 |
|
| 390 |
1.1 |
|
| 392 |
1.1 2.2 |
|
| 396 |
1.1 |
|
| 402 |
1.1 |
|
| 403 |
1.1 |
|
| 404 |
1.1 2.2 3.3 |
|
| 407 |
1.1 |
|
| 410 |
1.1 2.2 3.3 4.4 5.5 |
|
| 411 |
1.1 |
|
| 414 |
1.1 |