#include <iostream>
#include <vector>
-
-#include <cstdlib>
+#include <map>
+#include <string>
#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"
+#include "algorithm.h"
+#include "condition/condition.h"
+#include "condition/generationLimit.h"
+
using namespace std;
using namespace genetic;
typedef Gene<int> _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 GenerationLimit<_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 = 200;
+ 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(1000);
- cout << "Fitness is equal to: " << fitness.calculate() << "\n";
+ algorithm.searchForResult(condition);
return 0;
}