|
|
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](DSL/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](DSL/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.
|
|
|
|