1 #include "ParametricModelPopulation.h" 3 #include "ParametricModel.h" 41 for(
int i=0; i<n; i++) {
45 for(
int p=0; p<formula->GetNpar(); p++) {
47 formula->GetParLimits(p, pmin, pmax);
49 double par =
m_random->Uniform(pmin, pmax);
50 formula->SetParameter(p, par);
65 std::vector<std::vector<double> > offspringGenes;
66 for(
int i=0; i<
size(); i++) {
67 std::vector<double> offspring;
68 if(parents[i].
size()==1) {
71 throw std::runtime_error(
"Given models are not parametric models");
74 for(
int p=0; p<formula->GetNpar(); p++) {
75 offspring.push_back(formula->GetParameter(p));
77 }
else if(parents[i].
size() == 2) {
80 if(!parent1 || !parent2) {
81 throw std::runtime_error(
"Given models are not parametric models");
85 for(
int p=0; p<formula1->GetNpar(); p++) {
87 offspring.push_back(formula1->GetParameter(p));
89 offspring.push_back(formula2->GetParameter(p));
93 offspringGenes.push_back(offspring);
96 for(
int i=0; i<
size(); i++) {
98 for(
unsigned int p=0; p<offspringGenes[i].size(); p++) {
99 model->
getFormula()->SetParameter(p, offspringGenes[i][p]);
115 throw std::runtime_error(
"Given models are not parametric models");
119 int p =
m_random->Integer(formula->GetNpar());
121 formula->GetParLimits(p, pmin, pmax);
123 double par = formula->GetParameter(p);
125 formula->SetParameter(p, par);
TRandom3 * m_random
Stores a random number generator.
void setFormula(TF1 *formula)
void setMutationSize(double relativeSize)
Abstract class describing a population of models.
~ParametricModelPopulation()
ParametricModelPopulation()
double m_mutationSize
Stores the relative size (sigma) of the gaussian noise applied during mutation.
virtual void doInitialize(int n)
virtual void doMutate(IModel *model)
TF1 * m_formula
Stores the formula for this population.
virtual void doCrossOver(const std::vector< std::vector< IModel *> > &parents)
std::vector< IModel * > m_individuals
Stores the individuals of this population.
Class representing a model defined by a parametric function.
void setFormula(TF1 *formula)
Abstract class describing the interface for a model.