- 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.