From 4321d1faa4a704194782467b4c70a1b89bd64e30 Mon Sep 17 00:00:00 2001
From: "Bernhard J. Berger" <bernhard.berger@uni-bremen.de>
Date: Mon, 6 Feb 2023 15:07:47 +0100
Subject: [PATCH] Work with optimisation language model. # 4

---
 src/core/de.evoal.core/scripts/run-search.sh  |  2 +-
 .../evoal/core/api/board/BlackboardEntry.java | 20 ++-----------------
 .../calculation/CalculationFactory.java       |  3 +--
 .../properties/PropertiesSpecification.java   |  9 +++++++++
 .../properties/info/PropertiesBoundaries.java |  1 +
 .../main/ea/codec/DynamicCodecProducer.java   |  6 +-----
 .../constraint/ConstraintProducer.java        |  4 +---
 .../JeneticsConstraintProducer.java           |  3 +--
 .../fitness/MalusFunctionProducer.java        |  2 +-
 .../core/main/ea/fitness/FitnessFactory.java  |  6 +++---
 .../ea/initial/InitialPopulationFactory.java  |  6 +++---
 .../core/main/ea/initial/RandomProducer.java  |  2 +-
 .../producer/OptimizingFunctionProducer.java  |  2 +-
 .../main/ea/producer/SelectorFactory.java     |  9 ++++-----
 .../producer/BlackboardValueProducer.java     | 12 +++++------
 .../producer/ConfigurationValueProducer.java  | 14 ++++++-------
 .../producer/OptimisationModelLoader.java     | 20 +++++++++----------
 .../PropertiesBoundariesProducer.java         | 15 ++++++++++++--
 .../producer/PropertiesRangesProducer.java    |  1 +
 .../main/producer/SpecificationProducer.java  |  5 +----
 .../core/main/search/HeuristicSearch.java     | 13 +++++-------
 .../search/HeuristicSearchEvaluation.java     |  2 +-
 .../core/main/search/HeuristicSearchMain.java |  3 +--
 .../main/statistics/StatisticsFactory.java    |  2 +-
 .../scripts/debug-search-with-surrogate.sh    |  2 +-
 .../scripts/run-search-with-surrogate.sh      |  2 +-
 .../surrogate/main/cdi/SurrogateProducer.java |  3 +--
 .../main/ea/TrainingInitialPopulation.java    |  4 +---
 .../surrogate/main/ea/TrainingProducer.java   |  2 +-
 .../GenerationStatisticsWriter.java           |  2 +-
 30 files changed, 82 insertions(+), 95 deletions(-)

diff --git a/src/core/de.evoal.core/scripts/run-search.sh b/src/core/de.evoal.core/scripts/run-search.sh
index d559d1ac..48fa0a2d 100755
--- a/src/core/de.evoal.core/scripts/run-search.sh
+++ b/src/core/de.evoal.core/scripts/run-search.sh
@@ -19,5 +19,5 @@ java -Dorg.jboss.logging.provider=slf4j\
      --add-exports io.jenetics.base/io.jenetics.internal.util=de.evoal.core \
      -m de.evoal.core/de.evoal.core.main.Evoal \
      "-Bcore:main=heuristic-search" \
