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