New class RouletteWheel !
This commit is contained in:
68
RouletteWheel.h
Normal file
68
RouletteWheel.h
Normal file
@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
|
||||
//
|
||||
#pragma once
|
||||
|
||||
|
||||
//
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
|
||||
|
||||
//
|
||||
namespace BitEvolver
|
||||
{
|
||||
//
|
||||
class RouletteWheel
|
||||
{
|
||||
//
|
||||
public:
|
||||
|
||||
//
|
||||
RouletteWheel();
|
||||
|
||||
//
|
||||
void Reset();
|
||||
|
||||
//
|
||||
void ClearChromosomes();
|
||||
void SetChromosomes(std::vector<std::shared_ptr<class Chromosome>> _chromosomes);
|
||||
void AddChromosome(std::shared_ptr<class Chromosome> _chromosome);
|
||||
void AddChromosomes(std::vector<std::shared_ptr<class Chromosome>> _chromosomes);
|
||||
|
||||
//
|
||||
std::shared_ptr<Chromosome> Spin();
|
||||
|
||||
//
|
||||
private:
|
||||
|
||||
//
|
||||
std::shared_ptr<class Random> random;
|
||||
|
||||
//
|
||||
std::vector<std::shared_ptr<class Chromosome>> chromosomes;
|
||||
std::recursive_mutex chromosomes_mutex;
|
||||
bool chromosomes_need_sorting;
|
||||
//
|
||||
std::vector<std::pair<double,std::shared_ptr<class Chromosome>>> wheel_slots;
|
||||
bool slots_need_population;
|
||||
|
||||
|
||||
//
|
||||
void Instantiate();
|
||||
|
||||
//
|
||||
std::vector<std::pair<double, std::shared_ptr<class Chromosome>>> GetNormalizedChromosomeFitness();
|
||||
void SortChromosomes();
|
||||
void PopulateSlots();
|
||||
|
||||
//
|
||||
void ChromosomesChanged();
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user