diff --git a/eo/tutorial/Lesson3/SecondBitEA.cpp b/eo/tutorial/Lesson3/SecondBitEA.cpp index 731db5426..3f4de0985 100644 --- a/eo/tutorial/Lesson3/SecondBitEA.cpp +++ b/eo/tutorial/Lesson3/SecondBitEA.cpp @@ -53,57 +53,74 @@ void read_param(eoParser & _parser, { // For each parameter, define Parameters directly in the parser, // and assign the value to the variable - eoValueParam& seedParam = _parser.createParam(time(0), "seed", "Random number seed", 'S'); + eoValueParam seedParam(time(0), "seed", "Random number seed", 'S'); + _parser.processParam( seedParam ); _seed = seedParam.value(); - eoValueParam& vecSizeParam = _parser.createParam(8, "vecSize", "Genotype size",'V', "Representation"); + eoValueParam vecSizeParam(8, "vecSize", "Genotype size",'V', "Representation"); + _parser.processParam( vecSizeParam ); _vecSize = vecSizeParam.value(); - eoValueParam& popSizeParam = _parser.createParam(10, "popSize", "Population size",'P', "Evolution"); + eoValueParam popSizeParam(10, "popSize", "Population size",'P', "Evolution"); + _parser.processParam( popSizeParam ); _popSize = popSizeParam.value(); - eoValueParam& tSizeParam = _parser.createParam(10, "tSize", "Tournament size",'T', "Evolution"); + eoValueParam tSizeParam(10, "tSize", "Tournament size",'T', "Evolution"); + _parser.processParam( tSizeParam ); _tSize = tSizeParam.value(); - eoValueParam& load_nameParam = _parser.createParam("", "Load","A save file to restart from",'L', "Persistence"); - _load_name = load_nameParam.value(); + eoValueParam loadNameParam("", "Load","A save file to restart from",'L', "Persistence"); + _parser.processParam( loadNameParam ); + _load_name = loadNameParam.value(); - eoValueParam& maxGenParam = _parser.createParam(100, "maxGen", "Maximum number of generations",'G', "Stopping criterion"); + eoValueParam maxGenParam(100, "maxGen", "Maximum number of generations",'G', "Stopping criterion"); + _parser.processParam( maxGenParam ); _maxGen = maxGenParam.value(); - eoValueParam& minGenParam = _parser.createParam(100, "minGen", "Minimum number of generations",'g', "Stopping criterion"); + eoValueParam minGenParam(100, "minGen", "Minimum number of generations",'g', "Stopping criterion"); + _parser.processParam( minGenParam ); _minGen = minGenParam.value(); - eoValueParam& steadyGenParam = _parser.createParam(100, "steadyGen", "Number of generations with no improvement",'s', "Stopping criterion"); + eoValueParam steadyGenParam(100, "steadyGen", "Number of generations with no improvement",'s', "Stopping criterion"); + _parser.processParam( steadyGenParam ); _steadyGen = steadyGenParam.value(); - eoValueParam& pCrossParam = _parser.createParam(0.6, "pCross", "Probability of Crossover", 'C', "Genetic Operators"); + eoValueParam pCrossParam(0.6, "pCross", "Probability of Crossover", 'C', "Genetic Operators"); + _parser.processParam( pCrossParam ); _pCross = pCrossParam.value(); - eoValueParam& pMutParam = _parser.createParam(0.1, "pMut", "Probability of Mutation", 'M', "Genetic Operators"); + eoValueParam pMutParam(0.1, "pMut", "Probability of Mutation", 'M', "Genetic Operators"); + _parser.processParam( pMutParam ); _pMut = pMutParam.value(); - eoValueParam& onePointRateParam = _parser.createParam(1, "onePointRate", "Relative rate for one point crossover", '1', "Genetic Operators"); + eoValueParam onePointRateParam(1, "onePointRate", "Relative rate for one point crossover", '1', "Genetic Operators"); + _parser.processParam( onePointRateParam ); _onePointRate = onePointRateParam.value(); - eoValueParam& twoPointsRateParam = _parser.createParam(1, "twoPointRate", "Relative rate for two point crossover", '2', "Genetic Operators"); + eoValueParam twoPointsRateParam(1, "twoPointRate", "Relative rate for two point crossover", '2', "Genetic Operators"); + _parser.processParam( twoPointsRateParam ); _twoPointsRate = twoPointsRateParam.value(); - eoValueParam& uRateParam = _parser.createParam(2, "uRate", "Relative rate for uniform crossover", 'U', "Genetic Operators"); + eoValueParam uRateParam(2, "uRate", "Relative rate for uniform crossover", 'U', "Genetic Operators"); + _parser.processParam( uRateParam ); _uRate = uRateParam.value(); - eoValueParam& pMutPerBitParam = _parser.createParam(0.01, "pMutPerBit", "Probability of flipping 1 bit in bit-flip mutation", 'b', "Genetic Operators"); + eoValueParam pMutPerBitParam(0.01, "pMutPerBit", "Probability of flipping 1 bit in bit-flip mutation", 'b', "Genetic Operators"); + _parser.processParam( pMutPerBitParam ); _pMutPerBit = pMutPerBitParam.value(); - eoValueParam& bitFlipRateParam = _parser.createParam(0.01, "bitFlipRate", "Relative rate for bit-flip mutation", 'B', "Genetic Operators"); + eoValueParam bitFlipRateParam(0.01, "bitFlipRate", "Relative rate for bit-flip mutation", 'B', "Genetic Operators"); + _parser.processParam( bitFlipRateParam ); _bitFlipRate = bitFlipRateParam.value(); - eoValueParam& oneBitRateParam = _parser.createParam(0.01, "oneBitRate", "Relative rate for deterministic bit-flip mutation", 'D', "Genetic Operators"); + eoValueParam oneBitRateParam(0.01, "oneBitRate", "Relative rate for deterministic bit-flip mutation", 'D', "Genetic Operators"); + _parser.processParam( oneBitRateParam ); _oneBitRate = oneBitRateParam.value(); // the name of the "status" file where all actual parameter values will be saved string str_status = _parser.ProgramName() + ".status"; - eoValueParam& status_nameParam = _parser.createParam(str_status.c_str(), "status","Status file",'S', "Persistence"); + eoValueParam statusParam(str_status.c_str(), "status","Status file",'S', "Persistence"); + _parser.processParam( statusParam ); // do the following AFTER ALL PARAMETERS HAVE BEEN PROCESSED // i.e. in case you need parameters somewhere else, postpone these @@ -112,9 +129,9 @@ void read_param(eoParser & _parser, _parser.printHelp(cout); exit(1); } - if (status_nameParam.value() != "") + if (statusParam.value() != "") { - ofstream os(status_nameParam.value().c_str()); + ofstream os(statusParam.value().c_str()); os << _parser; // and you can use that file as parameter file } } diff --git a/eo/tutorial/Lesson3/exercise1.cpp b/eo/tutorial/Lesson3/exercise1.cpp index 35ed26c9d..268fd56f4 100644 --- a/eo/tutorial/Lesson3/exercise1.cpp +++ b/eo/tutorial/Lesson3/exercise1.cpp @@ -57,57 +57,74 @@ void read_param(int argc, char *argv[], // For each parameter, define Parameters directly in the parser, // and assign the value to the variable - eoValueParam& seedParam = parser.createParam(time(0), "seed", "Random number seed", 'S'); + eoValueParam seedParam(time(0), "seed", "Random number seed", 'S'); + parser.processParam( seedParam ); _seed = seedParam.value(); - eoValueParam& vecSizeParam = parser.createParam(8, "vecSize", "Genotype size",'V', "Representation"); + eoValueParam vecSizeParam(8, "vecSize", "Genotype size",'V', "Representation"); + parser.processParam( vecSizeParam ); _vecSize = vecSizeParam.value(); - eoValueParam& popSizeParam = parser.createParam(10, "popSize", "Population size",'P', "Evolution"); + eoValueParam popSizeParam(10, "popSize", "Population size",'P', "Evolution"); + parser.processParam( popSizeParam ); _popSize = popSizeParam.value(); - eoValueParam& tSizeParam = parser.createParam(10, "tSize", "Tournament size",'T', "Evolution"); + eoValueParam tSizeParam(10, "tSize", "Tournament size",'T', "Evolution"); + parser.processParam( tSizeParam ); _tSize = tSizeParam.value(); - eoValueParam& load_nameParam = parser.createParam("", "Load","A save file to restart from",'L', "Persistence"); - _load_name = load_nameParam.value(); + eoValueParam loadNameParam("", "Load","A save file to restart from",'L', "Persistence"); + parser.processParam( loadNameParam ); + _load_name = loadNameParam.value(); - eoValueParam& maxGenParam = parser.createParam(100, "maxGen", "Maximum number of generations",'G', "Stopping criterion"); + eoValueParam maxGenParam(100, "maxGen", "Maximum number of generations",'G', "Stopping criterion"); + parser.processParam( maxGenParam ); _maxGen = maxGenParam.value(); - eoValueParam& minGenParam = parser.createParam(100, "minGen", "Minimum number of generations",'g', "Stopping criterion"); + eoValueParam minGenParam(100, "minGen", "Minimum number of generations",'g', "Stopping criterion"); + parser.processParam( minGenParam ); _minGen = minGenParam.value(); - eoValueParam& steadyGenParam = parser.createParam(100, "steadyGen", "Number of generations with no improvement",'s', "Stopping criterion"); + eoValueParam steadyGenParam(100, "steadyGen", "Number of generations with no improvement",'s', "Stopping criterion"); + parser.processParam( steadyGenParam ); _steadyGen = steadyGenParam.value(); - eoValueParam& pCrossParam = parser.createParam(0.6, "pCross", "Probability of Crossover", 'C', "Genetic Operators"); + eoValueParam pCrossParam(0.6, "pCross", "Probability of Crossover", 'C', "Genetic Operators"); + parser.processParam( pCrossParam ); _pCross = pCrossParam.value(); - eoValueParam& pMutParam = parser.createParam(0.1, "pMut", "Probability of Mutation", 'M', "Genetic Operators"); + eoValueParam pMutParam(0.1, "pMut", "Probability of Mutation", 'M', "Genetic Operators"); + parser.processParam( pMutParam ); _pMut = pMutParam.value(); - eoValueParam& onePointRateParam = parser.createParam(1, "onePointRate", "Relative rate for one point crossover", '1', "Genetic Operators"); + eoValueParam onePointRateParam(1, "onePointRate", "Relative rate for one point crossover", '1', "Genetic Operators"); + parser.processParam( onePointRateParam ); _onePointRate = onePointRateParam.value(); - eoValueParam& twoPointsRateParam = parser.createParam(1, "twoPointRate", "Relative rate for two point crossover", '2', "Genetic Operators"); + eoValueParam twoPointsRateParam(1, "twoPointRate", "Relative rate for two point crossover", '2', "Genetic Operators"); + parser.processParam( twoPointsRateParam ); _twoPointsRate = twoPointsRateParam.value(); - eoValueParam& uRateParam = parser.createParam(2, "uRate", "Relative rate for uniform crossover", 'U', "Genetic Operators"); + eoValueParam uRateParam(2, "uRate", "Relative rate for uniform crossover", 'U', "Genetic Operators"); + parser.processParam( uRateParam ); _uRate = uRateParam.value(); - eoValueParam& pMutPerBitParam = parser.createParam(0.01, "pMutPerBit", "Probability of flipping 1 bit in bit-flip mutation", 'b', "Genetic Operators"); + eoValueParam pMutPerBitParam(0.01, "pMutPerBit", "Probability of flipping 1 bit in bit-flip mutation", 'b', "Genetic Operators"); + parser.processParam( pMutPerBitParam ); _pMutPerBit = pMutPerBitParam.value(); - eoValueParam& bitFlipRateParam = parser.createParam(0.01, "bitFlipRate", "Relative rate for bit-flip mutation", 'B', "Genetic Operators"); + eoValueParam bitFlipRateParam(0.01, "bitFlipRate", "Relative rate for bit-flip mutation", 'B', "Genetic Operators"); + parser.processParam( bitFlipRateParam ); _bitFlipRate = bitFlipRateParam.value(); - eoValueParam& oneBitRateParam = parser.createParam(0.01, "oneBitRate", "Relative rate for deterministic bit-flip mutation", 'D', "Genetic Operators"); + eoValueParam oneBitRateParam(0.01, "oneBitRate", "Relative rate for deterministic bit-flip mutation", 'D', "Genetic Operators"); + parser.processParam( oneBitRateParam ); _oneBitRate = oneBitRateParam.value(); // the name of the "status" file where all actual parameter values will be saved string str_status = parser.ProgramName() + ".status"; - eoValueParam& status_nameParam = parser.createParam(str_status.c_str(), "status","Status file",'S', "Persistence"); + eoValueParam statusParam(str_status.c_str(), "status","Status file",'S', "Persistence"); + parser.processParam( statusParam ); // do the following AFTER ALL PARAMETERS HAVE BEEN PROCESSED // i.e. in case you need parameters somewhere else, postpone these @@ -116,9 +133,9 @@ void read_param(int argc, char *argv[], parser.printHelp(cout); exit(1); } - if (status_nameParam.value() != "") + if (statusParam.value() != "") { - ofstream os(status_nameParam.value().c_str()); + ofstream os(statusParam.value().c_str()); os << parser; // and you can use that file as parameter file } } @@ -221,7 +238,7 @@ void main_function(int argc, char **argv) // REPLACE // And we now have the full slection/replacement - though with // no replacement (== generational replacement) at the moment :-) - eoNoReplacement replace; + eoGenerationalReplacement replace; // eoWeakElitistReplacement replace(replace_main); // OPERATORS