|
1
|
|
package net.bmahe.genetics4j.core.util; |
|
2
|
|
|
|
3
|
|
import java.util.Objects; |
|
4
|
|
import java.util.function.Supplier; |
|
5
|
|
import java.util.random.RandomGenerator; |
|
6
|
|
|
|
7
|
|
import org.apache.commons.lang3.Validate; |
|
8
|
|
|
|
9
|
|
import net.bmahe.genetics4j.core.spec.statistics.distributions.Distribution; |
|
10
|
|
import net.bmahe.genetics4j.core.spec.statistics.distributions.NormalDistribution; |
|
11
|
|
import net.bmahe.genetics4j.core.spec.statistics.distributions.UniformDistribution; |
|
12
|
|
|
|
13
|
|
public class DistributionUtils { |
|
14
|
|
|
|
15
|
|
public static Supplier<Double> distributionValueSupplier(final RandomGenerator randomGenerator, |
|
16
|
|
final double minValue, final double maxValue, final Distribution distribution) { |
|
17
|
|
Objects.requireNonNull(randomGenerator); |
|
18
|
|
Objects.requireNonNull(distribution); |
|
19
|
|
Validate.isTrue(minValue <= maxValue); |
|
20
|
|
|
|
21
|
|
return switch (distribution) { |
|
22
|
|
case UniformDistribution ud -> { |
|
23
|
1
1. distributionValueSupplier : Replaced double subtraction with addition → KILLED
|
final double valueRange = maxValue - minValue; |
|
24
|
5
1. lambda$distributionValueSupplier$0 : removed call to java/util/random/RandomGenerator::nextDouble → KILLED
2. lambda$distributionValueSupplier$0 : removed call to java/lang/Double::valueOf → KILLED
3. lambda$distributionValueSupplier$0 : Replaced double multiplication with division → KILLED
4. lambda$distributionValueSupplier$0 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$0 → KILLED
5. lambda$distributionValueSupplier$0 : Replaced double addition with subtraction → KILLED
|
yield () -> minValue + randomGenerator.nextDouble() * valueRange; |
|
25
|
|
} |
|
26
|
|
case NormalDistribution normalDistribution -> { |
|
27
|
1
1. distributionValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
|
final double mean = normalDistribution.mean(); |
|
28
|
1
1. distributionValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
|
final double standardDeviation = normalDistribution.standardDeviation(); |
|
29
|
|
|
|
30
|
|
yield () -> { |
|
31
|
3
1. lambda$distributionValueSupplier$1 : Replaced double multiplication with division → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : Replaced double addition with subtraction → NO_COVERAGE
|
final double value = mean + randomGenerator.nextGaussian() * standardDeviation; |
|
32
|
|
|
|
33
|
4
1. lambda$distributionValueSupplier$1 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with true → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : negated conditional → NO_COVERAGE
4. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with false → NO_COVERAGE
|
if (value < minValue) { |
|
34
|
2
1. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
|
return minValue; |
|
35
|
4
1. lambda$distributionValueSupplier$1 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : negated conditional → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with true → NO_COVERAGE
4. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with false → NO_COVERAGE
|
} else if (value > maxValue) { |
|
36
|
2
1. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
|
return maxValue; |
|
37
|
|
} |
|
38
|
|
|
|
39
|
2
1. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
|
return value; |
|
40
|
|
}; |
|
41
|
|
} |
|
42
|
5
1. distributionValueSupplier : replaced call to java/lang/String::format with argument → NO_COVERAGE
2. distributionValueSupplier : Substituted 0 with 1 → NO_COVERAGE
3. distributionValueSupplier : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
4. distributionValueSupplier : removed call to java/lang/String::format → NO_COVERAGE
5. distributionValueSupplier : Substituted 1 with 0 → NO_COVERAGE
|
default -> throw new IllegalArgumentException(String.format("Distribution not supported: %s", distribution)); |
|
43
|
|
}; |
|
44
|
|
} |
|
45
|
|
|
|
46
|
|
public static Supplier<Float> distributionFloatValueSupplier(final RandomGenerator randomGenerator, |
|
47
|
|
final float minValue, final float maxValue, final Distribution distribution) { |
|
48
|
|
Objects.requireNonNull(randomGenerator); |
|
49
|
|
Objects.requireNonNull(distribution); |
|
50
|
|
Validate.isTrue(minValue <= maxValue); |
|
51
|
|
|
|
52
|
|
return switch (distribution) { |
|
53
|
|
case UniformDistribution ud -> { |
|
54
|
1
1. distributionFloatValueSupplier : Replaced float subtraction with addition → KILLED
|
final float valueRange = maxValue - minValue; |
|
55
|
|
|
|
56
|
5
1. lambda$distributionFloatValueSupplier$2 : Replaced float addition with subtraction → KILLED
2. lambda$distributionFloatValueSupplier$2 : removed call to java/util/random/RandomGenerator::nextFloat → KILLED
3. lambda$distributionFloatValueSupplier$2 : removed call to java/lang/Float::valueOf → KILLED
4. lambda$distributionFloatValueSupplier$2 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$2 → KILLED
5. lambda$distributionFloatValueSupplier$2 : Replaced float multiplication with division → KILLED
|
yield () -> minValue + randomGenerator.nextFloat() * valueRange; |
|
57
|
|
} |
|
58
|
|
case NormalDistribution normalDistribution -> { |
|
59
|
1
1. distributionFloatValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
|
final double mean = normalDistribution.mean(); |
|
60
|
1
1. distributionFloatValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
|
final double standardDeviation = normalDistribution.standardDeviation(); |
|
61
|
|
|
|
62
|
|
yield () -> { |
|
63
|
3
1. lambda$distributionFloatValueSupplier$3 : removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : Replaced double addition with subtraction → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : Replaced double multiplication with division → NO_COVERAGE
|
final float value = (float) (mean + randomGenerator.nextGaussian() * standardDeviation); |
|
64
|
|
|
|
65
|
4
1. lambda$distributionFloatValueSupplier$3 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with true → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : negated conditional → NO_COVERAGE
4. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with false → NO_COVERAGE
|
if (value < minValue) { |
|
66
|
2
1. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
|
return minValue; |
|
67
|
4
1. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with false → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : negated conditional → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with true → NO_COVERAGE
4. lambda$distributionFloatValueSupplier$3 : changed conditional boundary → NO_COVERAGE
|
} else if (value > maxValue) { |
|
68
|
2
1. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
|
return maxValue; |
|
69
|
|
} |
|
70
|
|
|
|
71
|
2
1. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
|
return value; |
|
72
|
|
}; |
|
73
|
|
} |
|
74
|
5
1. distributionFloatValueSupplier : Substituted 0 with 1 → NO_COVERAGE
2. distributionFloatValueSupplier : removed call to java/lang/String::format → NO_COVERAGE
3. distributionFloatValueSupplier : Substituted 1 with 0 → NO_COVERAGE
4. distributionFloatValueSupplier : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
5. distributionFloatValueSupplier : replaced call to java/lang/String::format with argument → NO_COVERAGE
|
default -> throw new IllegalArgumentException(String.format("Distribution not supported: %s", distribution)); |
|
75
|
|
}; |
|
76
|
|
} |
|
77
|
|
} |
| | Mutations |
| 23 |
|
1.1 Location : distributionValueSupplier Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()] Replaced double subtraction with addition → KILLED
|
| 24 |
|
1.1 Location : lambda$distributionValueSupplier$0 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()] removed call to java/util/random/RandomGenerator::nextDouble → KILLED
2.2 Location : lambda$distributionValueSupplier$0 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()] removed call to java/lang/Double::valueOf → KILLED
3.3 Location : lambda$distributionValueSupplier$0 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()] Replaced double multiplication with division → KILLED
4.4 Location : lambda$distributionValueSupplier$0 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()] replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$0 → KILLED
5.5 Location : lambda$distributionValueSupplier$0 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()] Replaced double addition with subtraction → KILLED
|
| 27 |
|
1.1 Location : distributionValueSupplier Killed by : none removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
|
| 28 |
|
1.1 Location : distributionValueSupplier Killed by : none removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
|
| 31 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none Replaced double multiplication with division → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
3.3 Location : lambda$distributionValueSupplier$1 Killed by : none Replaced double addition with subtraction → NO_COVERAGE
|
| 33 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none changed conditional boundary → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none removed conditional - replaced comparison check with true → NO_COVERAGE
3.3 Location : lambda$distributionValueSupplier$1 Killed by : none negated conditional → NO_COVERAGE
4.4 Location : lambda$distributionValueSupplier$1 Killed by : none removed conditional - replaced comparison check with false → NO_COVERAGE
|
| 34 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none removed call to java/lang/Double::valueOf → NO_COVERAGE
|
| 35 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none changed conditional boundary → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none negated conditional → NO_COVERAGE
3.3 Location : lambda$distributionValueSupplier$1 Killed by : none removed conditional - replaced comparison check with true → NO_COVERAGE
4.4 Location : lambda$distributionValueSupplier$1 Killed by : none removed conditional - replaced comparison check with false → NO_COVERAGE
|
| 36 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none removed call to java/lang/Double::valueOf → NO_COVERAGE
|
| 39 |
|
1.1 Location : lambda$distributionValueSupplier$1 Killed by : none removed call to java/lang/Double::valueOf → NO_COVERAGE
2.2 Location : lambda$distributionValueSupplier$1 Killed by : none replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
|
| 42 |
|
1.1 Location : distributionValueSupplier Killed by : none replaced call to java/lang/String::format with argument → NO_COVERAGE
2.2 Location : distributionValueSupplier Killed by : none Substituted 0 with 1 → NO_COVERAGE
3.3 Location : distributionValueSupplier Killed by : none removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
4.4 Location : distributionValueSupplier Killed by : none removed call to java/lang/String::format → NO_COVERAGE
5.5 Location : distributionValueSupplier Killed by : none Substituted 1 with 0 → NO_COVERAGE
|
| 54 |
|
1.1 Location : distributionFloatValueSupplier Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()] Replaced float subtraction with addition → KILLED
|
| 56 |
|
1.1 Location : lambda$distributionFloatValueSupplier$2 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()] Replaced float addition with subtraction → KILLED
2.2 Location : lambda$distributionFloatValueSupplier$2 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()] removed call to java/util/random/RandomGenerator::nextFloat → KILLED
3.3 Location : lambda$distributionFloatValueSupplier$2 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()] removed call to java/lang/Float::valueOf → KILLED
4.4 Location : lambda$distributionFloatValueSupplier$2 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()] replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$2 → KILLED
5.5 Location : lambda$distributionFloatValueSupplier$2 Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()] Replaced float multiplication with division → KILLED
|
| 59 |
|
1.1 Location : distributionFloatValueSupplier Killed by : none removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
|
| 60 |
|
1.1 Location : distributionFloatValueSupplier Killed by : none removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
|
| 63 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none Replaced double addition with subtraction → NO_COVERAGE
3.3 Location : lambda$distributionFloatValueSupplier$3 Killed by : none Replaced double multiplication with division → NO_COVERAGE
|
| 65 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none changed conditional boundary → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed conditional - replaced comparison check with true → NO_COVERAGE
3.3 Location : lambda$distributionFloatValueSupplier$3 Killed by : none negated conditional → NO_COVERAGE
4.4 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed conditional - replaced comparison check with false → NO_COVERAGE
|
| 66 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed call to java/lang/Float::valueOf → NO_COVERAGE
|
| 67 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed conditional - replaced comparison check with false → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none negated conditional → NO_COVERAGE
3.3 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed conditional - replaced comparison check with true → NO_COVERAGE
4.4 Location : lambda$distributionFloatValueSupplier$3 Killed by : none changed conditional boundary → NO_COVERAGE
|
| 68 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed call to java/lang/Float::valueOf → NO_COVERAGE
|
| 71 |
|
1.1 Location : lambda$distributionFloatValueSupplier$3 Killed by : none removed call to java/lang/Float::valueOf → NO_COVERAGE
2.2 Location : lambda$distributionFloatValueSupplier$3 Killed by : none replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
|
| 74 |
|
1.1 Location : distributionFloatValueSupplier Killed by : none Substituted 0 with 1 → NO_COVERAGE
2.2 Location : distributionFloatValueSupplier Killed by : none removed call to java/lang/String::format → NO_COVERAGE
3.3 Location : distributionFloatValueSupplier Killed by : none Substituted 1 with 0 → NO_COVERAGE
4.4 Location : distributionFloatValueSupplier Killed by : none removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
5.5 Location : distributionFloatValueSupplier Killed by : none replaced call to java/lang/String::format with argument → NO_COVERAGE
|