1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
- Development Branch -
29/1
Started formal development based on data_struct spike.
The first goal is to produce the data structure that represents a chromosome. This structure will rely on a range
of other classes, which will be developed and tested as well.
Chromosome tests:
- a data structure called Chromosome exists
- the chromosome instance can return the right outputs based on given inputs
ChromosomeElement tests:
- Node is capable of processing its connections using its function and returning the result
- Input returns the value it is set to
- Outputs returns a single value from its source Node
30/1
Added class representations of functions and mutators, as well as the program itself (CGP).
Modified the way the chromosome stores its data to allow for more flexible mutations.
31/1
Parity will be considered constant, at 2, for now.
Added static nested classes for system-wide resources such as a random number generator, the function set
and the parameter set. These can be accessed from anywhere within the program, but not modified by any class
but CGP.
Modularized design:
Modules for fitness function, mutation operator, evolutionary algorithm and population.
FF, EA and mutation modules act as callbacks; the user may specify how the module does its job,
but must comply with the interface.
Population is slightly more complex: the user may define a custom chromosome and use it to generate a population,
so long as it extends Chromosome. In conjunction with modularized FF, EA and mutation, this makes for a very
flexible and versatile system. The Population class itself is immutable, since the system relies heavily on it.
Finally, it is Iterable to for access to the chromosomes within.
|