Finished Roulette Selection.
[genetic.git] / src / main.cpp
index 3eaea51ec48c0466111e9ab5def86ed621819844..9388101bd3d90fd26752d108b802a990011a07ed 100644 (file)
@@ -6,6 +6,8 @@
 #include "generation.h"
 #include "generator/generation.h"
 
+#include "selection/roulette.h"
+
 #include "fitness/wsti.h"
 
 using namespace std;
@@ -17,14 +19,30 @@ int main() {
 
     const int chromosomeSize = 11;
     const int generationSize = 20;
+    WSTI<_Chromosome> fitness(0.5, 2.5);
 
     generator::Generation<_Chromosome> generationGenerator(generationSize, chromosomeSize);
     Generation<_Chromosome> generation = generationGenerator.breed();
 
-    for (unsigned int i = 0; i < generationSize; i++) {
-        WSTI<_Chromosome> fitness(generation.get()[i], 0.5, 2.5);
+    cout << "Generation:\n";
+    for (unsigned int i = 0; i < generation.get().size(); i++) {
+        cout << "# ";
+        for (unsigned int j = 0; j < generation.get()[i].get().size(); j++) {
+            cout << generation.get()[i].get()[j].get();
+        }
+        cout << "\n";
+    }
+
+    Roulette<_Chromosome> roulette(generation, fitness);
+    Generation<_Chromosome> newGeneration = roulette.draw();
 
-        cout << "Fitness is equal to: " << fitness.calculate() << "\n";
+    cout << "New Generation:\n";
+    for (unsigned int i = 0; i < newGeneration.get().size(); i++) {
+        cout << "# ";
+        for (unsigned int j = 0; j < newGeneration.get()[i].get().size(); j++) {
+            cout << newGeneration.get()[i].get()[j].get();
+        }
+        cout << "\n";
     }
 
     return 0;