OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
NaiveUniformCrossover.h
Go to the documentation of this file.
1 #include "boost/smart_ptr.hpp"
2 #include "Util/CmdArguments.h"
3 
5 template <class T> struct NaiveUniformCrossover
6 {
7  void crossover(boost::shared_ptr<T> ind1, boost::shared_ptr<T> ind2,
8  CmdArguments_t args) {
9 
10  Individual::genes_t genes_ind2 = ind2->genes_m;
11 
12  for(std::size_t i = 0; i < ind1->genes_m.size(); i++) {
13  int choose = (int) (2.0 * (double) rand() / (RAND_MAX + 1.0));
14  if(choose == 1) {
15  ind2->genes_m[i] = ind1->genes_m[i];
16  ind1->genes_m[i] = genes_ind2[i];
17  }
18  }
19  }
20 };
decide for each gene if swapped with other gene
boost::shared_ptr< CmdArguments > CmdArguments_t
Definition: CmdArguments.h:169
std::vector< double > genes_t
representation of genes
Definition: Individual.h:26
void crossover(boost::shared_ptr< T > ind1, boost::shared_ptr< T > ind2, CmdArguments_t args)