-#include <iostream>
-#include <vector>
-
#include "gene.h"
#include "chromosome.h"
#include "generation.h"
-#include "generator/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"
-using namespace std;
+#include "algorithm.h"
+#include "condition/condition.h"
+#include "condition/generationLimitCondition.h"
+
using namespace genetic;
int main() {
- typedef Gene<int> _Gene;
+ typedef Gene<bool> _Gene;
typedef Chromosome<_Gene> _Chromosome;
- const int chromosomeSize = 11;
- const int generationSize = 20;
+ 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;
- generator::Generation<_Chromosome> generationGenerator(generationSize, chromosomeSize);
- Generation<_Chromosome> generation = generationGenerator.breed();
+ _Fitness fitness(0.5, 2.5);
+ _Generator generationGenerator(generationSize, chromosomeSize);
- for (unsigned int i = 0; i < generationSize; i++) {
- WSTI<_Chromosome> fitness(generation.get()[i], 0.5, 2.5);
+ _Algorithm algorithm(generationGenerator, fitness, crossoverChance, mutationChance);
+ _Condition condition(10000);
- cout << "Fitness is equal to: " << fitness.calculate() << "\n";
- }
+ algorithm.searchForResult(condition);
return 0;
}