Remove some not used namespace declarations.
[genetic.git] / src / main.cpp
index 60ea330e26472e87d88fab8058eeaff5d3df8d59..a208bbf863505071fd5af846174d223d045840c2 100644 (file)
@@ -1,41 +1,45 @@
-#include <iostream>
-#include <vector>
-
-#include <cstdlib>
-
 #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"
 
-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;
 
-    time_t t;
-    srand((unsigned)time(&t));
+    typedef WSTI<_Chromosome> _Fitness;
+    typedef LinearRankSelection<_Chromosome> _Selection;
+    typedef Crossover<_Chromosome> _Crossover;
+    typedef Mutation<_Chromosome> _Mutation;
 
-    vector<_Gene> genes;
+    typedef generator::BitGenerator<_Chromosome> _Generator;
+    typedef Algorithm<_Chromosome, _Selection, _Crossover, _Mutation, _Fitness> _Algorithm;
+    typedef GenerationLimitCondition<_Chromosome> _Condition;
 
-    for (int i = 0; i < 11; i++) {
-        _Gene gene(rand() % 2);
-        cout << "Generated gene: " << (int)gene.get() << "\n";
-        genes.push_back(gene);
-    }
+    const int chromosomeSize = 10;
+    const int generationSize = 500;
+    const double crossoverChance = 0.75;
+    const double mutationChance = 0.01;
 
-    _Chromosome chromosome(genes);
+    _Fitness fitness(0.5, 2.5);
+    _Generator generationGenerator(generationSize, chromosomeSize);
 
-    cout << "Entire chromosome: ";
-    for (unsigned int i = 0; i < chromosome.get().size(); i++) {
-        cout << chromosome.get()[i].get();
-    }
-    cout << endl;
-    WSTI<_Chromosome> fitness(chromosome, 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;
 }