57 (
unsigned C_INT32) 600);
58 addParameter(
"EvolutionaryProgram2.RandomGenerator.Type",
61 addParameter(
"EvolutionaryProgram2.RandomGenerator.Seed",
96 double current_best_value, la;
97 int i, j, last_update, u10, u30, u50;
128 linear =
FALSE; la = 1.0;
130 if ((*Maximum[j] <= 0.0) || (*Minimum[j] < 0.0)) linear =
TRUE;
133 la = log10(*Maximum[j]) - log10(
std::min(*Minimum[j], std::numeric_limits< C_FLOAT64 >::epsilon()));
135 if (la < 1.8) linear =
TRUE;
146 individual[i][j] = (*Maximum[j] - *Minimum[j]) * 0.5 + *Minimum[j];
167 double constant1 = 100;
169 double constant2 = 10;
185 std::ofstream finalout(
"debugopt.dat");
189 std::cout <<
"debugopt.dat cannot be opened!" << std::endl;
193 finalout <<
"----------------------------- the best result at each generation---------------------" << std::endl;
194 finalout <<
"Generation\t" <<
"Best candidate value for object function\t" <<
"Display " <<
NumParameter <<
" parameters" << std::endl;
195 finalout << std::endl;
198 srand(time(NULL)); rand();
203 std::cout << std::endl;
204 std::cout <<
"EP2 is processing at generation " << i << std::endl;
218 if (floor(10*rand() / RAND_MAX) > 5)
271 if (mut <= *Minimum[j]) mut = *Minimum[j] + std::numeric_limits< C_FLOAT64 >::epsilon();
274 if (mut < *Minimum[j]) mut = *Minimum[j];
277 if (mut >= *Maximum[j]) mut = *Maximum[j] - std::numeric_limits< C_FLOAT64 >::epsilon();
280 if (mut > *Maximum[j]) mut = *Maximum[j];
312 if ((u50 == 0) && (i - last_update > 50))
321 linear =
FALSE; la = 1.0;
323 if ((*Maximum[jj] <= 0.0) || (*Minimum[jj] < 0.0)) linear =
TRUE;
326 la = log10(*Maximum[jj]) - log10(
std::min(*Minimum[jj], std::numeric_limits< C_FLOAT64 >::epsilon()));
328 if (la < 1.8) linear =
TRUE;
339 individual[mm][jj] = (*Maximum[jj] - *Minimum[jj]) * 0.5 + *Minimum[jj];
359 u50 = 50; u30 = 30; u10 = 10;
363 if ((u30 == 0) && (i - last_update > 30))
365 for (
int mm = (
int)floor(PopulationSize * 0.7); mm <
PopulationSize; mm++)
372 linear =
FALSE; la = 1.0;
374 if ((*Maximum[jj] <= 0.0) || (*Minimum[jj] < 0.0)) linear =
TRUE;
377 la = log10(*Maximum[jj]) - log10(
std::min(*Minimum[jj], std::numeric_limits< C_FLOAT64 >::epsilon()));
379 if (la < 1.8) linear =
TRUE;
390 individual[mm][jj] = (*Maximum[jj] - *Minimum[jj]) * 0.5 + *Minimum[jj];
414 if ((u10 == 0) && (i - last_update > 10))
416 for (
int mm = (
int) floor(PopulationSize * 0.9); mm <
PopulationSize; mm++)
423 linear =
FALSE; la = 1.0;
425 if ((*Maximum[jj] <= 0.0) || (*Minimum[jj] < 0.0)) linear =
TRUE;
428 la = log10(*Maximum[jj]) - log10(
std::min(*Minimum[jj], std::numeric_limits< C_FLOAT64 >::epsilon()));
430 if (la < 1.8) linear =
TRUE;
441 individual[mm][jj] = (*Maximum[jj] - *Minimum[jj]) * 0.5 + *Minimum[jj];
479 std::cout << std::endl;
480 std::cout <<
"GA has successfully done!" << std::endl;
541 int i, j, TournamentSize, RandomRival;
542 int RandomIndividual;
545 switch (SelectionStrategy)
561 TournamentSize = PopulationSize / 5;
564 if (TournamentSize < 1) TournamentSize = 1;
571 for (j = 0; j < TournamentSize; j++)
574 RandomRival = (int)fabs(floor((PopulationSize * 2 - 1) * rand() / RAND_MAX));
606 RandomIndividual = (int)fabs(floor((PopulationSize * 2 - 1) * rand() / RAND_MAX));
654 std::ofstream finalout(
"debugopt.dat", std::ios::app);
658 std::cout <<
"debugopt.dat cannot be opened!" << std::endl;
669 finalout << std::endl;
670 finalout << std::endl;
size_t getVariableSize() const
virtual void exchange(int o, int d)
virtual int fittest(void)
qreal linear(qreal a, qreal b, qreal t)
virtual void swap(int o, int d)
const std::vector< UpdateMethod * > & getCalculateVariableUpdateMethods() const
void resize(size_t size, const bool ©=false)
COptProblem * mpOptProblem
CVector< CVector< C_FLOAT64 > > individual
static CRandom * createGenerator(CRandom::Type type=CRandom::mt19937, unsigned C_INT32 seed=0)
virtual C_FLOAT64 getRandomCC()
const Value & getValue() const
virtual void select(int method)
virtual void TrackDataFile(int i)
virtual void copy(int o, int d)
double Get_BestFoundSoFar_candidate()
bool addParameter(const CCopasiParameter ¶meter)
double * CandidateValueRate