dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
genetic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix BitGenerator test.
[genetic.git]
/
src
/
main.cpp
diff --git
a/src/main.cpp
b/src/main.cpp
index 60ea330e26472e87d88fab8058eeaff5d3df8d59..336285a52c5175239d4b074d1500f429710e7cab 100644
(file)
--- a/
src/main.cpp
+++ b/
src/main.cpp
@@
-1,13
+1,23
@@
#include <iostream>
#include <vector>
#include <iostream>
#include <vector>
-
-#include <
cstdlib
>
+#include <map>
+#include <
string
>
#include "gene.h"
#include "chromosome.h"
#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 "fitness/wsti.h"
+#include "algorithm.h"
+#include "condition/condition.h"
+#include "condition/generationLimit.h"
+
using namespace std;
using namespace genetic;
using namespace std;
using namespace genetic;
@@
-15,27
+25,27
@@
int main() {
typedef Gene<int> _Gene;
typedef Chromosome<_Gene> _Chromosome;
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;
}
return 0;
}