From d6c3563bd036fbf7341400a55a03ca4bdf106a26 Mon Sep 17 00:00:00 2001 From: "Bernhard J. Berger" <bernhard.berger@uni-bremen.de> Date: Fri, 10 Feb 2023 18:05:25 +0100 Subject: [PATCH] Adapted density. --- .../density/ea/fitness/DensityBasedFitness.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/de.evoal.approximative.density/src/main/java/de/evoal/approximative/density/ea/fitness/DensityBasedFitness.java b/src/core/de.evoal.approximative.density/src/main/java/de/evoal/approximative/density/ea/fitness/DensityBasedFitness.java index 8f321592..abaed5ee 100644 --- a/src/core/de.evoal.approximative.density/src/main/java/de/evoal/approximative/density/ea/fitness/DensityBasedFitness.java +++ b/src/core/de.evoal.approximative.density/src/main/java/de/evoal/approximative/density/ea/fitness/DensityBasedFitness.java @@ -114,8 +114,7 @@ public abstract class DensityBasedFitness extends FitnessDecorator { final double predictedValue = current[i]; final double probability = probabilityCalculator.apply(sourceData, targetData, candidate, predictedValue); - // DO WE HAVE TO FIX THIS? - fitness[i] = current[i] * Math.pow(probability, rootExponent) + (1 - probability) * 1 / Math.pow(probability, exponent); + fitness[i] = current[i] * Math.pow(probability, rootExponent) + (1 - probability) * 1.0 / Math.pow(probability, exponent); } return fitness; @@ -129,7 +128,7 @@ public abstract class DensityBasedFitness extends FitnessDecorator { } /** - * "This is fine." + * "Now, it's really fine." */ private double sourceBasedProbabilityCalculator(final DensityData [] sourceData, final DensityData targetData, final Properties candidate, final double predicted) { double result = 1.0; @@ -137,7 +136,7 @@ public abstract class DensityBasedFitness extends FitnessDecorator { final double probability = sourceData[i].probability(((Number)candidate.get(i)).doubleValue()); final double offset = 1 / ((Number)ranges.get(surrogate.getInputSpecification().get(i))).doubleValue(); - result *= Math.min(1.0, probability + offset); + result *= Math.pow(Math.min(1.0, probability + offset), 1.0 / candidate.size()); } return result; -- GitLab