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
|