// #pragma once // namespace BitEvolver { // class Breeder { // public: // Breeder(std::shared_ptr _random); // std::shared_ptr Breed( std::shared_ptr mama, std::shared_ptr 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 chromosome, double mutation_rate); // private: // std::shared_ptr random; // int PickRandomCrossoverPoint( std::shared_ptr chromosome, Enums::CrossoverBounds crossover_bounds, double crossover_point, double crossover_point_std ); void ApplyCrossover( std::shared_ptr kiddo, std::shared_ptr parent, Enums::CrossoverType crossover_type, Enums::CrossoverBounds crossover_bounds, double crossover_point, double crossover_point_std ); }; };