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

Bounded chromosomes use bounds from DDL files.

parent 1b95c4bb
No related branches found
No related tags found
No related merge requests found
package de.evoal.core.main.ea.codec.chromosome;
import de.evoal.core.api.properties.PropertySpecification;
import de.evoal.core.api.properties.info.PropertiesBoundaries;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.instance.Instance;
import io.jenetics.util.DoubleRange;
import javax.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;
public abstract class DynamicBoundedDoubleChromosome extends DynamicChromosome {
@Inject
private PropertiesBoundaries boundaries;
protected List<DoubleRange> ranges;
@Override
......@@ -20,7 +26,8 @@ public abstract class DynamicBoundedDoubleChromosome extends DynamicChromosome {
}
protected DoubleRange toRange(final DataDescription dataDescription) {
// TODO Find actual ranges from DDL
return DoubleRange.of(-(Double.MAX_VALUE/2), (Double.MAX_VALUE/2));
PropertiesBoundaries.Boundaries bounds = boundaries.get(new PropertySpecification(dataDescription.getName(), dataDescription));
return DoubleRange.of(bounds.lower().doubleValue(), bounds.upper().doubleValue());
}
}
package de.evoal.core.main.ea.codec.chromosome;
import de.evoal.core.api.properties.PropertySpecification;
import de.evoal.core.api.properties.info.PropertiesBoundaries;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.instance.Instance;
import io.jenetics.util.DoubleRange;
import io.jenetics.util.IntRange;
import javax.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;
public abstract class DynamicBoundedIntegerChromosome extends DynamicChromosome {
@Inject
private PropertiesBoundaries boundaries;
protected List<IntRange> ranges;
@Override
......@@ -20,7 +27,8 @@ public abstract class DynamicBoundedIntegerChromosome extends DynamicChromosome
}
protected IntRange toRange(final DataDescription dataDescription) {
// TODO Find actual ranges from DDL
return IntRange.of(-(Integer.MAX_VALUE/2), (Integer.MAX_VALUE/2));
PropertiesBoundaries.Boundaries bounds = boundaries.get(new PropertySpecification(dataDescription.getName(), dataDescription));
return IntRange.of(bounds.lower().intValue(), bounds.upper().intValue());
}
}
......@@ -2,6 +2,7 @@ package de.evoal.core.main.ea.codec.chromosome;
import de.evoal.core.api.properties.Properties;
import de.evoal.core.api.properties.PropertySpecification;
import de.evoal.core.api.properties.info.PropertiesBoundaries;
import de.evoal.core.main.jenetics.BoundedDoubleChromosome;
import de.evoal.core.main.jenetics.BoundedDoubleGene;
import de.evoal.core.main.jenetics.BoundedIntegerChromosome;
......@@ -10,6 +11,7 @@ import io.jenetics.Chromosome;
import io.jenetics.util.IntRange;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.ArrayList;
import java.util.List;
......
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