#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"
typedef Gene<int> _Gene;
typedef Chromosome<_Gene> _Chromosome;
- time_t t;
- srand((unsigned)time(&t));
+ const int chromosomeSize = 11;
+ const int generationSize = 20;
+ WSTI<_Chromosome> fitness(0.5, 2.5);
- vector<_Gene> genes;
+ generator::Generation<_Chromosome> generationGenerator(generationSize, chromosomeSize);
+ Generation<_Chromosome> generation = generationGenerator.breed();
- for (int i = 0; i < 11; i++) {
- _Gene gene(rand() % 2);
- cout << "Generated gene: " << (int)gene.get() << "\n";
- genes.push_back(gene);
+ 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";
}
- _Chromosome chromosome(genes);
+ Roulette<_Chromosome> roulette(generation, fitness);
+ Generation<_Chromosome> newGeneration = roulette.draw();
- cout << "Entire chromosome: ";
- for (unsigned int i = 0; i < chromosome.get().size(); i++) {
- cout << chromosome.get()[i].get();
+ 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";
}
- cout << endl;
- WSTI<_Chromosome> fitness(chromosome, 0.5, 2.5);
-
- cout << "Fitness is equal to: " << fitness.calculate() << "\n";
return 0;
}