Rename GenerationLimit to GenerationLimitCondition. Add test for this class.
[genetic.git] / src / main.cpp
index 8d1c8b69c3fce7bea45c73efd06983e3c419a92f..daf7fbcbbf047b95a5885b51a296463077e7030c 100644 (file)
@@ -1 +1,51 @@
+#include <iostream>
+#include <vector>
+#include <map>
+#include <string>
+
+#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 std;
+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 = 200;
+    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(1000);
+
+    algorithm.searchForResult(condition);
+
+    return 0;
+}