1 #ifndef __GENERATOR_GENERATION_H
2 #define __GENERATOR_GENERATION_H
7 #include "../chromosome.h"
8 #include "../generation.h"
15 * Generator for generating entire Generation of Chromosomes (individuals)
17 template < typename _Chromosome >
21 * Type of used Genes in Chromosome
23 typedef typename _Chromosome::GeneType GeneType;
26 * Size of the generation to generate
28 unsigned int generationSize;
31 * Size of the chromosome to generate
33 unsigned int chromosomeSize;
39 * @param generationSize Indicates size of the generation
40 * @param generationSize Indicates size of the chromosome
42 Generation(unsigned int generationSize, unsigned int chromosomeSize) {
43 this->generationSize = generationSize;
44 this->chromosomeSize = chromosomeSize;
48 * Breeds new generation of chromosomes.
50 * @return ::genetic::Generation Generation of Chromosomes
52 ::genetic::Generation<_Chromosome> breed() {
53 vector<_Chromosome> chromosomes;
55 for (unsigned int i = 0; i < generationSize; i++) {
56 vector<GeneType> genes;
57 for (unsigned int j = 0; j < chromosomeSize; j++) {
58 GeneType gene(rand() % 2);
59 genes.push_back(gene);
61 chromosomes.push_back(genes);
64 return ::genetic::Generation<_Chromosome>(chromosomes);
70 #endif /* __GENERATOR_GENERATION_H */