Init version
This commit is contained in:
90
DEC_GUI/DEC-0.0/population/Population.h
Normal file
90
DEC_GUI/DEC-0.0/population/Population.h
Normal file
@@ -0,0 +1,90 @@
|
||||
#pragma once
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include "../individual/AbstractIndividual.h"
|
||||
#include "BreedingStrategies/PopulationBreedingStrategy.h"
|
||||
#include "../environment/AbstractEnvironment.h"
|
||||
|
||||
|
||||
class PopulationBreedingStrategy;
|
||||
|
||||
class Population {
|
||||
friend class PopulationBreedingStrategy;
|
||||
friend class VerhulstBreedingStrategy;
|
||||
protected:
|
||||
PopulationBreedingStrategy* breedingStrategy;
|
||||
Region* region;
|
||||
public:
|
||||
Population(PopulationBreedingStrategy* _strategy) : breedingStrategy(_strategy){}
|
||||
virtual ~Population() {};
|
||||
virtual void setBreedingStrategy(PopulationBreedingStrategy* _strategy) { breedingStrategy = _strategy;}
|
||||
virtual void setRegion(Region* _region) { region = _region;}
|
||||
virtual void calculateFitnessAll() = 0;
|
||||
virtual void breedAll() = 0;
|
||||
virtual void selectionAll() = 0;
|
||||
virtual void mutationAll() = 0;
|
||||
virtual std::string getSatistics() = 0;
|
||||
virtual void putGeneticStatisticsToStream(std::ostream& out) = 0;
|
||||
virtual void putGeneticSimpleStatisticsToStream(std::ostream& out) = 0;
|
||||
virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out) = 0;
|
||||
};
|
||||
|
||||
class AsexualPopulation : public Population {
|
||||
friend class PopulationBreedingStrategy;
|
||||
friend class VerhulstBreedingStrategy;
|
||||
friend class InOutBreedingPopulationBreedingStrategy;
|
||||
friend class KolchShindyalBreedingStrategy;
|
||||
friend class Processor;
|
||||
protected:
|
||||
std::vector<Individual*> individs;
|
||||
|
||||
public:
|
||||
AsexualPopulation(const std::vector<Individual*>& _inds, PopulationBreedingStrategy* _strategy = 0) : Population(_strategy), individs(_inds) {};
|
||||
AsexualPopulation(int size, PopulationBreedingStrategy* _strategy = 0);
|
||||
virtual ~AsexualPopulation();
|
||||
|
||||
virtual void setRegion(Region* _region);
|
||||
virtual void calculateFitnessAll();
|
||||
virtual void breedAll();
|
||||
virtual void selectionAll();
|
||||
virtual void mutationAll();
|
||||
virtual std::string getSatistics();
|
||||
virtual void putGeneticStatisticsToStream(std::ostream& out);
|
||||
virtual void putGeneticSimpleStatisticsToStream(std::ostream& out);
|
||||
virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out);
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////
|
||||
//////////////////////////////////////////////
|
||||
//////////////////////////////////////////////
|
||||
class BisexualPopulation : public Population {
|
||||
friend class NeutralEvolutionBreedingStrategy;
|
||||
friend class DerevyankoReport2014;
|
||||
friend class DerevyankoReport;
|
||||
friend class Settings;
|
||||
friend class DerRep2014Window;
|
||||
friend class DerRepRFBR2013window;
|
||||
protected:
|
||||
std::list<Individual*> males;
|
||||
std::list<Individual*> females;
|
||||
public:
|
||||
BisexualPopulation(const std::list<Individual*>& _males,
|
||||
const std::list<Individual*>& _females, PopulationBreedingStrategy* _strategy = 0) :
|
||||
Population(_strategy), males(_males), females(_females) {}
|
||||
|
||||
virtual ~BisexualPopulation();
|
||||
|
||||
//virtual void setRegion(Region* _region);
|
||||
virtual void calculateFitnessAll();
|
||||
virtual void breedAll();
|
||||
virtual void selectionAll();
|
||||
virtual void mutationAll();
|
||||
virtual std::string getSatistics();
|
||||
virtual void putGeneticStatisticsToStream(std::ostream& out);
|
||||
virtual void putGeneticSimpleStatisticsToStream(std::ostream& out);
|
||||
virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static std::string mutualMigration(BisexualPopulation* p1, BisexualPopulation* p2, float frac1, float frac2 = -1.f);
|
||||
BisexualPopulation* createSubpopulation(float frac);
|
||||
};
|
||||
Reference in New Issue
Block a user