About
n-genes is a powerful Genetic Algorithms and Programming toolkit written for Java 5. Using advanced object oriented techniques, like generics and introspection, makes it one of the simplest systems to learn and use. Its design allows fast coding and a total flexibility.
n-genes is an open-source project released under GPL. It is free of charges.
Features
Stack-based Genetic Programming
The Genetic Programming implemented in n-genes relies on linear postfix programs, close to Forth or Postscript programming languages. This has the following advantages:- High-level and turing-complete language (through flow-control instructions);
- Extendable and customisable instruction set;
- Possibility of using faster and simpler GA operators;
- Efficient bloat removing/controlling algorithms.
Modularity and Dynamic Config Files
All parts of evolutionary computing have been made components, through "Design Patterns" methodology. The benefits are:- Separation between behaviour and representation, i.e. we can use the same operators for a GA doubles-array individual or for a GP problem;
- Short and readable code, since each object represents only a single operation and therefore has few short methods.
- The possibility to change the components or their behaviour during evolution, for example changing dynamically the size of a population or using self-adaptating mutation operators.
Performances Optimisations
n-genes was written with high performance computing in mind. Here are the optimisations you get for free:- Object-recycling memory management, eliminating the time spent on object-allocation and garbage-collection;
- Efficient individual-level fitness cache, the fitness is lazy-computed and cached until the individual is mutated;
- Population-level cache of individuals, saving computation time when the population diversity dimish.