-     "-Bcore:ea-configuration-file=$2" \
+     "-Bcore:optimisation-configuration-file=$2" \
      "-Bcore:evaluation-output-folder=$3"
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/board/BlackboardEntry.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/board/BlackboardEntry.java
index 6d515fe7..9d6acdf1 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/board/BlackboardEntry.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/board/BlackboardEntry.java
@@ -27,37 +27,21 @@ public final class BlackboardEntry {
      */
     public static final String EVALUATION_OUTPUT_FOLDER = "core:evaluation-output-folder";
 
-    /**
-     * Configuration file containing the configuration fot the standard fitness function.
-     */
-//    public static final String FITNESS_STANDARD_FUNCTION_FILE = "FITNESS_STANDARD_FUNCTION_FILE";
-
     /**
      * The heuristic configuration.
      */
-    public static final String EA_CONFIGURATION = "core:ea-configuration";
+    public static final String OPTIMISATION_CONFIGURATION = "core:optimisation-configuration";
 
     /**
      * The file containing the ea configuration.
      */
-    public static final String EA_CONFIGURATION_FILE = "core:ea-configuration-file";
-
-    /**
-     * File containing the machine learning file.
-     */
-//    public static final String MACHINE_LEARNING_FILE = "MACHINE_LEARNING_FILE";
+    public static final String OPTIMISATION_CONFIGURATION_FILE = "core:optimisation-configuration-file";
 
     /**
      * Name of the main to run.
      */
     public static final String MAIN = "core:main";
 
-
-    /**
-     * Targets.
-     */
-//    public static final String TARGET_POINTS = "TARGET_POINTS";
-
     /**
      * File containing targets for evaluation.
      */
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/ea/constraints/calculation/CalculationFactory.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/ea/constraints/calculation/CalculationFactory.java
index 6a864175..8a469f16 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/ea/constraints/calculation/CalculationFactory.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/ea/constraints/calculation/CalculationFactory.java
@@ -8,7 +8,6 @@ import javax.enterprise.context.ApplicationScoped;
 import de.evoal.core.api.utils.LanguageHelper;
 import de.evoal.languages.model.instance.Array;
 import de.evoal.languages.model.instance.Instance;
-import de.evoal.languages.model.instance.LiteralValue;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
 
 import javax.inject.Inject;
@@ -20,7 +19,7 @@ public class CalculationFactory {
     private final Map<String, Instance> calculationConfigurationByCategory = new HashMap<>();
 
     @Inject
-    public CalculationFactory(final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.handlers") Array handlerConfigurations) {
+    public CalculationFactory(final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.handlers") Array handlerConfigurations) {
         handlerConfigurations.getValues()
                              .stream()
                              .map(Instance.class::cast)
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/PropertiesSpecification.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/PropertiesSpecification.java
index 27ab8b94..55e5ffd6 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/PropertiesSpecification.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/PropertiesSpecification.java
@@ -49,6 +49,15 @@ public class PropertiesSpecification {
 			return this;
 		}
 
+		public Builder add(final Collection<PropertySpecification> data) {
+			data.stream()
+				.filter(s -> !properties.contains(s))
+				.peek(properties::add)
+				.forEach(orderedProperties::add);
+
+			return this;
+		}
+
 		public PropertiesSpecification build() {
 			return new PropertiesSpecification(orderedProperties);
 		}
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/info/PropertiesBoundaries.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/info/PropertiesBoundaries.java
index 7a91ca58..a8626935 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/info/PropertiesBoundaries.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/api/properties/info/PropertiesBoundaries.java
@@ -15,6 +15,7 @@ public class PropertiesBoundaries {
 
     private Map<PropertySpecification, Boundaries> boundariesMap = new HashMap<>();
 
+    public boolean contains(final PropertySpecification specification) { return boundariesMap.containsKey(specification); }
 
     public Boundaries get(final PropertySpecification specification) {
         return boundariesMap.get(specification);
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/DynamicCodecProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/DynamicCodecProducer.java
index 5f4b8ba2..a6722b7d 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/DynamicCodecProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/codec/DynamicCodecProducer.java
@@ -4,13 +4,9 @@ import de.evoal.core.api.board.BlackboardEntry;
 import de.evoal.core.api.cdi.ConfigurationValue;
 import de.evoal.core.api.properties.PropertiesSpecification;
 import de.evoal.languages.model.instance.Array;
-import de.evoal.languages.model.instance.Attribute;
-import de.evoal.languages.model.instance.DataReference;
-import de.evoal.languages.model.instance.Instance;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Produces;
 import javax.inject.Named;
 
@@ -18,7 +14,7 @@ import javax.inject.Named;
 @Slf4j
 public class DynamicCodecProducer {
     @Produces @ApplicationScoped
-    public DynamicCodec create(@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.genotype") Array config, final @Named("genotype-specification") PropertiesSpecification specification) {
+    public DynamicCodec create(@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.genotype") Array config, final @Named("genotype-specification") PropertiesSpecification specification) {
         log.info("Creating encoding for EA problem.");
 
         return DynamicCodec.from(config, specification);
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/ConstraintProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/ConstraintProducer.java
index 768940a2..d6b6faf8 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/ConstraintProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/ConstraintProducer.java
@@ -4,7 +4,6 @@ import de.evoal.core.api.board.BlackboardEntry;
 import de.evoal.core.api.cdi.ConfigurationValue;
 import de.evoal.core.api.ea.constraints.model.Constraint;
 import de.evoal.core.api.ea.constraints.model.Constraints;
-import de.evoal.core.api.ea.codec.CustomCodec;
 import de.evoal.core.api.ea.constraints.model.DataConstraints;
 import de.evoal.core.api.properties.PropertiesSpecification;
 import javax.enterprise.context.ApplicationScoped;
@@ -12,7 +11,6 @@ import javax.enterprise.inject.Produces;
 import javax.inject.Named;
 
 import de.evoal.core.main.ea.constraints.el.ElHelper;
-import de.evoal.core.main.ea.fitness.JeneticsFitnessFunction;
 import de.evoal.languages.model.ddl.DataDescription;
 import de.evoal.languages.model.ddl.FunctionName;
 import de.evoal.languages.model.el.Call;
@@ -36,7 +34,7 @@ public class ConstraintProducer {
     @ApplicationScoped
     public Constraints create(final DataConstraints constraints,
                               @Named("genotype-specification") final PropertiesSpecification genoSpec,
-                              @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.fitness") final Instance fitnessConfig) {
+                              @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.fitness") final Instance fitnessConfig) {
         this.genoSpec = genoSpec;
         this.fitnessSpec = toInnerSpecification(fitnessConfig);
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/constraint/JeneticsConstraintProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/constraint/JeneticsConstraintProducer.java
index cacd3c56..372d920f 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/constraint/JeneticsConstraintProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/constraint/JeneticsConstraintProducer.java
@@ -14,7 +14,6 @@ import de.evoal.core.api.properties.PropertiesSpecification;
 import de.evoal.core.api.utils.LanguageHelper;
 import de.evoal.core.main.ea.constraints.constraint.utils.ConfigurationUtils;
 import de.evoal.languages.model.instance.*;
-import org.apache.deltaspike.core.api.provider.BeanProvider;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Produces;
@@ -28,7 +27,7 @@ import java.util.stream.Collectors;
 public class JeneticsConstraintProducer {
     @Produces
     public List<io.jenetics.engine.Constraint> create(
-            final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.handlers") Array handlerConfigurations,
+            final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.handlers") Array handlerConfigurations,
             final @Named("optimization-function-output") PropertiesSpecification optimizationSpec,
             final @Named("optimization-function")  FitnessFunction function,
             final CustomCodec codec,
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/fitness/MalusFunctionProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/fitness/MalusFunctionProducer.java
index 4dd2015f..9a35f093 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/fitness/MalusFunctionProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/constraints/constraint/strategies/fitness/MalusFunctionProducer.java
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
 public class MalusFunctionProducer {
     @ApplicationScoped @Produces
     public MalusForFitnessStrategy create(
-            final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.handlers") Array handlers,
+            final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.handlers") Array handlers,
             final @Named("optimization-function-input") PropertiesSpecification source,
             final @Named("optimization-function-output") PropertiesSpecification target,
             final @Named("output-dependencies") PropertiesDependencies dependencies,
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/fitness/FitnessFactory.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/fitness/FitnessFactory.java
index 39712d10..aff9fa01 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/fitness/FitnessFactory.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/fitness/FitnessFactory.java
@@ -27,12 +27,12 @@ public class FitnessFactory {
 	 * Creates a fitness function based on the heuristic configuration.<br/>
 	 * Blackboard slots used:
 	 * <ul>
-	 *   <li>{@link BlackboardEntry#EA_CONFIGURATION}.</li>
+	 *   <li>{@link BlackboardEntry#OPTIMISATION_CONFIGURATION}.</li>
 	 * </ul>
 	 */
 	@Produces @Dependent
-	public JeneticsFitnessFunction create(final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.fitness") Instance fitnessConfig,
-										  final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.comparator") Instance comparatorConfig) {
+	public JeneticsFitnessFunction create(final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.fitness") Instance fitnessConfig,
+										  final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.comparator") Instance comparatorConfig) {
 		final String fitnessName = fitnessConfig.getName().getName();
 		final String comparatorName = comparatorConfig.getName().getName();
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/InitialPopulationFactory.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/InitialPopulationFactory.java
index 2f69f838..c2301d5f 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/InitialPopulationFactory.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/InitialPopulationFactory.java
@@ -5,7 +5,7 @@ import de.evoal.core.api.cdi.BeanFactory;
 import de.evoal.core.api.cdi.ConfigurationValue;
 import de.evoal.core.api.ea.initial.InitialPopulation;
 import de.evoal.languages.model.instance.Instance;
-import javax.enterprise.context.ApplicationScoped;
+
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Produces;
 import javax.inject.Inject;
@@ -15,7 +15,7 @@ import javax.inject.Named;
 public class InitialPopulationFactory {
 
 	@Inject
-	@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.initialization")
+	@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.initialization")
 	private Instance initialization;
 
 	/**
@@ -23,7 +23,7 @@ public class InitialPopulationFactory {
 	 *
 	 * Blackboard slots used:
 	 * <ul>
-	 *   <li>{@link BlackboardEntry#EA_CONFIGURATION}.</li>
+	 *   <li>{@link BlackboardEntry#OPTIMISATION_CONFIGURATION}.</li>
 	 * </ul>
 	 */
 	@Produces @Dependent @Named("initial")
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/RandomProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/RandomProducer.java
index 113efb49..9999352b 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/RandomProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/initial/RandomProducer.java
@@ -20,7 +20,7 @@ public class RandomProducer {
     @Produces
     @Dependent
     @Named("random")
-    public InitialPopulation create(@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.initialization") Instance initialization) {
+    public InitialPopulation create(@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.initialization") Instance initialization) {
         final InitialPopulation population = new RandomInitialPopulation();
         BeanFactory.injectFields(population);
         population.init(initialization);
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/OptimizingFunctionProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/OptimizingFunctionProducer.java
index b64d7573..2828b828 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/OptimizingFunctionProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/OptimizingFunctionProducer.java
@@ -27,7 +27,7 @@ public class OptimizingFunctionProducer {
     @Produces
     @ApplicationScoped
     @Named("optimization-function-configuration")
-    public Instance find(final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.fitness") Instance fitnessConfiguration) {
+    public Instance find(final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.fitness") Instance fitnessConfiguration) {
         return findInner(fitnessConfiguration);
     }
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/SelectorFactory.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/SelectorFactory.java
index fe923efe..552e7694 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/SelectorFactory.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/ea/producer/SelectorFactory.java
@@ -5,7 +5,6 @@ import de.evoal.core.api.cdi.ConfigurationValue;
 import de.evoal.core.api.utils.LanguageHelper;
 import de.evoal.languages.model.instance.Instance;
 import io.jenetics.*;
-import io.jenetics.util.Seq;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Produces;
@@ -17,15 +16,15 @@ public class SelectorFactory {
 	@Produces
 	@Named("survivor")
 	public Selector createSurvivorSelector(
-			@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.selectors.survivor.name") final String name,
-			@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.selectors.survivor") Instance config) {
+			@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.selectors.survivor.name") final String name,
+			@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.selectors.survivor") Instance config) {
 		return create(name, config);
 	}
 
 	@Produces @Named("offspring")
 	public Selector createOffspringSelector(
-			@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.selectors.offspring.name") final String name,
-			@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.selectors.offspring") Instance config) {
+			@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.selectors.offspring.name") final String name,
+			@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.selectors.offspring") Instance config) {
 		return create(name, config);
 	}
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/BlackboardValueProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/BlackboardValueProducer.java
index 31426938..9537e98a 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/BlackboardValueProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/BlackboardValueProducer.java
@@ -15,7 +15,7 @@ import java.util.Map;
 @ApplicationScoped
 public class BlackboardValueProducer {
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public Integer injectIntegerValue(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
         final Object result = board.get(value.value());
@@ -30,7 +30,7 @@ public class BlackboardValueProducer {
     }
 
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public String injectStringValue(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
         final Object result = board.get(value.value());
@@ -39,7 +39,7 @@ public class BlackboardValueProducer {
     }
 
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public File injectFileValue(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
         final Object result = board.get(value.value());
@@ -47,7 +47,7 @@ public class BlackboardValueProducer {
     }
 
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public Map<String, Object> injectMapValue(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
 
@@ -55,7 +55,7 @@ public class BlackboardValueProducer {
     }
 
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public PropertiesSpecification injectPropertiesSpecification(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
 
@@ -63,7 +63,7 @@ public class BlackboardValueProducer {
     }
 
     @Produces
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION)
     public Properties injectProperties(final InjectionPoint ip, final Blackboard board) {
         final BlackboardValue value = ip.getAnnotated().getAnnotation(BlackboardValue.class);
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/ConfigurationValueProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/ConfigurationValueProducer.java
index 6898925d..a3a90dba 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/ConfigurationValueProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/ConfigurationValueProducer.java
@@ -19,7 +19,7 @@ import javax.enterprise.inject.spi.InjectionPoint;
 @Slf4j
 public class ConfigurationValueProducer {
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public Integer injectIntegerValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -27,7 +27,7 @@ public class ConfigurationValueProducer {
     }
 
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public Double injectDoubleValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -35,7 +35,7 @@ public class ConfigurationValueProducer {
     }
 
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public String injectStringValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -43,7 +43,7 @@ public class ConfigurationValueProducer {
     }
 
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public final Array injectArrayValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -51,7 +51,7 @@ public class ConfigurationValueProducer {
     }
 
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public final Instance injectInstanceValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -59,7 +59,7 @@ public class ConfigurationValueProducer {
     }
 
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public Boolean injectBooleanValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
@@ -67,7 +67,7 @@ public class ConfigurationValueProducer {
     }
     
     @Produces
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "")
     public double [] injectDoubleArrayValue(final InjectionPoint ip, final Blackboard board) {
         final ConfigurationValue value = ip.getAnnotated().getAnnotation(ConfigurationValue.class);
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/OptimisationModelLoader.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/OptimisationModelLoader.java
index bc57b1b6..cf761267 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/OptimisationModelLoader.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/OptimisationModelLoader.java
@@ -25,23 +25,23 @@ import java.io.File;
 
 @ApplicationScoped
 @Slf4j
-public class EvolutionaryAlgorithmModelLoader {
+public class OptimisationModelLoader {
     @Inject
     private Blackboard board;
     private OptimisationModel model;
 
     public void load(final @Observes BlackboardEntry entry) {
-        if(!entry.isSame(BlackboardEntry.EA_CONFIGURATION_FILE)) {
+        if(!entry.isSame(BlackboardEntry.OPTIMISATION_CONFIGURATION_FILE)) {
             return;
         }
 
-        final String configurationFileName = board.get(BlackboardEntry.EA_CONFIGURATION_FILE);
-        log.info("Loading evolutionary algorithm configuration from {}.",  configurationFileName);
+        final String configurationFileName = board.get(BlackboardEntry.OPTIMISATION_CONFIGURATION_FILE);
+        log.info("Loading optimisation configuration from {}.",  configurationFileName);
 
         final File configurationFile = new File(configurationFileName);
         if(!configurationFile.exists() || ! configurationFile.canRead()) {
-            log.error("Unable to read evolutionary algorithm configuration file '{}'", configurationFileName);
-            throw new IllegalArgumentException("Unable to read evolutionary algorithm configuration file: " + configurationFileName);
+            log.error("Unable to read optimisation configuration file '{}'", configurationFileName);
+            throw new IllegalArgumentException("Unable to read optimisation configuration file: " + configurationFileName);
         }
 
         initializeEMF();
@@ -55,10 +55,10 @@ public class EvolutionaryAlgorithmModelLoader {
         resourceSet.addLoadOption(XtextResource.OPTION_ENCODING, "UTF-8");
 
         try {
-            log.info("Continue by loading the EAL file.");
+            log.info("Continue by loading the OL file.");
             final URI modelURI = URI.createFileURI(configurationFile.getAbsolutePath());
 
-            log.info("Loading ea model from URI {}.", modelURI);
+            log.info("Loading ol model from URI {}.", modelURI);
 
             final Resource resource = resourceSet.getResource(modelURI, true);
             resource.load(resourceSet.getLoadOptions());
@@ -81,9 +81,9 @@ public class EvolutionaryAlgorithmModelLoader {
             }
 
             model = (OptimisationModel) resource.getContents().get(0);
-            board.bind(BlackboardEntry.EA_CONFIGURATION, model);
+            board.bind(BlackboardEntry.OPTIMISATION_CONFIGURATION, model);
         } catch (final Exception e) {
-            log.error("Unable to evolutionary algorithm configuration file '{}'.", configurationFile, e);
+            log.error("Unable to load optimisation configuration file '{}'.", configurationFile, e);
          }
     }
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesBoundariesProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesBoundariesProducer.java
index e59ee187..10bb824a 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesBoundariesProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesBoundariesProducer.java
@@ -1,6 +1,7 @@
 package de.evoal.core.main.producer;
 
 import de.evoal.core.api.ea.constraints.model.DataConstraints;
+import de.evoal.core.api.properties.PropertiesSpecification;
 import de.evoal.core.api.properties.PropertySpecification;
 import de.evoal.core.api.properties.info.PropertiesBoundaries;
 import de.evoal.core.api.properties.info.PropertiesRanges;
@@ -15,7 +16,17 @@ import java.util.Collection;
 @ApplicationScoped
 public class PropertiesBoundariesProducer {
     @Produces @ApplicationScoped
-    public PropertiesBoundaries create(final DataConstraints constraints) {
-        return BoundaryIdentifier.run(constraints);
+    public PropertiesBoundaries create(final DataConstraints constraints, final @Named("genotype-specification") PropertiesSpecification genotypeSpecification) {
+        final PropertiesBoundaries boundaries = BoundaryIdentifier.run(constraints);
+
+        genotypeSpecification
+                .getProperties()
+                .stream()
+                .filter(s -> !boundaries.contains(s))
+                .forEach(s -> {
+                    boundaries.add(s, new PropertiesBoundaries.Boundaries(-Double.MAX_VALUE/2, Double.MAX_VALUE/2));
+                });
+
+        return boundaries;
     }
 }
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesRangesProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesRangesProducer.java
index 47b2b3a0..08163572 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesRangesProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/PropertiesRangesProducer.java
@@ -1,5 +1,6 @@
 package de.evoal.core.main.producer;
 
+import de.evoal.core.api.properties.PropertiesSpecification;
 import de.evoal.core.api.properties.PropertySpecification;
 import de.evoal.core.api.properties.info.PropertiesBoundaries;
 import de.evoal.core.api.properties.info.PropertiesRanges;
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/SpecificationProducer.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/SpecificationProducer.java
index 4f906835..b21bea72 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/SpecificationProducer.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/producer/SpecificationProducer.java
@@ -8,23 +8,20 @@ import de.evoal.languages.model.instance.Array;
 import de.evoal.languages.model.instance.Attribute;
 import de.evoal.languages.model.instance.DataReference;
 import de.evoal.languages.model.instance.Instance;
-import org.apache.commons.math3.util.Pair;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
 import javax.inject.Named;
 import java.util.List;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 @ApplicationScoped
 public class SpecificationProducer {
     @Produces
     @Dependent
     @Named("genotype-description")
-    public List<DataDescription> createSourceSpecification(final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.genotype") Array genotype) {
+    public List<DataDescription> createSourceSpecification(final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.genotype") Array genotype) {
         final List<DataDescription> descriptors = genotype.getValues()
                 .stream()
                 .map(Instance.class::cast)
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearch.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearch.java
index e1a610f4..42a66da6 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearch.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearch.java
@@ -12,14 +12,12 @@ import de.evoal.core.api.cdi.BlackboardValue;
 import de.evoal.core.api.cdi.ConfigurationValue;
 import de.evoal.core.api.ea.initial.InitialPopulation;
 import de.evoal.core.api.utils.LanguageHelper;
-import de.evoal.core.api.ea.codec.CustomCodec;
 import de.evoal.core.api.ea.fitness.comparator.FitnessValue;
 
 import de.evoal.core.api.statistics.StatisticsWriter;
 import de.evoal.core.main.ea.alterer.AltererFactory;
 import de.evoal.core.main.ea.codec.DynamicCodec;
 import de.evoal.core.main.ea.fitness.JeneticsFitnessFunction;
-import de.evoal.core.main.ea.initial.InitialPopulationFactory;
 import de.evoal.core.main.jenetics.ConstraintList;
 import de.evoal.languages.model.instance.Array;
 import de.evoal.languages.model.instance.Attribute;
@@ -29,7 +27,6 @@ import de.evoal.languages.model.ol.OptimisationModel;
 import io.jenetics.*;
 import io.jenetics.engine.*;
 import io.jenetics.stat.MinMax;
-import io.jenetics.util.Factory;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.enterprise.context.Dependent;
@@ -59,19 +56,19 @@ public class HeuristicSearch {
 	private String run;
 
 	@Inject
-	@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.number_of_generations")
+	@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.number_of_generations")
 	private int numberOfGenerations;
 
 	@Inject
-	@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.size_of_population")
+	@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.size_of_population")
 	private int sizeOfPopulation;
 
 	@Inject
-	@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.maximize")
+	@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.maximize")
 	private Boolean maximize;
 
 	@Inject
-	@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.maximum_age")
+	@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.maximum_age")
 	private int maximumAge;
 
 	private final Map<String, List<Alterer<?, FitnessValue>>> alterers = new HashMap<>();
@@ -137,7 +134,7 @@ public class HeuristicSearch {
 	}
 
 	private void setup() {
-		final OptimisationModel configuration = board.get(BlackboardEntry.EA_CONFIGURATION);
+		final OptimisationModel configuration = board.get(BlackboardEntry.OPTIMISATION_CONFIGURATION);
 
 		final de.evoal.languages.model.instance.Instance alterers = LanguageHelper.lookup(configuration.getInstance(), "algorithm.alterers");
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchEvaluation.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchEvaluation.java
index 1aa0b95a..42a8fe16 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchEvaluation.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchEvaluation.java
@@ -33,7 +33,7 @@ public class HeuristicSearchEvaluation implements MainClass {
     private WriterContext context;
 
     @Inject
-    @BlackboardValue(BlackboardEntry.EA_CONFIGURATION_FILE)
+    @BlackboardValue(BlackboardEntry.OPTIMISATION_CONFIGURATION_FILE)
     private String heuristicFile;
 
     @Inject
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchMain.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchMain.java
index cdedd099..d75eae95 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchMain.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/search/HeuristicSearchMain.java
@@ -10,7 +10,6 @@ import javax.enterprise.context.ApplicationScoped;
 import de.evoal.core.api.statistics.ColumnType;
 import de.evoal.core.api.statistics.WriterContext;
 import org.apache.commons.math3.util.Pair;
-import org.apache.deltaspike.core.api.provider.BeanProvider;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -29,7 +28,7 @@ public class HeuristicSearchMain implements MainClass {
 	@Override
 	public void run() {
 		final String outputFolder = board.get(BlackboardEntry.EVALUATION_OUTPUT_FOLDER);
-		final String heuristicFileName = board.get(BlackboardEntry.EA_CONFIGURATION_FILE);
+		final String heuristicFileName = board.get(BlackboardEntry.OPTIMISATION_CONFIGURATION_FILE);
 
 		final File outputBaseDir = HeuristicSearchUtils.calculateOutputBaseDir(new File(outputFolder), new File(heuristicFileName));
 
diff --git a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/statistics/StatisticsFactory.java b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/statistics/StatisticsFactory.java
index 98d228a6..7403629f 100644
--- a/src/core/de.evoal.core/src/main/java/de/evoal/core/main/statistics/StatisticsFactory.java
+++ b/src/core/de.evoal.core/src/main/java/de/evoal/core/main/statistics/StatisticsFactory.java
@@ -21,7 +21,7 @@ public class StatisticsFactory {
     @Produces
     @Dependent
     @Named("statistics")
-    public StatisticsWriter create(final @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "statistics") Instance instance) {
+    public StatisticsWriter create(final @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "statistics") Instance instance) {
         Requirements.requireSize(instance.getAttributes(), 1);
         final Array array = (Array)instance.getAttributes().get(0).getValue();
 
diff --git a/src/core/de.evoal.surrogate.api/scripts/debug-search-with-surrogate.sh b/src/core/de.evoal.surrogate.api/scripts/debug-search-with-surrogate.sh
index 1abaa842..bb3088ef 100755
--- a/src/core/de.evoal.surrogate.api/scripts/debug-search-with-surrogate.sh
+++ b/src/core/de.evoal.surrogate.api/scripts/debug-search-with-surrogate.sh
@@ -20,7 +20,7 @@ java -Dorg.jboss.logging.provider=slf4j\
      --add-exports io.jenetics.base/io.jenetics.internal.util=de.evoal.core \
      -m de.evoal.core/de.evoal.core.main.Evoal \
      -Bcore:main=heuristic-search \
-     "-Bcore:ea-configuration-file=$2" \
+     "-Bcore:optimisation-configuration-file=$2" \
      "-Bsurrogate:configuration-file=$3" \
      "-Bsurrogate:pre-trained=$4" \
      "-Bsurrogate:training-data=$5"\
diff --git a/src/core/de.evoal.surrogate.api/scripts/run-search-with-surrogate.sh b/src/core/de.evoal.surrogate.api/scripts/run-search-with-surrogate.sh
index c1f7e30b..91204ba0 100755
--- a/src/core/de.evoal.surrogate.api/scripts/run-search-with-surrogate.sh
+++ b/src/core/de.evoal.surrogate.api/scripts/run-search-with-surrogate.sh
@@ -19,7 +19,7 @@ java -Dorg.jboss.logging.provider=slf4j\
      --add-exports io.jenetics.base/io.jenetics.internal.util=de.evoal.core \
      -m de.evoal.core/de.evoal.core.main.Evoal \
      -Bcore:main=heuristic-search \
-     "-Bcore:ea-configuration-file=$2" \
+     "-Bcore:optimisation-configuration-file=$2" \
      "-Bsurrogate:configuration-file=$3" \
      "-Bsurrogate:pre-trained=$4" \
      "-Bsurrogate:training-data=$5"\
diff --git a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/cdi/SurrogateProducer.java b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/cdi/SurrogateProducer.java
index 581850aa..dacc2251 100644
--- a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/cdi/SurrogateProducer.java
+++ b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/cdi/SurrogateProducer.java
@@ -30,7 +30,6 @@ import javax.inject.Named;
 import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -57,7 +56,7 @@ public class SurrogateProducer {
         this.configuration = loader.apply(file);
         
         final EObject mlConfiguration = board.get(SurrogateBlackboardEntry.SURROGATE_CONFIGURATION);
-        final EObject eaConfiguration = board.get(BlackboardEntry.EA_CONFIGURATION);
+        final EObject eaConfiguration = board.get(BlackboardEntry.OPTIMISATION_CONFIGURATION);
 
         final Map<String, PropertySpecification> specifications = new HashMap<>();
         addDataFrom(specifications, mlConfiguration);
diff --git a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingInitialPopulation.java b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingInitialPopulation.java
index 019504e4..5096455a 100644
--- a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingInitialPopulation.java
+++ b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingInitialPopulation.java
@@ -11,7 +11,6 @@ import de.evoal.core.api.properties.stream.FileBasedPropertiesStreamSupplier;
 import de.evoal.core.api.properties.stream.PropertiesStreamSupplier;
 import de.evoal.languages.model.instance.Instance;
 import de.evoal.surrogate.api.SurrogateBlackboardEntry;
-import de.evoal.surrogate.api.training.TrainingDataManager;
 import io.jenetics.Gene;
 import io.jenetics.Genotype;
 import io.jenetics.engine.Engine;
@@ -23,14 +22,13 @@ import lombok.extern.slf4j.Slf4j;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.inject.Provider;
 import java.io.File;
 
 @Slf4j
 public class TrainingInitialPopulation<G extends Gene<?, G>, C extends Comparable<C>> implements InitialPopulation<G, C> {
 
     @Inject
-    @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.size_of_population")
+    @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.size_of_population")
     private int sizeOfPopulation;
 
     @Inject
diff --git a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingProducer.java b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingProducer.java
index 9bdd7789..95d8103b 100644
--- a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingProducer.java
+++ b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/ea/TrainingProducer.java
@@ -21,7 +21,7 @@ public class TrainingProducer {
     @Produces
     @Dependent
     @Named("training")
-    public InitialPopulation create(@ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.initialization") Instance initialization) {
+    public InitialPopulation create(@ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.initialization") Instance initialization) {
         final TrainingInitialPopulation population = new TrainingInitialPopulation();
         BeanFactory.injectFields(population);
         population.init();
diff --git a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/statistics/correlated/GenerationStatisticsWriter.java b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/statistics/correlated/GenerationStatisticsWriter.java
index 986cc531..e3a13aea 100644
--- a/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/statistics/correlated/GenerationStatisticsWriter.java
+++ b/src/core/de.evoal.surrogate.api/src/main/java/de/evoal/surrogate/main/statistics/correlated/GenerationStatisticsWriter.java
@@ -60,7 +60,7 @@ public class GenerationStatisticsWriter implements StatisticsWriter {
     @Inject
     private Provider<Function<Properties, Properties>> fitnessFactory;
 
-    @Inject @ConfigurationValue(entry = BlackboardEntry.EA_CONFIGURATION, access = "algorithm.fitness")
+    @Inject @ConfigurationValue(entry = BlackboardEntry.OPTIMISATION_CONFIGURATION, access = "algorithm.fitness")
     private Instance config;
 
     @Inject
-- 
GitLab