Finished Roulette Selection.
[genetic.git] / src / main.cpp
index 38bbf42cabfddfa9bf8ba507935c72192083a64f..9388101bd3d90fd26752d108b802a990011a07ed 100644 (file)
@@ -1,13 +1,13 @@
 #include <iostream>
 #include <vector>
 
-#include <cstdlib>
-
 #include "gene.h"
 #include "chromosome.h"
 #include "generation.h"
 #include "generator/generation.h"
 
+#include "selection/roulette.h"
+
 #include "fitness/wsti.h"
 
 using namespace std;
@@ -16,20 +16,33 @@ using namespace genetic;
 int main() {
     typedef Gene<int> _Gene;
     typedef Chromosome<_Gene> _Chromosome;
-    
+
     const int chromosomeSize = 11;
     const int generationSize = 20;
-
-    time_t t;
-    srand((unsigned)time(&t));
+    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;