Finished Roulette Selection.
[genetic.git] / src / main.cpp
1 #include <iostream>
2 #include <vector>
3
4 #include "gene.h"
5 #include "chromosome.h"
6 #include "generation.h"
7 #include "generator/generation.h"
8
9 #include "selection/roulette.h"
10
11 #include "fitness/wsti.h"
12
13 using namespace std;
14 using namespace genetic;
15
16 int main() {
17     typedef Gene<int> _Gene;
18     typedef Chromosome<_Gene> _Chromosome;
19
20     const int chromosomeSize = 11;
21     const int generationSize = 20;
22     WSTI<_Chromosome> fitness(0.5, 2.5);
23
24     generator::Generation<_Chromosome> generationGenerator(generationSize, chromosomeSize);
25     Generation<_Chromosome> generation = generationGenerator.breed();
26
27     cout << "Generation:\n";
28     for (unsigned int i = 0; i < generation.get().size(); i++) {
29         cout << "# ";
30         for (unsigned int j = 0; j < generation.get()[i].get().size(); j++) {
31             cout << generation.get()[i].get()[j].get();
32         }
33         cout << "\n";
34     }
35
36     Roulette<_Chromosome> roulette(generation, fitness);
37     Generation<_Chromosome> newGeneration = roulette.draw();
38
39     cout << "New Generation:\n";
40     for (unsigned int i = 0; i < newGeneration.get().size(); i++) {
41         cout << "# ";
42         for (unsigned int j = 0; j < newGeneration.get()[i].get().size(); j++) {
43             cout << newGeneration.get()[i].get()[j].get();
44         }
45         cout << "\n";
46     }
47
48     return 0;
49 }