From bfe6de6a553919cbe5f97877f1a7292e30873bb6 Mon Sep 17 00:00:00 2001 From: "Bernhard J. Berger" <bernhard.berger@uni-bremen.de> Date: Sun, 15 Jan 2023 22:56:52 +0100 Subject: [PATCH] Bounded chromosomes use bounds from DDL files. --- .../chromosome/DynamicBoundedDoubleChromosome.java | 11 +++++++++-- .../chromosome/DynamicBoundedIntegerChromosome.java | 12 ++++++++++-- .../codec/chromosome/DynamicIntegerChromosome.java | 2 ++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedDoubleChromosome.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedDoubleChromosome.java index 57ec17d3..2b85fc68 100644 --- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedDoubleChromosome.java +++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedDoubleChromosome.java @@ -1,13 +1,19 @@ package de.evoal.core.main.ea.codec.chromosome; +import de.evoal.core.api.properties.PropertySpecification; +import de.evoal.core.api.properties.info.PropertiesBoundaries; import de.evoal.languages.model.ddl.DataDescription; import de.evoal.languages.model.instance.Instance; import io.jenetics.util.DoubleRange; +import javax.inject.Inject; import java.util.List; import java.util.stream.Collectors; public abstract class DynamicBoundedDoubleChromosome extends DynamicChromosome { + @Inject + private PropertiesBoundaries boundaries; + protected List<DoubleRange> ranges; @Override @@ -20,7 +26,8 @@ public abstract class DynamicBoundedDoubleChromosome extends DynamicChromosome { } protected DoubleRange toRange(final DataDescription dataDescription) { - // TODO Find actual ranges from DDL - return DoubleRange.of(-(Double.MAX_VALUE/2), (Double.MAX_VALUE/2)); + PropertiesBoundaries.Boundaries bounds = boundaries.get(new PropertySpecification(dataDescription.getName(), dataDescription)); + + return DoubleRange.of(bounds.lower().doubleValue(), bounds.upper().doubleValue()); } } diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedIntegerChromosome.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedIntegerChromosome.java index 998a885c..70d8330c 100644 --- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedIntegerChromosome.java +++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicBoundedIntegerChromosome.java @@ -1,13 +1,20 @@ package de.evoal.core.main.ea.codec.chromosome; +import de.evoal.core.api.properties.PropertySpecification; +import de.evoal.core.api.properties.info.PropertiesBoundaries; import de.evoal.languages.model.ddl.DataDescription; import de.evoal.languages.model.instance.Instance; +import io.jenetics.util.DoubleRange; import io.jenetics.util.IntRange; +import javax.inject.Inject; import java.util.List; import java.util.stream.Collectors; public abstract class DynamicBoundedIntegerChromosome extends DynamicChromosome { + @Inject + private PropertiesBoundaries boundaries; + protected List<IntRange> ranges; @Override @@ -20,7 +27,8 @@ public abstract class DynamicBoundedIntegerChromosome extends DynamicChromosome } protected IntRange toRange(final DataDescription dataDescription) { - // TODO Find actual ranges from DDL - return IntRange.of(-(Integer.MAX_VALUE/2), (Integer.MAX_VALUE/2)); + PropertiesBoundaries.Boundaries bounds = boundaries.get(new PropertySpecification(dataDescription.getName(), dataDescription)); + + return IntRange.of(bounds.lower().intValue(), bounds.upper().intValue()); } } diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicIntegerChromosome.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicIntegerChromosome.java index 83433be6..44481abd 100644 --- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicIntegerChromosome.java +++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/chromosome/DynamicIntegerChromosome.java @@ -2,6 +2,7 @@ package de.evoal.core.main.ea.codec.chromosome; import de.evoal.core.api.properties.Properties; import de.evoal.core.api.properties.PropertySpecification; +import de.evoal.core.api.properties.info.PropertiesBoundaries; import de.evoal.core.main.jenetics.BoundedDoubleChromosome; import de.evoal.core.main.jenetics.BoundedDoubleGene; import de.evoal.core.main.jenetics.BoundedIntegerChromosome; @@ -10,6 +11,7 @@ import io.jenetics.Chromosome; import io.jenetics.util.IntRange; import javax.enterprise.context.Dependent; +import javax.inject.Inject; import javax.inject.Named; import java.util.ArrayList; import java.util.List; -- GitLab