Missing features in generator after changing to new structure
Summary
After switching to the new language structure, some old features were not transferred or correctly included due to time issues. This mainly refers to the generator
pipeline. It contains correct writing capabilities (see #102 (closed) ), the noising feature (see #103 (closed) ), and the uniform distribution (main reason for this issue) so far. Will update, when more occurs.
Component
Mainly the generator component with the associated .dl
files.
Steps to reproduce
Run the attached 01-run-generator.sh script together with the data description file as well as the simple-uniformDistributed-benchmark.generator
.
Current Behaviour
Noise is not available, uniform distributions as well, and the results are missing the header at the moment.
Expected Behavior
The generator of EvoAl should be able
- to generate data according to some distribution (atm: normal and uniform),
- use this data, to compute function values for given benchmarks (atm: weightedSphere, rastrigin, rosenbrock, ackley)
- noise either the resulting data or the original data with noise from some distribution (atm: normal and uniform),
- write the results to
json
,csv
orarff
files.
These steps are usually combined through a pipeline and defined in the generator
file.
Relevant logs and/or screenshots
01-run-generator.sh
:
#!/bin/bash
export EVOAL_HOME=$( cd -- "$(dirname $0)/../evoal" >/dev/null 2>&1 ; pwd -P )
export EXECUTION_FOLDER=$( cd -- "$(dirname $0)/.." >/dev/null 2>&1 ; pwd -P )
export CONFIGURATION_FOLDER=$EXECUTION_FOLDER/configuration
$SHELL $EVOAL_HOME/bin/evoal-generator.sh $EXECUTION_FOLDER $CONFIGURATION_FOLDER/01-generate/ackley.generator -Bcore:search-path=$CONFIGURATION_FOLDER
benchmark.ackley.ddl
module 'benchmark.ackley' {
types:
quotient type 'ackley-variable'
description: "Range information for input variables with Ackley-Benchmark-Function"
with constraints:
value < 30;
value > -20;
;
data:
/**
* Input dimension for the ackley generator function.
*/
real data 'ackley.x:0' of type 'ackley-variable';
real data 'ackley.x:1' of type 'ackley-variable';
/**
* Output dimension for the ackley generator function.
*/
quotient real data 'ackley.y:0';
}
01-generate.simple-uniformDistributed-benchmark.generator
(omitted generation for different benchmarks for simplicity)
import "definitions" from de.evoal.core.math;
import "definitions" from de.evoal.generator.generator;
import "data" from benchmark.ackley;
import "data" from benchmark.rastrigin;
import "data" from benchmark.rosenbrock;
import "data" from benchmark.weightedSphere;
module '01-generate.simple-uniformDistributed-benchmark-data' {
/**
* Introduce a simple pipeline that generates some test data using
* the ackley function.
*/
pipeline 'ackley-pipeline' [
/**
* First, we generate some uniformly distributed data.
*/
step {
component 'uniform-distribution' {
}
writes [data 'ackley.x:0'];
}
step {
component 'uniform-distribution' {
}
writes [data 'ackley.x:1'];
}
step {
component 'ackley' {
}
reads [data 'ackley.x:0', data 'ackley.x:1'];
writes [data 'ackley.y:0'];
}
]
write "data/ackley.csv" with 1000 samples from executing [ pipeline 'ackley-pipeline'];
}
Possible fixes
- For the missing integration of the uniform-distribution, it is (imho) mainly language support and the adaption of class
de.evoal.generator.generator.uniform-distribution
to reflect the changes inde.evoal.generator.generator.normal-distribution
. - For the correct noise, @lau_pau correctly identified the class
de.evoal.generator.generator.normally-distributed-noise
as not up to date. It still reflects the old configuration style. - For the missing
PropertiesSpecification
issue (see #102 (closed) ), it is probably in theStatementExecutor
.
Contact Person
(Link a person/ people, that can answer questions about this issue, e.g. yourself)
/cc @berber