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 or arff 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 in de.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 the StatementExecutor.

Contact Person

(Link a person/ people, that can answer questions about this issue, e.g. yourself)

/cc @berber