58 satır
1.1 KiB
C++
58 satır
1.1 KiB
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,
|
|
Enums::CrossoverType crossover_type,
|
|
Enums::CrossoverOrder crossover_order,
|
|
Enums::CrossoverBounds crossover_bounds,
|
|
double crossover_point,
|
|
double crossover_point_std,
|
|
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,
|
|
Enums::CrossoverBounds crossover_bounds,
|
|
double crossover_point,
|
|
double crossover_point_std
|
|
);
|
|
void ApplyCrossover(
|
|
std::shared_ptr<class Chromosome> kiddo,
|
|
std::shared_ptr<class Chromosome> parent,
|
|
Enums::CrossoverType crossover_type,
|
|
Enums::CrossoverBounds crossover_bounds,
|
|
double crossover_point,
|
|
double crossover_point_std
|
|
);
|
|
};
|
|
};
|
|
|