aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: dee17fe2857709fc9ce3d4193f35e082cc166207 (plain)
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.