Grid-enabled evolutionary algorithms with Geneva

The Geneva library provides you with the necessary tools to perform parametric / metaheuristic optimization in parallel on devices ranging from multi-processor machines over clusters all the way to Grid- and Cloud-installations. A GPU backend exists, but has not been released to the public.

The library adopts a generic approach to optimization, allowing candidate solutions ("individuals" in Geneva's terminology) to be assembled from different parameter types, such as floating-point, integer and boolean values. It does not assume that the evaluation function is in any way differentiable or that it can indeed by described in mathematical terms at all. Indeed, the evaluation may even happen in an external program, as long as it understands the parameter formats supported by Geneva (which can be achieved easily through wrapper scripts).

Geneva can thus be applied to a very wide range of problem domains, ranging from technical over scientific to economic problem domains.

Contrary to what its name suggests, Geneva today comprises not only evolutionary algorithms, but also particle swarm optimization, simulated annealing and parameter scans. Further optimizers, such as "conjugate gradient" and "simplex" will be added in the future. All algorithms act on the same data structures, so your candidate solutions may be moved from one optimizer to another.  This allows to use one algorithm for thr "rough" optimization and to hand over the best solutions found to more fine-grained algorithms.

Parallelization is perfomed mostly seemlessly for the user, with only few exceptions (such as the need for avoidance of global variables in user code in mutithreaded mode). In distributed environments, Geneva assumes that user-defined individuals are serializable, using the easy-to-use Boost.Serialization framework.

The current development platform is Linux (owing to the fact that most larger HPC installations run this operating system). But as Geneva is in large parts based on the Boost collection of C++ libraries, portability issues have also been taken into account, and a later port to other operating systems is foreseen.

Geneva is available under the Open Source license "Apache v2" from the GitHub open source portal.