Skip to content
Snippets Groups Projects
Commit 642a3640 authored by Bernhard Johannes Berger's avatar Bernhard Johannes Berger
Browse files

Moved all code that is specific to evolutionary algorithms to core.ea. core.main keeps all the

stuff that is optimiser algorithm-independent. We still have to move some more content back to
core.main while we implement new optimisers. #19 #15

Fixed regressions with domain-specific language parsing #18. This bug was introduced by d74325cb.
parent 34da6c65
No related branches found
No related tags found
No related merge requests found
Pipeline #249755 passed
Showing
with 112 additions and 31 deletions
......@@ -7,6 +7,7 @@
<groupId>de.evoal</groupId>
<artifactId>core.plugin</artifactId>
<version>0.9.0-SNAPSHOT</version>
<relativePath>../de.evoal.core.plugin</relativePath>
</parent>
<artifactId>approximative.density</artifactId>
......
package de.evoal.approximative.density.ea.fitness;
import de.evoal.approximative.density.model.DensityData;
import de.evoal.core.api.ea.fitness.FitnessFunction;
import de.evoal.core.api.optimisation.OptimisationFunction;
import de.evoal.core.api.properties.Properties;
import de.evoal.core.api.properties.PropertiesSpecification;
import de.evoal.core.api.properties.info.PropertiesRanges;
import de.evoal.core.api.utils.LanguageHelper;
import de.evoal.core.api.utils.Requirements;
import de.evoal.core.api.ea.fitness.FitnessDecorator;
import de.evoal.core.api.optimisation.OptimisationFunctionDecorator;
import de.evoal.languages.model.instance.Instance;
import de.evoal.surrogate.api.configuration.PartialFunctionConfiguration;
import de.evoal.surrogate.api.function.FunctionCombiner;
......@@ -22,7 +22,7 @@ import java.util.function.BiFunction;
@Slf4j
@Vetoed
public abstract class DensityBasedFitness extends FitnessDecorator {
public abstract class DensityBasedFitness extends OptimisationFunctionDecorator {
private final BiFunction<PartialFunctionConfiguration, String, DensityData> modelCreator;
......@@ -55,7 +55,7 @@ public abstract class DensityBasedFitness extends FitnessDecorator {
}
@Override
public FitnessFunction init(final Instance config) {
public OptimisationFunction init(final Instance config) {
log.info("Setting up density-based fitness calculation.");
super.init(config);
......
......@@ -12,6 +12,7 @@ module de.evoal.approximative.density {
requires de.evoal.surrogate.api;
requires smile.math;
requires de.evoal.core.ea;
opens de.evoal.approximative.density.ea.fitness to weld.core.impl;
opens de.evoal.approximative.density.ea.surrogate.gof to weld.core.impl;
......
......@@ -7,6 +7,7 @@
<groupId>de.evoal</groupId>
<artifactId>core.plugin</artifactId>
<version>0.9.0-SNAPSHOT</version>
<relativePath>../de.evoal.core.plugin</relativePath>
</parent>
<artifactId>core.arff</artifactId>
......
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.evoal</groupId>
<artifactId>core.plugin</artifactId>
<version>0.9.0-SNAPSHOT</version>
<relativePath>../de.evoal.core.plugin</relativePath>
</parent>
<artifactId>core.ea</artifactId>
<name>EvoAl - Core - Evolutionary Algorithm</name>
<dependencies>
<dependency>
<groupId>org.decimal4j</groupId>
<artifactId>decimal4j</artifactId>
<version>1.0.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.jenetics</groupId>
<artifactId>jenetics.ext</artifactId>
<version>${jenetics.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-math</artifactId>
<version>${smile.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>core.junit</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>--add-exports</arg>
<arg>io.jenetics.base/io.jenetics.internal.math=de.evoal.core.ea</arg>
<arg>--add-exports</arg>
<arg>io.jenetics.base/io.jenetics.internal.util=de.evoal.core.ea</arg>
<arg>--add-exports</arg>
<arg>io.jenetics.base/io.jenetics.internal.collection=de.evoal.core.ea</arg>
</compilerArgs>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
</configuration>
</plugin>
</plugins>
</build>
</project>
package de.evoal.core.api.ea.cdi;
package de.evoal.core.ea.api.cdi;
import javax.enterprise.util.Nonbinding;
import javax.inject.Qualifier;
......
package de.evoal.core.api.ea.codec;
package de.evoal.core.ea.api.codec;
import de.evoal.core.api.properties.Properties;
import io.jenetics.Gene;
......
package de.evoal.core.api.ea.constraints.calculation;
package de.evoal.core.ea.api.constraints.calculation;
import de.evoal.core.api.ea.constraints.model.Constraint;
import de.evoal.core.api.cdi.BeanFactory;
import de.evoal.core.ea.api.constraints.model.Constraint;
import de.evoal.core.api.board.CoreBlackboardEntries;
import de.evoal.core.api.cdi.ConfigurationValue;
import javax.enterprise.context.ApplicationScoped;
......@@ -8,9 +9,9 @@ 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 org.apache.deltaspike.core.api.provider.BeanProvider;
import javax.inject.Inject;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
......@@ -19,9 +20,8 @@ public class CalculationFactory {
private final Map<String, Instance> calculationConfigurationByCategory = new HashMap<>();
@Inject
public CalculationFactory(final @ConfigurationValue(entry = CoreBlackboardEntries.OPTIMISATION_CONFIGURATION, access = "algorithm.handlers") Array handlerConfigurations) {
handlerConfigurations.getValues()
.stream()
public CalculationFactory(final @ConfigurationValue(entry = CoreBlackboardEntries.OPTIMISATION_CONFIGURATION, access = "algorithm.handlers") Instance [] handlerConfigurations) {
Arrays.stream(handlerConfigurations)
.map(Instance.class::cast)
.filter(LanguageHelper.filterInstanceByType("constraint-handler"))
.forEach(i -> {
......@@ -36,7 +36,7 @@ public class CalculationFactory {
final Instance config = calculationConfigurationByCategory.get(constraint.getGroup());
final String calculationName = LanguageHelper.lookup(config, "name");
final CalculationStrategy strategy = BeanProvider.getContextualReference(calculationName, false, CalculationStrategy.class);
final CalculationStrategy strategy = BeanFactory.create(calculationName, CalculationStrategy.class);
strategy.init(constraint, config);
return strategy;
......
package de.evoal.core.api.ea.constraints.calculation;
package de.evoal.core.ea.api.constraints.calculation;
import de.evoal.core.api.ea.constraints.strategies.CalculationResult;
import de.evoal.core.api.ea.constraints.model.Constraint;
import de.evoal.core.ea.api.constraints.strategies.CalculationResult;
import de.evoal.core.ea.api.constraints.model.Constraint;
import de.evoal.core.api.properties.Properties;
import de.evoal.languages.model.instance.Instance;
import lombok.NonNull;
......
package de.evoal.core.api.ea.constraints.model;
package de.evoal.core.ea.api.constraints.model;
import de.evoal.core.api.properties.Properties;
import de.evoal.core.api.properties.PropertySpecification;
......
package de.evoal.core.api.ea.constraints.model;
package de.evoal.core.ea.api.constraints.model;
import de.evoal.core.api.properties.PropertySpecification;
import lombok.Data;
......
package de.evoal.core.api.ea.constraints.model;
package de.evoal.core.ea.api.constraints.model;
/**
* Type of the constraint. A constraint can either be an equality constraint
......
package de.evoal.core.api.ea.constraints.model;
package de.evoal.core.ea.api.constraints.model;
import de.evoal.core.api.properties.Properties;
import javax.enterprise.inject.Vetoed;
......
package de.evoal.core.api.ea.constraints.model;
package de.evoal.core.ea.api.constraints.model;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.ddl.DataDescriptionModel;
......
/**
* The constraint model that can be used by implementing extensions.
*/
package de.evoal.core.api.ea.constraints.model;
\ No newline at end of file
package de.evoal.core.ea.api.constraints.model;
\ No newline at end of file
......@@ -2,4 +2,4 @@
* This package contains everything that has to do with constraints of
* genotypes or individuals.
*/
package de.evoal.core.api.ea.constraints;
\ No newline at end of file
package de.evoal.core.ea.api.constraints;
\ No newline at end of file
package de.evoal.core.api.ea.constraints.strategies;
package de.evoal.core.ea.api.constraints.strategies;
import de.evoal.core.api.ea.constraints.model.ConstraintResult;
import de.evoal.core.ea.api.constraints.model.ConstraintResult;
import lombok.Data;
/**
......
package de.evoal.core.api.ea.constraints.strategies;
package de.evoal.core.ea.api.constraints.strategies;
/**
* A constraint handling strategy. The actual implementation decides what to do with
......
package de.evoal.core.api.ea.constraints.strategies;
package de.evoal.core.ea.api.constraints.strategies;
import de.evoal.languages.model.instance.Instance;
import io.jenetics.Gene;
......
package de.evoal.core.api.ea.constraints.strategies.fitness;
package de.evoal.core.ea.api.constraints.strategies.fitness;
import de.evoal.core.api.ea.constraints.strategies.HandlingStrategy;
import de.evoal.core.api.ea.constraints.strategies.fitness.internal.ChainFunction;
import de.evoal.core.api.ea.constraints.strategies.fitness.internal.IdentityFunction;
import de.evoal.core.ea.api.constraints.strategies.HandlingStrategy;
import de.evoal.core.ea.api.constraints.strategies.fitness.internal.ChainFunction;
import de.evoal.core.ea.api.constraints.strategies.fitness.internal.IdentityFunction;
import de.evoal.core.api.properties.Properties;
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment