35 lines
868 B
C++
35 lines
868 B
C++
#pragma once
|
|
#include "Solution.h"
|
|
|
|
typedef std::vector<Solution*> Solutions;
|
|
typedef std::vector<float> Scores;
|
|
|
|
typedef float (*FitnessFn)(Solution*);
|
|
typedef Solution* (*SelectionFn)(Solutions*, Scores*);
|
|
typedef void (*CrossoverFn)(float rCross, Solution*, Solution*, Solution**, Solution**);
|
|
typedef void (*MutatorFn)(Solution*, float);
|
|
|
|
class GeneticAlgorithm
|
|
{
|
|
private:
|
|
int generations;
|
|
float rCross;
|
|
float rMut;
|
|
|
|
Solutions* population;
|
|
|
|
// GA Functions
|
|
FitnessFn fitness;
|
|
SelectionFn selection;
|
|
CrossoverFn crossover;
|
|
MutatorFn mutate;
|
|
public:
|
|
GeneticAlgorithm(int nGen, float rCross, float rMut, Solutions* population, FitnessFn ff, SelectionFn sf, CrossoverFn cf, MutatorFn mf): //
|
|
generations(nGen), rCross(rCross), rMut(rMut), population(population), fitness(ff), selection(sf), crossover(cf), mutate(mf) //
|
|
{};
|
|
|
|
Solution* algorithm();
|
|
|
|
};
|
|
|