Biblioteka umożliwiająca wykorzystanie algorytmów genetycznych do obliczeń. Z założenia wszystko może być w niej genem. Prosta wartość liczbowa (int), czy też jakaś bardziej skomplikowana struktura.

Przykładowe wywołanie programu:

#include "gene.h"
#include "chromosome.h"
#include "generation.h"
#include "generator/bitGenerator.h"

#include "selection/rouletteSelection.h"
#include "selection/linearRankSelection.h"
#include "crossover/crossover.h"
#include "mutation/mutation.h"
#include "fitness/wsti.h"

#include "algorithm.h"
#include "condition/condition.h"
#include "condition/generationLimitCondition.h"

using namespace genetic;

int main() {
    typedef Gene<bool> _Gene;
    typedef Chromosome<_Gene> _Chromosome;

    typedef WSTI<_Chromosome> _Fitness;
    typedef LinearRankSelection<_Chromosome> _Selection;
    typedef Crossover<_Chromosome> _Crossover;
    typedef Mutation<_Chromosome> _Mutation;

    typedef generator::BitGenerator<_Chromosome> _Generator;
    typedef Algorithm<_Chromosome, _Selection, _Crossover, _Mutation, _Fitness> _Algorithm;
    typedef GenerationLimitCondition<_Chromosome> _Condition;

    const int chromosomeSize = 10;
    const int generationSize = 500;
    const double crossoverChance = 0.75;
    const double mutationChance = 0.01;

    _Fitness fitness(0.5, 2.5);
    _Generator generationGenerator(generationSize, chromosomeSize);

    _Algorithm algorithm(generationGenerator, fitness, crossoverChance, mutationChance);
    _Condition condition(10000);

    algorithm.searchForResult(condition);

    return 0;
}

Linki