Botanicus, 2004
Botanicus is a general platform for the distributed genetic comparison-based algorithm. It has been developed as a Unix lectures project at Computer Science department of Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic.
Genetic algorithms
Time to time a difficult task to solve appears. It may not be obvious, how to write a program that solves it. It can also be obvious, how the task should be solved, however some crucial parameters might need to be set correctly.
At this moment, genetic algorithms, inspired by the Mother nature, come to the scene. Genetic algorithm usually simulates the natural selection of programs. There is a large group (pool) of programs (samples) and an evaluation function, which tells, how good the program performs (the program might gain bonus points for partially solving the task, lose points for failures, ...).
After all samples in the pool are evaluated, the new generation is created. Samples in the new generation are descendants of the programs in the previous generation. Indeed, if the program, or its parameters, can be encoded in the sequence of numbers (genome), simulated cross-over and/or mutation can be run to combine it with another program and to create the new one. The better the sample is, according to the evaluation function, the higher chance it has to become a parrent. The best samples may even survive to the next generation.
Advantages of Botanicus
Multiplatform
Botanicus should run on any Unix platform. It has been tested on Linux, FreeBSD, Solaris and Irix.
Distributed
Because the computation of the evaluation function and combination of samples can be very computationally expensive and time consuming, it is a high advantage to have a platform, that could run on several computers.
Comparison based
Unlike most other genetic algorithm platforms, Botanicus uses comparison based evaluation of samples. It might not be possible to assign any quality number to the sample, but it might be easy to compare two samples and to say, which performs better. This is a case of most multiplayer games.
Universal
Botanicus is a truly universal platform. It is not developed with any hardcoded meaning of the genome. There is a central botanist that remembers comparisons of individual samples, runs the genetic algorithm and communicates with clients using simple general protocol.
Breeding and comparison of the samples is the task for specialized clients, developed for a concrete task. After they are started, they register themselves by the botanist, that may give them a job afterwards.
Disadvantage of Botanicus
Excessive multithreading
When the project was tested, it has been observed, that the massive starting of the new program threads is limited on some, if not all, Unix systems. For instance on Linux the maximum number of running threads per application causes the limitation of the size of the genetic pool to fifteen entities.
This makes Botanicus in the current implementation unsuitable for larger tasks.