libfgen --Library for optimization using a genetic algorithm or particle swarm optimization
libfgen is a library that implements an efficient and customizable genetic algorithm (GA). It also provides particle swarm optimization (PSO) functionality and an interface for real-valued function minimization or model fitting. It is written in C.
fgen is the interface to the genetic algorithm implementation. In addition to bitstring operators, permutation-based operators are also provided and custom seeding, mutation and crossover operators can be defined by the application, also allowing use of real-valued parameters. Archipelagos of multiple concurrent GAs are supported. Steady-state evolution is also supported. Internal threading allows parallel computation, especially for archipelagos, and the library is thread-safe as long as two threads do not call member functions with the same population.
fpso is the interface to the particle swarm optimization implementation, which provides a simple PSO with GBEST or LBEST topology and other customizable parameters. Although it can converge quickly for simple problems, for more complex higher dimensional problems the genetic algorithm generally performs much better.
ffit is the interface to straightforward multi-dimensional function minimization. It can be used for model fitting where a set of parameters is evaluated resulting in an error value. A genetic algorithm or PSO can be used to find the global minimum. Parameters can be distributed withinin a range with a profile other than linear (for example logarithmic or binomial) to optimize the searching process. When using the genetic algorithm ffit uses 16, 32 or 64-bit bitstring representations mapped to real values, or alternatively real-valued parameters directly.
Documentation can be found on the project's SourceForge webpages at http://libfgen.sourceforge.net.