The optimisation language lets you describe the problem and a possible optimisation solution. The principle file structure is the following:
import "definitions" from de.evoal.core.optimisation;
import "definitions" from de.evoal.generator.optimisation;
import "definitions" from de.evoal.generator.generator;
import "definitions" from de.evoal.core.ea.optimisation;
import "data" from example;
module com.example {
specify problem 'example-search' {
description := "Simple search";
'search-space' := [data 'x:0'];
'optimisation-space' := [data 'y:0'];
'maximise' := true;
'optimisation-function' := 'benchmark-function' {
'benchmark' := ackley {};
};
documenting := [];
}
configure 'evolutionary-algorithm' for 'example-search' {
// algorithm configuration is left out
documenting := [];
}
}
Problem
The problem specification describes the optimisation problem. You can configure the following things:
problem.description
A description of the configured problem. EvoAl does not use this entry and is for documentary purposes only.
problem.search-space
Description of the problem's search space. The search space is specified using an array of data. See Data Description Language for more information.
problem.optimisation-space
Description of the problem's optimisation space. The search space is specified using an array of data. See Data Description Language for more information.
problem.maximise
Whether or not this problem is a maximisation problem.
problem.optimisation-function
Allows you to document the function to optimise if it is known. In those cases, you can specify the optimisation function, such as benchmark functions. Later, you can refer to the function from your algorithm to not repeat the configuration.
Algorithm
The example first specifies the problem. It states the search and optimisation space if the problem should be maximised and the optimisation function is configured. The second step configures an evolutionary algorithm as a possible solution. It is possible to split the problem specification and the algorithm configuration into several files, thus, allowing to have multiple algorithms for the same problem specification.