Rename GenerationLimit to GenerationLimitCondition. Add test for this class.
[genetic.git] / src / main.cpp
index 80020524ee84aa74cbcfad7a2cbd2dbf7f28f8e9..daf7fbcbbf047b95a5885b51a296463077e7030c 100644 (file)
@@ -6,42 +6,44 @@
 #include "gene.h"
 #include "chromosome.h"
 #include "generation.h"
-#include "generator/generation.h"
+#include "generator/bitGenerator.h"
 
-#include "selection/roulette.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<int> _Gene;
+    typedef Gene<bool> _Gene;
     typedef Chromosome<_Gene> _Chromosome;
 
     typedef WSTI<_Chromosome> _Fitness;
-    typedef Roulette<_Chromosome> _Selection;
+    typedef LinearRankSelection<_Chromosome> _Selection;
     typedef Crossover<_Chromosome> _Crossover;
     typedef Mutation<_Chromosome> _Mutation;
 
-    typedef generator::Generation<_Chromosome> _Generator;
+    typedef generator::BitGenerator<_Chromosome> _Generator;
     typedef Algorithm<_Chromosome, _Selection, _Crossover, _Mutation, _Fitness> _Algorithm;
-    typedef Condition<_Chromosome> _Condition;
+    typedef GenerationLimitCondition<_Chromosome> _Condition;
 
     const int chromosomeSize = 10;
     const int generationSize = 200;
     const double crossoverChance = 0.75;
-    const double mutationChance = 0.1;
+    const double mutationChance = 0.01;
 
     _Fitness fitness(0.5, 2.5);
     _Generator generationGenerator(generationSize, chromosomeSize);
 
     _Algorithm algorithm(generationGenerator, fitness, crossoverChance, mutationChance);
-    _Condition condition;
+    _Condition condition(1000);
 
     algorithm.searchForResult(condition);