diff --git a/src/core/de.evoal.core/scripts/run-search.sh b/src/core/de.evoal.core/scripts/run-search.sh index d559d1acd03cf3e93e063ddfbf6913699d8fc58e..48fa0a2d2517faa7dc4b589e652045e9794fb06c 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 6d515fe7773ae7c65ebeb507a0f03d3879d52b63..9d6acdf147280bc970cab21840bd7dab6500b346 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 6a864175095c0ed84214089ef0ae1b2cde4ca3d1..8a469f160d0a8a7e5e575aaaaebb1553ec8646d2 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 27ab8b942306977aae336530a7e8b73c88666b28..55e5ffd65adcf29c94bec6ed61a450dca5a8e099 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 7a91ca58c71641bd29b63b056ac97bdccfd0835c..a8626935b268e3841e2766339f0894f94edf5341 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 5f4b8ba21ca1ee817b5ae0dc12d98c7c9cbc0664..a6722b7da4706c1250e3a13981e3d7cc4b977907 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 768940a25c021a344c03f40a4a44d39d43976f34..d6b6faf8f6fd787311d0aa8a4e08bf5950757f4d 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 cacd3c567f3fb6b307b07e084d10eb806c03c121..372d920fc8d453d484694216ebe95ae18355e9f2 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 4dd2015f0552b43edc2ad6aafbaf75518b2f9202..9a35f09308b59537aab8ba630b2a623c50af1157 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 39712d10ec13fee8cfd1aa3428b8790f748ca2e2..aff9fa010f8126726171f96a46b1f9d8f58af9dc 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 2f69f8388c3c801e778f361f84cb8dbae8008660..c2301d5f6a85414aad661bde2a42310dbe1144ac 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 113efb499c008419e93907d6ecef7d4db7cf25c4..9999352bab4c05aaa4b23bcc6201e9bffbe19313 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 b64d75737b99b0983cd6d2f99f46ee20002ed20a..2828b828c05fa858014a2fdb38387d62fa707a96 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 fe923efece001d87ce90246f47dde9b863ec7a51..552e76942b2f25709700e5f5f1356b1635aecfcc 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 31426938dcdbf7eb04d281b8469853a7dd598608..9537e98a66980a67fa7020120053f546c2c76cc4 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 6898925d6cb25fb6773a3bd6d66bb249c6da77f2..a3a90dba42b285deaf7dfe49694618b9e404792a 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 bc57b1b64112860299852d4748774209c3977190..cf7612674e695629f9586c7f2247fe7d172b1d07 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 e59ee187b73997b2eea266384381c301afef294e..10bb824a14c58a69a97b2152caee71dad7542568 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 47b2b3a0090765fa6942a28c62fc7f303e72dee1..08163572fdb658e88f4379bf919acb56494e22a9 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 4f90683565ad797a7c61671d8462a8832a596ab2..b21bea72011b03eac9159c91ce5f7ecca3190c7a 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 e1a610f4a15e7f72efdc6a7340a79e4277e39877..42a66da6a97503c492c6f5e867e468223b034f68 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 1aa0b95acdcf8067343fef5817d4a10f2c75cb1a..42a8fe1682bf9f202e871c00a3b14b071131d0c3 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 cdedd0991bf7cfc9d049bc6b867d5784a54994e6..d75eae959297c35159596df30beb85446ec0de6d 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 98d228a6ca306b7bbff88ae912554b752ad6f9dc..7403629fc8a253d5bf90fb56230d6ab017c98d5d 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 1abaa842792f0c369480de3b0e834645fe79bab5..bb3088ef357bc48fe68bc2dc321f7342bf7bc067 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 c1f7e30bc9b46fa2a054001f47437e80628fcf7f..91204ba011eb3252da74b30499816951a170af6a 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 581850aa615977104823286fd284c0378cba3cc0..dacc2251d93e08f7ec0b3bfbc3b314bd1748322e 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 019504e4df4b7c1f89d9d9b91383cfbeae588b36..5096455a3a239f6531aedf7cee9b4dcadd583086 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 9bdd7789cced603209452d52dde94418eb0d977e..95d8103be4a4a36185a26660baac606ed8440450 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 986cc531690e081729e078277a37d2f444e360f4..e3a13aeada49f90ad01b79c2b6bcaf98a1cf8409 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