42 lines
759 B
C++
42 lines
759 B
C++
|
|
|
|
//
|
|
#pragma once
|
|
|
|
|
|
//
|
|
namespace BitEvolver
|
|
{
|
|
//
|
|
class Breeder
|
|
{
|
|
//
|
|
public:
|
|
|
|
//
|
|
Breeder(std::shared_ptr<class Random> _random);
|
|
|
|
//
|
|
std::shared_ptr<class Chromosome> Breed(
|
|
std::shared_ptr<class Chromosome> mama,
|
|
std::shared_ptr<class Chromosome> papa,
|
|
double crossover_rate,
|
|
double mutation_rate
|
|
);
|
|
|
|
//
|
|
void Mutate(std::shared_ptr<class Chromosome> chromosome, double mutation_rate);
|
|
|
|
//
|
|
private:
|
|
|
|
//
|
|
std::shared_ptr<class Random> random;
|
|
|
|
//
|
|
int PickRandomCrossoverPoint(std::shared_ptr<class Chromosome> chromosome, double crossover_rate);
|
|
void ApplyCrossover(std::shared_ptr<class Chromosome> kiddo, std::shared_ptr<class Chromosome> parent, double crossover_rate);
|
|
};
|
|
};
|
|
|