A full working version of ES is now available in tutorial/Lesson4,
that makes full use of libes.a. The user guide is in Lesson4 of the tutorial - programmer's guide will come later. Plus many small changes here and there
This commit is contained in:
parent
eb25bf0ab5
commit
5508869d00
19 changed files with 653 additions and 189 deletions
|
|
@ -33,6 +33,9 @@
|
||||||
#include <eoEvalFuncCounter.h>
|
#include <eoEvalFuncCounter.h>
|
||||||
#include <utils/checkpointing>
|
#include <utils/checkpointing>
|
||||||
|
|
||||||
|
// at the moment, in utils/make_help.cpp
|
||||||
|
// this should become some eoUtils.cpp with corresponding eoUtils.h
|
||||||
|
bool testDirRes(std::string _dirName, bool _erase);
|
||||||
/////////////////// The checkpoint and other I/O //////////////
|
/////////////////// The checkpoint and other I/O //////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -58,6 +61,12 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
// and store it in the state
|
// and store it in the state
|
||||||
_state.storeFunctor(increment);
|
_state.storeFunctor(increment);
|
||||||
|
|
||||||
|
// dir for DISK output
|
||||||
|
eoValueParam<string>& dirNameParam = _parser.createParam(string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output - Disk");
|
||||||
|
// shoudl we empty it if exists
|
||||||
|
eoValueParam<bool>& eraseParam = _parser.createParam(false, "eraseDir", "erase files in dirName if any", '\0', "Output - Disk");
|
||||||
|
bool dirOK = false; // not tested yet
|
||||||
|
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
// now some statistics on the population:
|
// now some statistics on the population:
|
||||||
/////////////////////////////////////////
|
/////////////////////////////////////////
|
||||||
|
|
@ -78,12 +87,8 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
//---------------------------
|
//---------------------------
|
||||||
eoValueParam<bool>& printBestParam = _parser.createParam(true, "printBestStat", "Print Best/avg/stdev every gen.", '\0', "Output");
|
eoValueParam<bool>& printBestParam = _parser.createParam(true, "printBestStat", "Print Best/avg/stdev every gen.", '\0', "Output");
|
||||||
eoValueParam<bool>& plotBestParam = _parser.createParam(false, "plotBestStat", "Plot Best/avg Stat", '\0', "Output - Graphical");
|
eoValueParam<bool>& plotBestParam = _parser.createParam(false, "plotBestStat", "Plot Best/avg Stat", '\0', "Output - Graphical");
|
||||||
|
|
||||||
// dir for DISK output
|
|
||||||
eoValueParam<string>& dirNameParam = _parser.createParam(string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output - Disk");
|
|
||||||
eoValueParam<bool>& fileBestParam = _parser.createParam(false, "fileBestStat", "Output bes/avg/std to file", '\0', "Output - Disk");
|
eoValueParam<bool>& fileBestParam = _parser.createParam(false, "fileBestStat", "Output bes/avg/std to file", '\0', "Output - Disk");
|
||||||
|
|
||||||
|
|
||||||
eoBestFitnessStat<EOT> *bestStat = NULL;
|
eoBestFitnessStat<EOT> *bestStat = NULL;
|
||||||
if ( printBestParam.value() || plotBestParam.value() || fileBestParam.value() )
|
if ( printBestParam.value() || plotBestParam.value() || fileBestParam.value() )
|
||||||
// we need the bestStat for at least one of the 3 above
|
// we need the bestStat for at least one of the 3 above
|
||||||
|
|
@ -152,6 +157,9 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
checkpoint->add(*fdcStat);
|
checkpoint->add(*fdcStat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// do we wnat some histogram of fitnesses snpashots?
|
||||||
|
eoValueParam<bool> plotHistogramParam = _parser.createParam(false, "plotHisto", "Plot histogram of fitnesses", '\0', "Output - Graphical");
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
// The monitors
|
// The monitors
|
||||||
///////////////
|
///////////////
|
||||||
|
|
@ -183,6 +191,12 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
monitor->add(*popStat);
|
monitor->add(*popStat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// first handle the dir test - if we need at least one file
|
||||||
|
if ( ( fileBestParam.value() || plotBestParam.value() ||
|
||||||
|
plotFDCParam.value() || plotHistogramParam.value() )
|
||||||
|
&& !dirOK ) // just in case we add something before
|
||||||
|
dirOK = testDirRes(dirNameParam.value(), eraseParam.value()); // TRUE
|
||||||
|
|
||||||
if (fileBestParam.value()) // A file monitor for best & secondMoment
|
if (fileBestParam.value()) // A file monitor for best & secondMoment
|
||||||
{
|
{
|
||||||
string stmp = dirNameParam.value() + "/best.xg";
|
string stmp = dirNameParam.value() + "/best.xg";
|
||||||
|
|
@ -227,7 +241,7 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
checkpoint->add(*fdcGnuplot);
|
checkpoint->add(*fdcGnuplot);
|
||||||
}
|
}
|
||||||
|
|
||||||
eoValueParam<bool> plotHistogramParam = _parser.createParam(false, "plotHisto", "Plot histogram of fitnesses", '\0', "Output - Graphical");
|
// historgram?
|
||||||
if (plotHistogramParam.value()) // want to see how the fitness is spread?
|
if (plotHistogramParam.value()) // want to see how the fitness is spread?
|
||||||
{
|
{
|
||||||
eoScalarFitnessStat<EOT> *fitStat = new eoScalarFitnessStat<EOT>;
|
eoScalarFitnessStat<EOT> *fitStat = new eoScalarFitnessStat<EOT>;
|
||||||
|
|
@ -252,6 +266,10 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
|
|
||||||
if (_parser.isItThere(saveFrequencyParam))
|
if (_parser.isItThere(saveFrequencyParam))
|
||||||
{
|
{
|
||||||
|
// first make sure dirName is OK
|
||||||
|
if (! dirOK )
|
||||||
|
dirOK = testDirRes(dirNameParam.value(), eraseParam.value()); // TRUE
|
||||||
|
|
||||||
unsigned freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX );
|
unsigned freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX );
|
||||||
string stmp = dirNameParam.value() + "/generations";
|
string stmp = dirNameParam.value() + "/generations";
|
||||||
eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp);
|
eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp);
|
||||||
|
|
@ -263,6 +281,10 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
|
||||||
eoValueParam<unsigned>& saveTimeIntervalParam = _parser.createParam(unsigned(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" );
|
eoValueParam<unsigned>& saveTimeIntervalParam = _parser.createParam(unsigned(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" );
|
||||||
if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0)
|
if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0)
|
||||||
{
|
{
|
||||||
|
// first make sure dirName is OK
|
||||||
|
if (! dirOK )
|
||||||
|
dirOK = testDirRes(dirNameParam.value(), eraseParam.value()); // TRUE
|
||||||
|
|
||||||
string stmp = dirNameParam.value() + "/time";
|
string stmp = dirNameParam.value() + "/time";
|
||||||
eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp);
|
eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp);
|
||||||
_state.storeFunctor(stateSaver2);
|
_state.storeFunctor(stateSaver2);
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
#ifndef _make_pop_h
|
#ifndef _make_pop_h
|
||||||
#define _make_pop_h
|
#define _make_pop_h
|
||||||
|
|
||||||
|
#include <sys/time.h> // for time(0) for random seeding
|
||||||
#include <eoPop.h>
|
#include <eoPop.h>
|
||||||
#include <eoInit.h>
|
#include <eoInit.h>
|
||||||
#include <utils/eoRNG.h>
|
#include <utils/eoRNG.h>
|
||||||
|
|
@ -50,7 +51,7 @@ eoPop<EOT>& do_make_pop(eoParser & _parser, eoState& _state, eoInit<EOT> & _ini
|
||||||
// random seed
|
// random seed
|
||||||
eoValueParam<uint32>& seedParam = _parser.createParam(uint32(0), "seed", "Random number seed", 'S');
|
eoValueParam<uint32>& seedParam = _parser.createParam(uint32(0), "seed", "Random number seed", 'S');
|
||||||
if (seedParam.value() == 0)
|
if (seedParam.value() == 0)
|
||||||
seedParam.value() = random_seed();
|
seedParam.value() = time(0);
|
||||||
eoValueParam<unsigned>& popSize = _parser.createParam(unsigned(20), "popSize", "Population Size", 'P', "Evolution Engine");
|
eoValueParam<unsigned>& popSize = _parser.createParam(unsigned(20), "popSize", "Population Size", 'P', "Evolution Engine");
|
||||||
|
|
||||||
// Either load or initialize
|
// Either load or initialize
|
||||||
|
|
|
||||||
|
|
@ -90,10 +90,10 @@ class eoEsMutationInit
|
||||||
virtual std::string section(void)
|
virtual std::string section(void)
|
||||||
{ return repSection; }
|
{ return repSection; }
|
||||||
|
|
||||||
virtual std::string TauLclName(void) const { return "TauLcL"; }
|
virtual std::string TauLclName(void) const { return "TauLoc"; }
|
||||||
virtual char TauLclShort(void) const { return 'l'; }
|
virtual char TauLclShort(void) const { return 'l'; }
|
||||||
|
|
||||||
virtual std::string TauGlbName(void) const { return "TauGlb"; }
|
virtual std::string TauGlbName(void) const { return "TauGlob"; }
|
||||||
virtual char TauGlbShort(void) const { return 'g'; }
|
virtual char TauGlbShort(void) const { return 'g'; }
|
||||||
|
|
||||||
virtual std::string TauBetaName(void) const { return "Beta"; }
|
virtual std::string TauBetaName(void) const { return "Beta"; }
|
||||||
|
|
|
||||||
|
|
@ -329,13 +329,13 @@ protected:
|
||||||
double range; // == 1+2*alpha
|
double range; // == 1+2*alpha
|
||||||
};
|
};
|
||||||
|
|
||||||
/** eoArithmeticCrossover --> uniform choice in hypercube
|
/** eoHypercubeCrossover --> uniform choice in hypercube
|
||||||
== arithmetical with different values for each coordinate
|
== arithmetical with different values for each coordinate
|
||||||
\class eoArithmeticCrossover eoRealOp.h Tutorial/eoRealOp.h
|
\class eoArithmeticCrossover eoRealOp.h Tutorial/eoRealOp.h
|
||||||
\ingroup parameteric
|
\ingroup parameteric
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
|
template<class EOT> class eoHypercubeCrossover: public eoQuadOp<EOT>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
@ -347,7 +347,7 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
|
||||||
* 0 == contractive application
|
* 0 == contractive application
|
||||||
* Must be positive
|
* Must be positive
|
||||||
*/
|
*/
|
||||||
eoArithmeticCrossover(const double& _alpha = 0.0):
|
eoHypercubeCrossover(const double& _alpha = 0.0):
|
||||||
bounds(eoDummyVectorNoBounds), alpha(_alpha), range(1+2*_alpha)
|
bounds(eoDummyVectorNoBounds), alpha(_alpha), range(1+2*_alpha)
|
||||||
{
|
{
|
||||||
if (_alpha < 0)
|
if (_alpha < 0)
|
||||||
|
|
@ -362,7 +362,7 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
|
||||||
* 0 == contractive application
|
* 0 == contractive application
|
||||||
* Must be positive
|
* Must be positive
|
||||||
*/
|
*/
|
||||||
eoArithmeticCrossover(eoRealVectorBounds & _bounds,
|
eoHypercubeCrossover(eoRealVectorBounds & _bounds,
|
||||||
const double& _alpha = 0.0):
|
const double& _alpha = 0.0):
|
||||||
bounds(_bounds), alpha(_alpha), range(1+2*_alpha)
|
bounds(_bounds), alpha(_alpha), range(1+2*_alpha)
|
||||||
{
|
{
|
||||||
|
|
@ -371,10 +371,10 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The class name.
|
/// The class name.
|
||||||
virtual string className() const { return "eoArithmeticCrossover"; }
|
virtual string className() const { return "eoHypercubeCrossover"; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* arithmetical crossover - modifies both parents
|
* hypercube crossover - modifies both parents
|
||||||
* @param _eo1 The first parent
|
* @param _eo1 The first parent
|
||||||
* @param _eo2 The first parent
|
* @param _eo2 The first parent
|
||||||
*/
|
*/
|
||||||
|
|
@ -434,21 +434,21 @@ protected:
|
||||||
\ingroup parameteric
|
\ingroup parameteric
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template<class EOT> class eoRealUxOver: public eoQuadOp<EOT>
|
template<class EOT> class eoRealUXover: public eoQuadOp<EOT>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* (Default) Constructor.
|
* (Default) Constructor.
|
||||||
* @param _preference bias in the choice (usually, no bias == 0.5)
|
* @param _preference bias in the choice (usually, no bias == 0.5)
|
||||||
*/
|
*/
|
||||||
eoRealUxOver(const float& _preference = 0.5): preference(_preference)
|
eoRealUXover(const float& _preference = 0.5): preference(_preference)
|
||||||
{
|
{
|
||||||
if ( (_preference <= 0.0) || (_preference >= 1.0) )
|
if ( (_preference <= 0.0) || (_preference >= 1.0) )
|
||||||
runtime_error("UxOver --> invalid preference");
|
runtime_error("UxOver --> invalid preference");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The class name.
|
/// The class name.
|
||||||
virtual string className() const { return "eoRealUxOver"; }
|
virtual string className() const { return "eoRealUXover"; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uniform crossover for real vectors
|
* Uniform crossover for real vectors
|
||||||
|
|
|
||||||
|
|
@ -130,10 +130,10 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
|
||||||
// crossover
|
// crossover
|
||||||
/////////////
|
/////////////
|
||||||
// ES crossover
|
// ES crossover
|
||||||
eoValueParam<string>& crossTypeParam = _parser.createParam(string("Global"), "crossType", "Type of ES recombination (gloabl or local)", 'C', "Variation Operators");
|
eoValueParam<string>& crossTypeParam = _parser.createParam(string("global"), "crossType", "Type of ES recombination (global or standard)", 'C', "Variation Operators");
|
||||||
|
|
||||||
eoValueParam<string>& crossObjParam = _parser.createParam(string("Discrete"), "crossObj", "Recombination of object variables (Discrete or Intermediate)", 'O', "Variation Operators");
|
eoValueParam<string>& crossObjParam = _parser.createParam(string("discrete"), "crossObj", "Recombination of object variables (discrete or intermediate)", 'O', "Variation Operators");
|
||||||
eoValueParam<string>& crossStdevParam = _parser.createParam(string("Intermediate"), "crossStdev", "Recombination of mutation strategy parameters (Intermediate or Discrete)", 'S', "Variation Operators");
|
eoValueParam<string>& crossStdevParam = _parser.createParam(string("intermediate"), "crossStdev", "Recombination of mutation strategy parameters (intermediate or discrete)", 'S', "Variation Operators");
|
||||||
|
|
||||||
// The pointers: first the atom Xover
|
// The pointers: first the atom Xover
|
||||||
eoBinOp<double> *ptObjAtomCross = NULL;
|
eoBinOp<double> *ptObjAtomCross = NULL;
|
||||||
|
|
@ -142,22 +142,22 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
|
||||||
eoGenOp<EOT> *ptCross;
|
eoGenOp<EOT> *ptCross;
|
||||||
|
|
||||||
// check for the atom Xovers
|
// check for the atom Xovers
|
||||||
if (crossObjParam.value() == string("Discrete"))
|
if (crossObjParam.value() == string("discrete"))
|
||||||
ptObjAtomCross = new eoRealAtomExchange;
|
ptObjAtomCross = new eoRealAtomExchange;
|
||||||
else if (crossObjParam.value() == string("Intermediate"))
|
else if (crossObjParam.value() == string("intermediate"))
|
||||||
ptObjAtomCross = new eoRealAtomExchange;
|
ptObjAtomCross = new eoRealAtomExchange;
|
||||||
else throw runtime_error("Invalid Object variable crossover type");
|
else throw runtime_error("Invalid Object variable crossover type");
|
||||||
|
|
||||||
if (crossStdevParam.value() == string("Discrete"))
|
if (crossStdevParam.value() == string("discrete"))
|
||||||
ptStdevAtomCross = new eoRealAtomExchange;
|
ptStdevAtomCross = new eoRealAtomExchange;
|
||||||
else if (crossStdevParam.value() == string("Intermediate"))
|
else if (crossStdevParam.value() == string("intermediate"))
|
||||||
ptStdevAtomCross = new eoRealAtomExchange;
|
ptStdevAtomCross = new eoRealAtomExchange;
|
||||||
else throw runtime_error("Invalid mutation strategy parameter crossover type");
|
else throw runtime_error("Invalid mutation strategy parameter crossover type");
|
||||||
|
|
||||||
// and build the indi Xover
|
// and build the indi Xover
|
||||||
if (crossTypeParam.value() == string("Global"))
|
if (crossTypeParam.value() == string("global"))
|
||||||
ptCross = new eoEsGlobalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
|
ptCross = new eoEsGlobalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
|
||||||
else if (crossTypeParam.value() == string("Local"))
|
else if (crossTypeParam.value() == string("standard"))
|
||||||
ptCross = new eoEsLocalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
|
ptCross = new eoEsLocalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
|
||||||
else throw runtime_error("Invalide Object variable crossover type");
|
else throw runtime_error("Invalide Object variable crossover type");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -131,19 +131,30 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
|
||||||
// the crossovers
|
// the crossovers
|
||||||
/////////////////
|
/////////////////
|
||||||
// the parameters
|
// the parameters
|
||||||
|
eoValueParam<double>& alphaParam = _parser.createParam(double(0.0), "alpha", "Bound for factor of linear recombinations", 'a', "Variation Operators" );
|
||||||
|
// minimum check
|
||||||
|
if ( (alphaParam.value() < 0) )
|
||||||
|
throw runtime_error("Invalid BLX coefficient alpha");
|
||||||
|
|
||||||
|
|
||||||
eoValueParam<double>& segmentRateParam = _parser.createParam(double(1.0), "segmentRate", "Relative rate for segment crossover", 's', "Variation Operators" );
|
eoValueParam<double>& segmentRateParam = _parser.createParam(double(1.0), "segmentRate", "Relative rate for segment crossover", 's', "Variation Operators" );
|
||||||
// minimum check
|
// minimum check
|
||||||
if ( (segmentRateParam.value() < 0) )
|
if ( (segmentRateParam.value() < 0) )
|
||||||
throw runtime_error("Invalid segmentRate");
|
throw runtime_error("Invalid segmentRate");
|
||||||
|
|
||||||
eoValueParam<double>& arithmeticRateParam = _parser.createParam(double(2.0), "arithmeticRate", "Relative rate for arithmetic crossover", 'A', "Variation Operators" );
|
eoValueParam<double>& hypercubeRateParam = _parser.createParam(double(1.0), "hypercubeRate", "Relative rate for hypercube crossover", 'A', "Variation Operators" );
|
||||||
// minimum check
|
// minimum check
|
||||||
if ( (arithmeticRateParam.value() < 0) )
|
if ( (hypercubeRateParam.value() < 0) )
|
||||||
throw runtime_error("Invalid arithmeticRate");
|
throw runtime_error("Invalid hypercubeRate");
|
||||||
|
|
||||||
|
eoValueParam<double>& uxoverRateParam = _parser.createParam(double(1.0), "uxoverRate", "Relative rate for uniform crossover", 'A', "Variation Operators" );
|
||||||
|
// minimum check
|
||||||
|
if ( (uxoverRateParam.value() < 0) )
|
||||||
|
throw runtime_error("Invalid uxoverRate");
|
||||||
|
|
||||||
// minimum check
|
// minimum check
|
||||||
bool bCross = true;
|
bool bCross = true;
|
||||||
if (segmentRateParam.value()+arithmeticRateParam.value()==0)
|
if (segmentRateParam.value()+hypercubeRateParam.value()+uxoverRateParam.value()==0)
|
||||||
{
|
{
|
||||||
cerr << "Warning: no crossover" << endl;
|
cerr << "Warning: no crossover" << endl;
|
||||||
bCross = false;
|
bCross = false;
|
||||||
|
|
@ -156,14 +167,19 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
|
||||||
if (bCross)
|
if (bCross)
|
||||||
{
|
{
|
||||||
// segment crossover for bitstring - pass it the bounds
|
// segment crossover for bitstring - pass it the bounds
|
||||||
ptQuad = new eoSegmentCrossover<EOT>(*ptBounds);
|
ptQuad = new eoSegmentCrossover<EOT>(*ptBounds, alphaParam.value());
|
||||||
_state.storeFunctor(ptQuad);
|
_state.storeFunctor(ptQuad);
|
||||||
ptCombinedQuadOp = new eoPropCombinedQuadOp<EOT>(*ptQuad, segmentRateParam.value());
|
ptCombinedQuadOp = new eoPropCombinedQuadOp<EOT>(*ptQuad, segmentRateParam.value());
|
||||||
|
|
||||||
// arithmetic crossover
|
// hypercube crossover
|
||||||
ptQuad = new eoArithmeticCrossover<EOT>(*ptBounds);
|
ptQuad = new eoHypercubeCrossover<EOT>(*ptBounds, alphaParam.value());
|
||||||
_state.storeFunctor(ptQuad);
|
_state.storeFunctor(ptQuad);
|
||||||
ptCombinedQuadOp->add(*ptQuad, arithmeticRateParam.value());
|
ptCombinedQuadOp->add(*ptQuad, hypercubeRateParam.value());
|
||||||
|
|
||||||
|
// uniform crossover
|
||||||
|
ptQuad = new eoRealUXover<EOT>();
|
||||||
|
_state.storeFunctor(ptQuad);
|
||||||
|
ptCombinedQuadOp->add(*ptQuad, uxoverRateParam.value());
|
||||||
|
|
||||||
// don't forget to store the CombinedQuadOp
|
// don't forget to store the CombinedQuadOp
|
||||||
_state.storeFunctor(ptCombinedQuadOp);
|
_state.storeFunctor(ptCombinedQuadOp);
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,9 @@
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include "eoRNG.h"
|
#include "eoRNG.h"
|
||||||
|
|
||||||
#include <sys/time.h>
|
|
||||||
/** this function retunrs a "truly random" seed for RNG
|
|
||||||
* Replaces the call to time(0) that seems to be non-portable???
|
|
||||||
*/
|
|
||||||
uint32 random_seed()
|
|
||||||
{
|
|
||||||
struct timeval tval;
|
|
||||||
struct timezone tzp;
|
|
||||||
|
|
||||||
gettimeofday (&tval, &tzp); // milliseconds since midnight January 1, 1970.
|
|
||||||
return uint32(tval.tv_usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace eo
|
namespace eo
|
||||||
{
|
{
|
||||||
/// The Global random number generator.
|
/// The Global random number generator.
|
||||||
eoRng rng(random_seed());
|
eoRng rng(time(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -288,9 +288,6 @@ extern eoRng rng;
|
||||||
|
|
||||||
using eo::rng;
|
using eo::rng;
|
||||||
|
|
||||||
/** the random_seed utility in eoRNG.cpp */
|
|
||||||
extern uint32 random_seed();
|
|
||||||
|
|
||||||
// Implementation of some eoRng members.... Don't mind the mess, it does work.
|
// Implementation of some eoRng members.... Don't mind the mess, it does work.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#include <utils/eoParser.h>
|
#include <utils/eoParser.h>
|
||||||
#include <fstream.h>
|
#include <fstream.h>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
/** Generation of the status file, and output of the help message if needed
|
/** Generation of the status file, and output of the help message if needed
|
||||||
*
|
*
|
||||||
|
|
@ -60,3 +61,40 @@ void make_help(eoParser & _parser)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** test a dir.
|
||||||
|
* Creates it if does not exist
|
||||||
|
* If exists, throws an exception or erase everything there,
|
||||||
|
* depending on last parameter
|
||||||
|
*
|
||||||
|
* Always return true (for code easy writing on the other side :-)
|
||||||
|
*/
|
||||||
|
bool testDirRes(std::string _dirName, bool _erase)
|
||||||
|
{
|
||||||
|
string s = "test -d " + _dirName;
|
||||||
|
int res = system(s.c_str());
|
||||||
|
// test for (unlikely) errors
|
||||||
|
if ( (res==-1) || (res==127) )
|
||||||
|
{
|
||||||
|
s = "Problem executing test of dir " + _dirName;
|
||||||
|
throw runtime_error(s);
|
||||||
|
}
|
||||||
|
// now make sure there is a dir without any file in it - or quit
|
||||||
|
if (res) // no dir present
|
||||||
|
{
|
||||||
|
s = string("mkdir ")+ _dirName;
|
||||||
|
system(s.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// else
|
||||||
|
if (_erase) // OK to erase
|
||||||
|
{
|
||||||
|
s = string("/bin/rm ")+ _dirName + "/*";
|
||||||
|
system(s.c_str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//else
|
||||||
|
s = "Dir " + _dirName + " is not empty";
|
||||||
|
throw runtime_error(s);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ void main_function(int argc, char **argv)
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
// CROSSOVER
|
// CROSSOVER
|
||||||
// offspring(i) is a linear combination of parent(i)
|
// offspring(i) is a linear combination of parent(i)
|
||||||
eoArithmeticCrossover<Indi> xover;
|
eoSegmentCrossover<Indi> xover;
|
||||||
// MUTATION
|
// MUTATION
|
||||||
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
|
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
|
||||||
eoUniformMutation<Indi> mutation(EPSILON);
|
eoUniformMutation<Indi> mutation(EPSILON);
|
||||||
|
|
|
||||||
|
|
@ -48,10 +48,10 @@ void main_function(int argc, char **argv)
|
||||||
const double EPSILON = 0.01; // range for real uniform mutation
|
const double EPSILON = 0.01; // range for real uniform mutation
|
||||||
double SIGMA = 0.3; // std dev. for normal mutation
|
double SIGMA = 0.3; // std dev. for normal mutation
|
||||||
// some parameters for chosing among different operators
|
// some parameters for chosing among different operators
|
||||||
const double segmentRate = 0.5; // relative weight for 1-pt Xover
|
const double hypercubeRate = 0.5; // relative weight for hypercube Xover
|
||||||
const double arithmeticRate = 0.5; // relative weight for 2-pt Xover
|
const double segmentRate = 0.5; // relative weight for segment Xover
|
||||||
const double uniformMutRate = 0.5; // relative weight for bit-flip mutation
|
const double uniformMutRate = 0.5; // relative weight for uniform mutation
|
||||||
const double detMutRate = 0.5; // relative weight for one-bit mutation
|
const double detMutRate = 0.5; // relative weight for det-uniform mutation
|
||||||
const double normalMutRate = 0.5; // relative weight for normal mutation
|
const double normalMutRate = 0.5; // relative weight for normal mutation
|
||||||
|
|
||||||
// GENERAL
|
// GENERAL
|
||||||
|
|
@ -113,10 +113,10 @@ void main_function(int argc, char **argv)
|
||||||
// uniform chooce on segment made by the parents
|
// uniform chooce on segment made by the parents
|
||||||
eoSegmentCrossover<Indi> xoverS;
|
eoSegmentCrossover<Indi> xoverS;
|
||||||
// uniform choice in hypercube built by the parents
|
// uniform choice in hypercube built by the parents
|
||||||
eoArithmeticCrossover<Indi> xoverA;
|
eoHypercubeCrossover<Indi> xoverA;
|
||||||
// Combine them with relative weights
|
// Combine them with relative weights
|
||||||
eoPropCombinedQuadOp<Indi> xover(xoverS, segmentRate);
|
eoPropCombinedQuadOp<Indi> xover(xoverS, segmentRate);
|
||||||
xover.add(xoverA, arithmeticRate, true);
|
xover.add(xoverA, hypercubeRate, true);
|
||||||
|
|
||||||
// MUTATION
|
// MUTATION
|
||||||
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
|
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
SUBDIRS = Lesson1 Lesson2 Lesson3
|
SUBDIRS = Lesson1 Lesson2 Lesson3 Lesson4
|
||||||
|
|
||||||
all:
|
all:
|
||||||
for i in $(SUBDIRS); do pushd $$i && $(MAKE) all; popd; done
|
for i in $(SUBDIRS); do pushd $$i && $(MAKE) all; popd; done
|
||||||
|
|
@ -12,6 +12,9 @@ lesson2 :
|
||||||
lesson3 :
|
lesson3 :
|
||||||
cd Lesson3; make
|
cd Lesson3; make
|
||||||
|
|
||||||
|
lesson4 :
|
||||||
|
cd Lesson4; make
|
||||||
|
|
||||||
#empty dist and distdir to let top-level 'make' do its job
|
#empty dist and distdir to let top-level 'make' do its job
|
||||||
dist :
|
dist :
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,14 +98,14 @@ SIGMA = 0.3; </b> // std dev.
|
||||||
for normal mutation</font></tt>
|
for normal mutation</font></tt>
|
||||||
<br><tt><font color="#3366FF"><b> </b>// some parameters for chosing
|
<br><tt><font color="#3366FF"><b> </b>// some parameters for chosing
|
||||||
among different operators</font></tt>
|
among different operators</font></tt>
|
||||||
<br><tt><font color="#3366FF"><b> const double segmentRate = 0.5;
|
<br><tt><font color="#3366FF"><b> const double hypercubeRate = 0.5;
|
||||||
</b>// relative weight for 1-pt Xover</font></tt>
|
</b>// relative weight for hypercube Xover</font></tt>
|
||||||
<br><tt><font color="#3366FF"><b> const double arithmeticRate = 0.5;
|
<br><tt><font color="#3366FF"><b> const double segmentRate = 0.5;
|
||||||
</b>// relative weight for 2-pt Xover</font></tt>
|
</b>// relative weight for segment Xover</font></tt>
|
||||||
<br><tt><font color="#3366FF"><b> const double uniformMutRate = 0.5;
|
<br><tt><font color="#3366FF"><b> const double uniformMutRate = 0.5;
|
||||||
</b>// relative weight for bit-flip mutation</font></tt>
|
</b>// relative weight for uniform mutation</font></tt>
|
||||||
<br><tt><font color="#3366FF"><b> const double detMutRate = 0.5;
|
<br><tt><font color="#3366FF"><b> const double detMutRate = 0.5;
|
||||||
</b>// relative weight for one-bit mutation</font></tt>
|
</b>// relative weight for det-uniform mutation</font></tt>
|
||||||
<br><tt><font color="#3366FF"> <b>const double normalMutRate = 0.5;</b>
|
<br><tt><font color="#3366FF"> <b>const double normalMutRate = 0.5;</b>
|
||||||
// relative weight for normal mutation</font></tt></td>
|
// relative weight for normal mutation</font></tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -214,12 +214,12 @@ made by the parents</font></tt>
|
||||||
<br><b><tt><font color="#993399"> eoSegmentCrossover<Indi> xoverS;</font></tt></b>
|
<br><b><tt><font color="#993399"> eoSegmentCrossover<Indi> xoverS;</font></tt></b>
|
||||||
<br><tt><font color="#993399"><b> </b>// uniform choice in hypercube
|
<br><tt><font color="#993399"><b> </b>// uniform choice in hypercube
|
||||||
built by the parents</font></tt>
|
built by the parents</font></tt>
|
||||||
<br><b><tt><font color="#993399"> eoArithmeticCrossover<Indi> xoverA;</font></tt></b>
|
<br><b><tt><font color="#993399"> eoHypercubeCrossover<Indi> xoverA;</font></tt></b>
|
||||||
<br><tt><font color="#993399"><b> </b>// Combine them with relative
|
<br><tt><font color="#993399"><b> </b>// Combine them with relative
|
||||||
weights</font></tt>
|
weights</font></tt>
|
||||||
<br><b><tt><font color="#993399"> eoPropCombinedQuadOp<Indi> xover(xoverS,
|
<br><b><tt><font color="#993399"> eoPropCombinedQuadOp<Indi> xover(xoverS,
|
||||||
segmentRate);</font></tt></b>
|
segmentRate);</font></tt></b>
|
||||||
<br><b><tt><font color="#993399"> xover.add(xoverA, arithmeticRate,
|
<br><b><tt><font color="#993399"> xover.add(xoverA, hypercubeRate,
|
||||||
true);</font></tt></b></td>
|
true);</font></tt></b></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -273,7 +273,7 @@ The actual code is in boldface and the comment in normal face.
|
||||||
<td>
|
<td>
|
||||||
<tt><font color="#993399">
|
<tt><font color="#993399">
|
||||||
<b> </b>// offspring(i) is a linear combination of parent(i)<br>
|
<b> </b>// offspring(i) is a linear combination of parent(i)<br>
|
||||||
<b> eoArithmeticCrossover<Indi> xover;</b><br>
|
<b> eoSegmentCrossover<Indi> xover;</b><br>
|
||||||
</font></tt>
|
</font></tt>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,7 @@ continuator(MAX_GEN);</font></font></td>
|
||||||
<tr>
|
<tr>
|
||||||
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoUniformMutation<Indi>
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoUniformMutation<Indi>
|
||||||
mutation(EPSILON);</font></font>
|
mutation(EPSILON);</font></font>
|
||||||
<br><font face="Courier New,Courier"><font color="#CC33CC">eoArithmeticCrossover<Indi>
|
<br><font face="Courier New,Courier"><font color="#CC33CC">eoSegmentCrossover<Indi>
|
||||||
xover;</font></font></td>
|
xover;</font></font></td>
|
||||||
|
|
||||||
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoBitMutation<Indi>
|
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoBitMutation<Indi>
|
||||||
|
|
|
||||||
|
|
@ -259,8 +259,8 @@ bit, which is specific of the bit-flip mutation. Hence, to run the
|
||||||
same algorithm as Goldberg's SGA, the mutation probability (at individual
|
same algorithm as Goldberg's SGA, the mutation probability (at individual
|
||||||
level) is 1, and the probability of flipping each bit is <b><tt>P_MUT_PER_BIT.</tt></b>
|
level) is 1, and the probability of flipping each bit is <b><tt>P_MUT_PER_BIT.</tt></b>
|
||||||
<li>
|
<li>
|
||||||
<a href="FirstRealGA.html#operators">Real</a> The crossover <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eoarithmeticcrossover.html">eoArithmeticCrossover</a></font></font></b>
|
<a href="FirstRealGA.html#operators">Real</a> The crossover <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eosegmentcrossover.html">eoSegmentCrossover</a></font></font></b>
|
||||||
is the standard <font color="#CC33CC">arithmetic crossover</font> for real-valued
|
is the standard <font color="#CC33CC">segment crossover</font> for real-valued
|
||||||
vectors, that chooses a point randomly on the segment between both parents
|
vectors, that chooses a point randomly on the segment between both parents
|
||||||
(also termed <font color="#CC33CC">BLX-0</font>). <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eouniformmutation.html">eoUniformMutation</a></font></font></b>
|
(also termed <font color="#CC33CC">BLX-0</font>). <b><font face="Arial,Helvetica"><font size=+1><a href="../../doc/html/class_eouniformmutation.html">eoUniformMutation</a></font></font></b>
|
||||||
is the <font color="#CC33CC">uniform mutation</font> for real-valued vectors
|
is the <font color="#CC33CC">uniform mutation</font> for real-valued vectors
|
||||||
|
|
|
||||||
|
|
@ -172,8 +172,8 @@ on many problems.</font>
|
||||||
<br><font color="#000000">Two </font><b><font color="#FF6600">crossover
|
<br><font color="#000000">Two </font><b><font color="#FF6600">crossover
|
||||||
operators</font></b><font color="#000000"> are available: the </font><font color="#CC33CC">eoSegmentCrossover</font><font color="#000000">
|
operators</font></b><font color="#000000"> are available: the </font><font color="#CC33CC">eoSegmentCrossover</font><font color="#000000">
|
||||||
chooses one point uniformly on the segment joining the parents, while the
|
chooses one point uniformly on the segment joining the parents, while the
|
||||||
</font><font color="#CC33CC">eoArithmeticCrossover</font><font color="#000000">
|
</font><font color="#CC33CC">eoHypercubeCrossover</font><font color="#000000">
|
||||||
performs a segment crossover on each coordinate independently, which amount
|
performs a linear combination on each coordinate independently, which amount
|
||||||
to choosing the offspring uniformly in the hypercube whose diagonal is
|
to choosing the offspring uniformly in the hypercube whose diagonal is
|
||||||
the segment joining the parents.</font>
|
the segment joining the parents.</font>
|
||||||
<br><font color="#000000">As for </font><b><font color="#FF6600">mutation
|
<br><font color="#000000">As for </font><b><font color="#FF6600">mutation
|
||||||
|
|
@ -267,7 +267,7 @@ is something else to modify...</font></li>
|
||||||
<br><font color="#000000">Use different initializers: for instance, on
|
<br><font color="#000000">Use different initializers: for instance, on
|
||||||
the real-valued sphere function minimization, try to initialize half of
|
the real-valued sphere function minimization, try to initialize half of
|
||||||
the population in [-2,-1] and the other half in [1,2], with and without
|
the population in [-2,-1] and the other half in [1,2], with and without
|
||||||
the segment and arithmetic crossovers (and for large values of VEC_SIZE,
|
the segment and hypercube crossovers (and for large values of VEC_SIZE,
|
||||||
the size of the vectors). Amazing, isn't it! Explain that result.</font>
|
the size of the vectors). Amazing, isn't it! Explain that result.</font>
|
||||||
<p><a NAME="Exercise3"></a><b><font size=+2><font color="#000099">Exercise
|
<p><a NAME="Exercise3"></a><b><font size=+2><font color="#000099">Exercise
|
||||||
3: </font><font color="#FF0000">full selection/replacement</font></font></b>
|
3: </font><font color="#FF0000">full selection/replacement</font></font></b>
|
||||||
|
|
|
||||||
|
|
@ -76,13 +76,20 @@ however thay have been entered (try </font><b><tt><font color="#FF6666"><font si
|
||||||
status file). The parameters that are commented out (a # character comments
|
status file). The parameters that are commented out (a # character comments
|
||||||
out the rest of the line) in the file are those that were not specified
|
out the rest of the line) in the file are those that were not specified
|
||||||
by the user.</font>
|
by the user.</font>
|
||||||
|
<br><font color="#000000">On the status file, the parameters are organized
|
||||||
|
in sections. Note, however, that this format is not mandatory in the param
|
||||||
|
file, as </font><font color="#FF6600">only the keywords</font><font color="#000000">
|
||||||
|
are processed.</font>
|
||||||
<p><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">Representation-independent
|
<p><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">Representation-independent
|
||||||
parameters</font></b>
|
parameters</font></b>
|
||||||
<br><font color="#000000">The parameters are organized in sections. In
|
<br><font color="#000000">In what follows, the fixed font colored text
|
||||||
what follows, the fixed font colored text is directly taken from the status
|
is directly taken from the status file and is commented between the lines.
|
||||||
file and is commented between the lines.</font>
|
The presentation follows the status file format - only two sections are
|
||||||
<br>
|
representation-dependent (see the corresponding <a href="#binary">binary</a>
|
||||||
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
|
or <a href="#real">real</a> sections). All other sections are presented
|
||||||
|
now:</font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#993300">######
|
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#993300">######
|
||||||
General ######</font></tt></font></b>
|
General ######</font></tt></font></b>
|
||||||
<br><b><tt><font color="#993300"><font size=+1># --help=0 # -h : Prints
|
<br><b><tt><font color="#993300"><font size=+1># --help=0 # -h : Prints
|
||||||
|
|
@ -98,151 +105,20 @@ of seconds since Jan. 1 1980, is used ... and stored in the status file,
|
||||||
of course, so you can repeat the same run by simply assigning that value
|
of course, so you can repeat the same run by simply assigning that value
|
||||||
again. There is </font><font color="#FF0000">no default value ("true" random
|
again. There is </font><font color="#FF0000">no default value ("true" random
|
||||||
seed)</font><font color="#000000">.</font>
|
seed)</font><font color="#000000">.</font>
|
||||||
<br>
|
<p>
|
||||||
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
|
<hr SIZE=5 WIDTH="30%">
|
||||||
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#009900">######
|
||||||
Output ######</font></tt></font></b>
|
|
||||||
<br><font color="#000000">This section contains parameters related to output
|
|
||||||
(to screen, to files, graphical, ...).</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --useEval=1 # Use nb of
|
|
||||||
eval. as counter (vs nb of gen.)</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
whether or not you want the nb of evluations to be displayed and used as
|
|
||||||
counter in statistics outputs and plots. </font><font color="#FF0000">Default
|
|
||||||
is true</font><font color="#000000">.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --printBestStat=1 # Print
|
|
||||||
Best/avg/stdev every gen.</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
toggles screen output of indicated statistics. </font><font color="#FF0000">Default
|
|
||||||
is true</font><font color="#000000">.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --plotBestStat=0 # Plot
|
|
||||||
Best/avg Stat</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
toggles gnuplot output of best and average plots (Linux only at the moment).
|
|
||||||
</font><font color="#FF0000">Default
|
|
||||||
is false.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --BestFileName=best.xg
|
|
||||||
# Name of file for Best/avg/stdev</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
|
||||||
if present, the statistics are stored in that file (</font><font color="#FF0000">no
|
|
||||||
default</font><font color="#000000">)</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --printPop=0 # Print sorted
|
|
||||||
pop. every gen.</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
adds a dump of the whole population to the screen every generation. Is
|
|
||||||
likely to generate </font><b><font color="#FF6600">huge</font></b><font color="#000000">
|
|
||||||
output! </font><font color="#FF0000">Default is false.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --printFDC=1 # Print FDC
|
|
||||||
coeff. every gen.</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
adds Fitness Distance Correlation to output every generation. </font><font color="#FF0000">Default
|
|
||||||
is false.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --plotFDCStat=0 # Plot
|
|
||||||
FDC scatter plot</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
toggles the Fitness Distance Correlation plot (Fitness vs distance to best).
|
|
||||||
</font><font color="#FF0000">Default
|
|
||||||
is false.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --plotHisto=0 # Plot histogram
|
|
||||||
of fitnesses</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
if on, gnuplot is used to plot the sorted population (fitness vs rank).
|
|
||||||
Gives a graphical idea of the diversity. </font><font color="#FF0000">Default
|
|
||||||
is false.</font>
|
|
||||||
<br>
|
|
||||||
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
|
|
||||||
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
|
||||||
Persistence ######</font></tt></font></b>
|
|
||||||
<br><font color="#000000">This section contains parameters handling job
|
|
||||||
dump and restart mechanism</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --Load= # -L : A save file
|
|
||||||
to restart from</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
|
||||||
if present, the initial population (and the RNG) is read from indicated
|
|
||||||
file. That file </font><b><font color="#FF0000">must</font></b><font color="#000000">
|
|
||||||
come from a previous save (or must be in same format!), i.e. must contain
|
|
||||||
a popualtion, the RNG and all parameters. If no other parameter is modified,
|
|
||||||
using a previously saved population and RNG will give exactly the same
|
|
||||||
results than having run that previous run longer. And a way to be sure
|
|
||||||
to re-use the same parameters is to ... use that very save file as parameter
|
|
||||||
file, as it contains all actual parameters in the right format.</font>
|
|
||||||
<br><font color="#000000">Note that if not enough individuals are read,
|
|
||||||
the remaining are randomly initialized. </font><font color="#FF0000">No
|
|
||||||
default value</font><font color="#000000">.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --recomputeFitness=0 #
|
|
||||||
-r : Recompute the fitness after re-loading the pop.?</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
|
||||||
in case some individuals are read from a file, their fitness is read too.
|
|
||||||
If this one is true, it is nevertheless recomputed. </font><font color="#FF0000">Default
|
|
||||||
is false</font><font color="#000000"> i.e. use fitnes that's in the file.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --saveFrequency=0 # Save
|
|
||||||
every F generation (0 = only final state, absent = never)</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
|
||||||
interval between two dump to disk of the whole population (+RNG + parameters)
|
|
||||||
to disk, in a file named genNN.sav, where NN is the generation number.
|
|
||||||
If this prameter is present (even with 0 or negative value), the final
|
|
||||||
population will always be saved, whatever the reason for stopping. Hence
|
|
||||||
the only way to avoid all saves is to omit the parameter (there is </font><font color="#FF0000">no
|
|
||||||
default value</font><font color="#000000">).</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --saveTimeInterval=0 #
|
|
||||||
Save every T seconds (0 or absent = never)</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
|
||||||
time interval between two population (+RNG + parameters) dumps to disks.
|
|
||||||
Files are names timeNN.sav. See pervious parameter description for ore
|
|
||||||
details. </font><font color="#FF0000">No default value.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --status=t-eoGA.status
|
|
||||||
# Status file</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
|
||||||
name of the status file (that contains all parameters in the input format).
|
|
||||||
There is no way to avoid creating that file except recompiling ... or giving
|
|
||||||
the name /dev/null (Unix). Default value is </font><font color="#FF0000">ProgramName.status</font>
|
|
||||||
<br>
|
|
||||||
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
|
|
||||||
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
|
||||||
Stopping criterion ######</font></tt></font></b>
|
|
||||||
<br><font color="#000000">This section allows to decide when the algorithm
|
|
||||||
will stop.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --maxGen=100 # -G : Maximum
|
|
||||||
number of generations (0 = none)</font></font></tt></b>
|
|
||||||
<br><font color="#000000">Integer parameter: maximum number of generations.
|
|
||||||
A value of 0 disables that stopping criterion. </font><font color="#FF0000">Default
|
|
||||||
is 100.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --steadyGen=100 # -s :
|
|
||||||
Number of generations with no improvement</font></font></tt></b>
|
|
||||||
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
|
||||||
stops whenever that number of generations is passed without any improvement
|
|
||||||
of the best fitness in the population, provided the following minimum number
|
|
||||||
of generations has been done. </font><font color="#FF0000">No default value.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --minGen=0 # -g : Minimum
|
|
||||||
number of generations</font></font></tt></b>
|
|
||||||
<br><font color="#000000">Integer parameter: the above steadyGen parameter
|
|
||||||
starts its job only after that minimum nuber of generations is passed.
|
|
||||||
</font><font color="#FF0000">No
|
|
||||||
default value.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --maxEval=0 # -E : Maximum
|
|
||||||
number of evaluations (0 = none)</font></font></tt></b>
|
|
||||||
<br><font color="#000000">Integer parameter: maximum number of generations.
|
|
||||||
</font><font color="#FF0000">No
|
|
||||||
default value.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --targetFitness=0 # -T
|
|
||||||
: Stop when fitness reaches</font></font></tt></b>
|
|
||||||
<br><font color="#000000">Real-valued parameter: the algorithm stops whenever
|
|
||||||
the best fitness reaches that target. </font><font color="#FF0000">No default
|
|
||||||
value.</font>
|
|
||||||
<p><b><tt><font color="#3333FF"><font size=+1># --CtrlC=0 # -C : Terminate
|
|
||||||
current generation upon Ctrl C</font></font></tt></b>
|
|
||||||
<br><font color="#000000">Boolean parameter: if true, Ctrl C only stops
|
|
||||||
after the current generation as completed (eventually dumping population
|
|
||||||
to a file if some saver is active). THis very useful feature is only available
|
|
||||||
in Unix at the moment. </font><font color="#FF0000">Default is false.</font>
|
|
||||||
<br>
|
|
||||||
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
|
|
||||||
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#009900">######
|
|
||||||
engine ######</font></tt></font></b>
|
engine ######</font></tt></font></b>
|
||||||
<br><font color="#000000">In this section, one chooses all components of
|
<br><font color="#000000">In this section, one chooses all components of
|
||||||
the <a href="eoEngine.html">Evolution Engine</a> (selection, replacemenet
|
the <a href="eoEngine.html">Evolution Engine</a> (selection, replacemenet
|
||||||
and the like).</font>
|
and the like).</font>
|
||||||
<p><b><tt><font color="#009900"><font size=+1># --selection=DetTour(2)
|
<p><b><tt><font color="#009900"><font size=+1># --popSize=20 # -P : Population
|
||||||
|
Size</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
the size of the population (constant along evolution). And yes, this is
|
||||||
|
a representation independent parameter, as the population is created either
|
||||||
|
from a file or using an eoInit object - and only that object is representation-dependent.</font>
|
||||||
|
<br><b><tt><font color="#009900"><font size=+1># --selection=DetTour(2)
|
||||||
# -S : Selection: Roulette, DetTour(T), StochTour(t) or Sequential(ordered/unordered)</font></font></tt></b>
|
# -S : Selection: Roulette, DetTour(T), StochTour(t) or Sequential(ordered/unordered)</font></font></tt></b>
|
||||||
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
Name of <a href="eoEngine.html#selection">selection procedure.</a> Availabable
|
Name of <a href="eoEngine.html#selection">selection procedure.</a> Availabable
|
||||||
|
|
@ -304,10 +180,534 @@ if true, weak elitism is added to the replacement procedure (i.e. if the
|
||||||
best fitness among the offspring is less than the best fitness, the best
|
best fitness among the offspring is less than the best fitness, the best
|
||||||
parent replaces the worst offspring). </font><font color="#FF0000">Default
|
parent replaces the worst offspring). </font><font color="#FF0000">Default
|
||||||
is false.</font>
|
is false.</font>
|
||||||
<p><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">
|
<p>
|
||||||
Bistring specific parameters</font></b>
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
||||||
|
Output ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This first section on Output contains parameters
|
||||||
|
related to screen text output.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --useEval=1 # Use nb of
|
||||||
|
eval. as counter (vs nb of gen.)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
whether or not you want the nb of evluations to be displayed and used as
|
||||||
|
counter in statistics outputs and plots. </font><font color="#FF0000">Default
|
||||||
|
is true</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --printBestStat=1 # Print
|
||||||
|
Best/avg/stdev every gen.</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
toggles screen output of indicated statistics. </font><font color="#FF0000">Default
|
||||||
|
is true</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --printPop=0 # Print sorted
|
||||||
|
pop. every gen.</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
adds a dump of the whole population to the screen every generation. Is
|
||||||
|
likely to generate </font><b><font color="#FF6600">huge</font></b><font color="#000000">
|
||||||
|
output! </font><font color="#FF0000">Default is false.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --printFDC=1 # Print FDC
|
||||||
|
coeff. every gen.</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
adds Fitness Distance Correlation to output every generation. </font><font color="#FF0000">Default
|
||||||
|
is false.</font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
||||||
|
Output - Disk ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This second section on Output contains parameters
|
||||||
|
related to DISK output.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --resDir=Res # Directory
|
||||||
|
to store DISK outputs</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter: </font><font color="#000000">All
|
||||||
|
</font><font color="#FF6600">DISK
|
||||||
|
output</font><font color="#000000"> will be stored in a separate directory
|
||||||
|
-this is its name. If the directory does not exist, it is created. Note
|
||||||
|
that </font><font color="#FF6600">all graphical displays</font><font color="#000000">
|
||||||
|
will use that directory for their temporary files. Also </font><font color="#FF6600">all
|
||||||
|
job dump</font><font color="#000000"> (see section </font><b><font color="#3333FF">Persistence</font></b><font color="#000000">
|
||||||
|
below) store their files there too.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --eraseDir=0 # erase files
|
||||||
|
in dirName if any</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
in order not to mix up files from different runs, it is mandatory to ensure
|
||||||
|
that the directory where all files will be stored is empty. However, if
|
||||||
|
this parameter is not set and the directory already exists, an exception
|
||||||
|
is thrown and the program stops. It it is set, </font><b><font color="#FF6600">all
|
||||||
|
files in the result directory are erased</font></b><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --fileBestStat=0 # Output
|
||||||
|
Best/avg/stdev to a file</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
if present, the best, average and standard deviation statistics are stored
|
||||||
|
in file </font><b><tt><font color="#993300"><font size=+1>resDir/best.xg</font></font></tt></b><font color="#000000">.
|
||||||
|
Each line contains the generation number, eventualy the evaluation count
|
||||||
|
(depending on parameter </font><b><tt><font color="#3333FF"><font size=+1>useEval</font></font></tt></b><font color="#000000">
|
||||||
|
then the statistics. </font><font color="#FF0000">Default is false.</font>
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
||||||
|
Output - Graphical ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This last section on Output contains parameters
|
||||||
|
related to graphical output (only available in Unix through gnuplot at
|
||||||
|
the moment).</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --plotBestStat=0 # Plot
|
||||||
|
Best/avg Stat</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
toggles gnuplot output of best and average plots (Linux only at the moment).
|
||||||
|
</font><font color="#FF0000">Default
|
||||||
|
is false.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --plotFDCStat=0 # Plot
|
||||||
|
FDC scatter plot</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
toggles the Fitness Distance Correlation plot (Fitness vs distance to best).
|
||||||
|
</font><font color="#FF0000">Default
|
||||||
|
is false.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --plotHisto=0 # Plot histogram
|
||||||
|
of fitnesses</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
if on, gnuplot is used to plot the sorted population (fitness vs rank).
|
||||||
|
Gives a graphical idea of the diversity. </font><font color="#FF0000">Default
|
||||||
|
is false.</font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
||||||
|
Persistence ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section contains parameters handling job
|
||||||
|
dump and restart mechanism.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --Load= # -L : A save file
|
||||||
|
to restart from</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
if present, the initial population (and the RNG) is read from indicated
|
||||||
|
file. That file </font><b><font color="#FF0000">must</font></b><font color="#000000">
|
||||||
|
come from a previous save (or must be in same format!), i.e. must contain
|
||||||
|
a popualtion, the RNG and all parameters. If no other parameter is modified,
|
||||||
|
using a previously saved population and RNG will give exactly the same
|
||||||
|
results than having run that previous run longer. And a way to be sure
|
||||||
|
to re-use the same parameters is to ... use that very save file as parameter
|
||||||
|
file, as it contains all actual parameters in the right format.</font>
|
||||||
|
<br><font color="#000000">Note that if not enough individuals are read,
|
||||||
|
the remaining are randomly initialized. </font><font color="#FF0000">No
|
||||||
|
default value</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --recomputeFitness=0 #
|
||||||
|
-r : Recompute the fitness after re-loading the pop.?</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
in case some individuals are read from a file, their fitness is read too.
|
||||||
|
If this one is true, it is nevertheless recomputed. </font><font color="#FF0000">Default
|
||||||
|
is false</font><font color="#000000"> i.e. use fitnes that's in the file.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --saveFrequency=0 # Save
|
||||||
|
every F generation (0 = only final state, absent = never)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
interval between two dump to disk of the whole population (+RNG + parameters),
|
||||||
|
in a file named genNN.sav in the </font><b><tt><font color="#993300"><font size=+1>dirRes</font></font></tt></b><font color="#000000">
|
||||||
|
directory, where NN is the generation number. If this prameter is present
|
||||||
|
(even with 0 or negative value), the final population will always be saved,
|
||||||
|
whatever the reason for stopping. Hence the only way to avoid all saves
|
||||||
|
is to omit the parameter (there is </font><font color="#FF0000">no default
|
||||||
|
value</font><font color="#000000">).</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --saveTimeInterval=0 #
|
||||||
|
Save every T seconds (0 or absent = never)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
time interval between two population (+RNG + parameters) dumps to disks.
|
||||||
|
Files are names timeNN.sav. See pervious parameter description for ore
|
||||||
|
details. </font><font color="#FF0000">No default value.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --status=t-eoGA.status
|
||||||
|
# Status file</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
name of the status file (that contains all parameters in the input format).
|
||||||
|
There is no way to avoid creating that file except recompiling ... or giving
|
||||||
|
the name /dev/null (Unix). Default value is </font><font color="#FF0000">ProgramName.status</font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
|
||||||
|
Stopping criterion ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section allows to decide when the algorithm
|
||||||
|
will stop.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --maxGen=100 # -G : Maximum
|
||||||
|
number of generations (0 = none)</font></font></tt></b>
|
||||||
|
<br><font color="#000000">Integer parameter: maximum number of generations.
|
||||||
|
A value of 0 disables that stopping criterion. </font><font color="#FF0000">Default
|
||||||
|
is 100.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --steadyGen=100 # -s :
|
||||||
|
Number of generations with no improvement</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
stops whenever that number of generations is passed without any improvement
|
||||||
|
of the best fitness in the population, provided the following minimum number
|
||||||
|
of generations has been done. </font><font color="#FF0000">No default value.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --minGen=0 # -g : Minimum
|
||||||
|
number of generations</font></font></tt></b>
|
||||||
|
<br><font color="#000000">Integer parameter: the above steadyGen parameter
|
||||||
|
starts its job only after that minimum nuber of generations is passed.
|
||||||
|
</font><font color="#FF0000">No
|
||||||
|
default value.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --maxEval=0 # -E : Maximum
|
||||||
|
number of evaluations (0 = none)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
maximum number of generations.
|
||||||
|
</font><font color="#FF0000">No default
|
||||||
|
value.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --targetFitness=0 # -T
|
||||||
|
: Stop when fitness reaches</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Real-valued parameter:</font><font color="#000000">
|
||||||
|
the algorithm stops whenever the best fitness reaches that target. </font><font color="#FF0000">No
|
||||||
|
default value.</font>
|
||||||
|
<p><b><tt><font color="#3333FF"><font size=+1># --CtrlC=0 # -C : Terminate
|
||||||
|
current generation upon Ctrl C</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
if true, Ctrl C only stops after the current generation as completed (eventually
|
||||||
|
dumping population to a file if some saver is active). THis very useful
|
||||||
|
feature is only available in Unix at the moment. </font><font color="#FF0000">Default
|
||||||
|
is false.</font>
|
||||||
|
<br>
|
||||||
|
<hr ALIGN=LEFT SIZE=5 WIDTH="100%">
|
||||||
|
<p><a NAME="binary"></a><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">
|
||||||
|
Bistring specific parameters</font></b>
|
||||||
|
<br>The following describes the specific parameters that are available
|
||||||
|
in program BitEA to evolve genotypes that are <b><font color="#FF6600">bitstrings</font></b>.
|
||||||
|
<br>The two representation-dependent sections are concerned repectively
|
||||||
|
with genotype initilization and variation operators.
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
Genotype Initialization ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section should allow input if all necessary
|
||||||
|
parameters for genitype initialization</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --ChromSize=10 # -n : The
|
||||||
|
length of the bitstrings</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
The bitstring initilization only requires the length of the chromosome.</font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
Variation Operators ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section allows to tune the way the variation
|
||||||
|
operators will be applied to the individuals (in the strict limit of SGA
|
||||||
|
model at the moment, see below).</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --operator=SGA # -o : Description
|
||||||
|
of the operator (SGA only now)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
Describes the way the operators are applied. At the moment, </font><b><font color="#FF6600">only
|
||||||
|
SGA</font></b><font color="#000000"> is available. SGA </font><b><font color="#FF6600">sequentially</font></b><font color="#000000">
|
||||||
|
applies a (quadratic) crossover operator with probability </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
and a mutation operator with probability </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">.
|
||||||
|
Both these operators can in turn be </font><b><font color="#FF6600">proportional
|
||||||
|
combinations</font></b><font color="#000000"> of simple operators of the
|
||||||
|
same arity.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --pCross=0.6 # -C : Probability
|
||||||
|
of Crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The probability that a given couple of selected genitors is applied the
|
||||||
|
crossover operator. In SGA operator model, each couple of selected genitors
|
||||||
|
is applied the crossover operator with that probability (and remains unchanged
|
||||||
|
with probability </font><b><tt><font color="#CC33CC"><font size=+1>1-pCross</font></font></tt></b><font color="#000000">.
|
||||||
|
Whenever a couple undergoes crossover, a choice is made upon available
|
||||||
|
crossover operators </font><b><font color="#FF6600">proportionaly to their
|
||||||
|
relative rates</font></b><font color="#000000"> (see below). </font><font color="#FF0000">Default
|
||||||
|
is 0.6</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --pMut=0.1 # -M : Probability
|
||||||
|
of Mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The probability that a given individual (resulting from a crossover or
|
||||||
|
a non-crossover operation, see above) is applied the mutation operator.
|
||||||
|
Whenever an individual undergoes mutation, a choice is made upon available
|
||||||
|
mutation operators </font><b><font color="#FF6600">proportionaly to their
|
||||||
|
relative rates</font></b><font color="#000000"> (see below). </font><font color="#FF0000">Default
|
||||||
|
is 0.1</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --onePointRate=1 # -1 :
|
||||||
|
Relative rate for one point crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the 1-point crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to 2-point and uniform below (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). </font><font color="#FF0000">Default is 1</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --twoPointRate=1 # -2 :
|
||||||
|
Relative rate for two point crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the 2-point crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to 1-point above and uniform below (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). </font><font color="#FF0000">Default is 1</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --uRate=2 # -U : Relative
|
||||||
|
rate for uniform crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the 1-point crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to 1- and 2-point above (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). </font><font color="#FF0000">Default is 2</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --pMutPerBit=0.01 # -b
|
||||||
|
: Probability of flipping 1 bit in bit-flip mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
When </font><b><tt><font color="#CC33CC"><font size=+1>bit-flip mutation</font></font></tt></b><font color="#000000">
|
||||||
|
is applied, each bit is flipped independently with probability </font><b><tt><font color="#CC33CC"><font size=+1>pMutPerBit</font></font></tt></b><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --bitFlipRate=0.01 # -s
|
||||||
|
: Relative rate for bit-flip mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the bit-flip mutation </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to one-Bit mutation below (see </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
above). </font><font color="#FF0000">Default is 0.01</font><font color="#000000">
|
||||||
|
(if all relative rates are equal, the choice is uniform among available
|
||||||
|
operators).</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --oneBitRate=0.01 # -d
|
||||||
|
: Relative rate for deterministic bit-flip mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the one-bit mutation </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to bit-flip mutation below (see </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
above). One-bit mutation flips one and only one bit, uniformly chosen in
|
||||||
|
the individual. </font><font color="#FF0000">Default is 0.01</font><font color="#000000">
|
||||||
|
(if all relative rates are equal, the choice is uniform among available
|
||||||
|
operators).</font>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
<hr ALIGN=LEFT SIZE=5 WIDTH="100%">
|
||||||
|
<p><a NAME="real"></a><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">
|
||||||
|
Real-valued specific parameters</font></b>
|
||||||
|
<br>The following describes the specific parameters that are available
|
||||||
|
in programs <b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b>
|
||||||
|
and <b><tt><font color="#993300"><font size=+1>ESEA</font></font></tt></b>
|
||||||
|
to evolve genotypes that are <b><font color="#FF6600">vector<double></font></b>.
|
||||||
|
<br><b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b>
|
||||||
|
implements what can be called a "real-coded GA", where everything is identical
|
||||||
|
to the bitstring case above (except initialization and operators that are
|
||||||
|
specific to vector<double> of course) and <b><tt><font color="#993300"><font size=+1>ESEA</font></font></tt></b>
|
||||||
|
implements the full Evolution-Strategy self-adaptive mutation mechanism
|
||||||
|
- together with specific ES crossover operators. The initialization section
|
||||||
|
for both programs are identical, but the operator sections are totally
|
||||||
|
different. See <a href="#ES">next paragraph</a> for a description of ES
|
||||||
|
specific parameters.
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
Genotype Initialization ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section should allow input if all necessary
|
||||||
|
parameters for genitype initialization</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --vecSize=10 # -n : The
|
||||||
|
number of variables</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Integer parameter:</font><font color="#000000">
|
||||||
|
The initilization requires the length of the vector<double>.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --initBounds=(0,1) # -B
|
||||||
|
: Bounds for uniform initialization</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Special string parameter:</font><font color="#000000">
|
||||||
|
Bounds for uniform initialization of the real variables. At the moment
|
||||||
|
only the same bounds for all variables can be chosen, and the format is
|
||||||
|
(min,max) without any white space. This argument is mandatory, and
|
||||||
|
</font><font color="#FF0000">default is (0,1)</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --sigmaInit=0.3 # -s :
|
||||||
|
Initial value for Sigma(s)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The initial value for all standard-deviation mutation strategy parameters.
|
||||||
|
Useless when no self-adaptive mutation mechanism is used.</font><font color="#000000"></font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
Variation Operators ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section allows to tune the way the variation
|
||||||
|
operators will be applied to the individuals (in the strict limit of SGA
|
||||||
|
model at the moment, see below).</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --objectBounds=(0,1) #
|
||||||
|
-B : Bounds for variables (unbounded if absent)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Special string parameter:</font><font color="#000000">
|
||||||
|
Bounds for the variables to be met by all variation operators (see format
|
||||||
|
in </font><b><tt><font color="#CC33CC"><font size=+1>initBounds</font></font></tt></b><font color="#000000">
|
||||||
|
above). If this parameter is </font><b><font color="#FF6600">absent, unbounded
|
||||||
|
variables</font></b><font color="#000000"> are assumed (but they still
|
||||||
|
need some </font><b><tt><font color="#CC33CC"><font size=+1>initBounds</font></font></tt></b><font color="#000000">
|
||||||
|
for initialization). For the arithmetic crossovers below, and when parameter
|
||||||
|
alpha is greater than 0, those bounds result in restricting the values
|
||||||
|
of possible combination factors. For the uniform mutation, the interval
|
||||||
|
of uniform choice of the variables is restricted by those bounds. Finally,
|
||||||
|
in the case of Gaussian mutation, the probability distribution is folded
|
||||||
|
back into the boundeds as many times as necesssary. </font><font color="#FF0000">No
|
||||||
|
default (i.e. unbounded variables).</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --operator=SGA # -o : Description
|
||||||
|
of the operator (SGA only now)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
Describes the way the operators are applied. At the moment, </font><b><font color="#FF6600">only
|
||||||
|
SGA</font></b><font color="#000000"> is available. SGA </font><b><font color="#FF6600">sequentially</font></b><font color="#000000">
|
||||||
|
applies a (quadratic) crossover operator with probability </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
and a mutation operator with probability </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">.
|
||||||
|
Both these operators can in turn be </font><b><font color="#FF6600">proportional
|
||||||
|
combinations</font></b><font color="#000000"> of simple operators of the
|
||||||
|
same arity.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --pCross=0.6 # -C : Probability
|
||||||
|
of Crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The probability that a given couple of selected genitors is applied the
|
||||||
|
crossover operator. In SGA operator model, each couple of selected genitors
|
||||||
|
is applied the crossover operator with that probability (and remains unchanged
|
||||||
|
with probability </font><b><tt><font color="#CC33CC"><font size=+1>1-pCross</font></font></tt></b><font color="#000000">.
|
||||||
|
Whenever a couple undergoes crossover, a choice is made upon available
|
||||||
|
crossover operators </font><b><font color="#FF6600">proportionaly to their
|
||||||
|
relative rates</font></b><font color="#000000"> (see below). </font><font color="#FF0000">Default
|
||||||
|
is 0.6</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --pMut=0.1 # -M : Probability
|
||||||
|
of Mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The probability that a given individual (resulting from a crossover or
|
||||||
|
a non-crossover operation, see above) is applied the mutation operator.
|
||||||
|
Whenever an individual undergoes mutation, a choice is made upon available
|
||||||
|
mutation operators </font><b><font color="#FF6600">proportionaly to their
|
||||||
|
relative rates</font></b><font color="#000000"> (see below). </font><font color="#FF0000">Default
|
||||||
|
is 0.1</font><font color="#000000">.</font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --alpha=0 # -a : bound
|
||||||
|
for combination factor in real crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Bound for the choices of linear combination factors in both crossover belows
|
||||||
|
(similar to BLX-alpha notation). </font><font color="#FF0000">Default is
|
||||||
|
0</font><font color="#000000"> (i.e. combination factor are chosen in [0,1]).</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --segmentRate=1 # -s :
|
||||||
|
Relative rate for segment crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of application of the segment crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to hypercube and uniform crossovers (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). Segment crossover generates offspring uniformly on the segment
|
||||||
|
joining both parents, i.e. constructs two linear combinations of the parents
|
||||||
|
with a random number uniformly drawn in [</font><b><tt><font color="#CC33CC"><font size=+1>alpha</font></font></tt></b><font color="#000000">,1+</font><b><tt><font color="#CC33CC"><font size=+1>alpha</font></font></tt></b><font color="#000000">].
|
||||||
|
</font><font color="#FF0000">Default is 1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --hypercubeRate=1 # -A
|
||||||
|
: Relative rate for hypercube crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of application of the hypercube crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to segment and uniform crossovers (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). Hypercube crossover generates offspring uniformly on the hypercube
|
||||||
|
whose diagonal is the segment joining both parents, i.e. by doing linear
|
||||||
|
combinations of each variable independently (a random number in [</font><b><tt><font color="#CC33CC"><font size=+1>alpha</font></font></tt></b><font color="#000000">,1+</font><b><tt><font color="#CC33CC"><font size=+1>alpha</font></font></tt></b><font color="#000000">]
|
||||||
|
is drawn anew for each variable). </font><font color="#FF0000">Default
|
||||||
|
is 1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --uxoverRate=1 # -A : Relative
|
||||||
|
rate for uniform crossover</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of application of the segment crossover </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to hypercube and segment crossovers (see </font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
parameter). Uniform crossover simply exchanges values of variables, i.e.
|
||||||
|
uniformly picks up two other summits of the hypercube defined by the parents.
|
||||||
|
</font><font color="#FF0000">Default is 1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --epsilon=0.01 # -e : Half-size
|
||||||
|
of interval for Uniform Mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The uniform and deterministic-uniform mutations will choose values of variable
|
||||||
|
X uniformly in </font><b><tt><font size=+1><font color="#993300">[X-</font><font color="#CC33CC">epsilon</font><font color="#993300">,
|
||||||
|
X+</font><font color="#CC33CC">epsilon</font><font color="#993300">]</font></font></tt></b><font color="#000000">.
|
||||||
|
</font><font color="#FF0000">Default is 0.01</font><font color="#000000">.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --uniformMutRate=1 # -u
|
||||||
|
: Relative rate for uniform mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the uniform mutation </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to determinitic uniform and the normal mutations (see </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
above). Uniform mutation modifies all variables by choosing new values
|
||||||
|
uniformly on an interval centered on the old value of width </font><b><tt><font size=+1><font color="#993300">2*</font><font color="#CC33CC">epsilon</font></font></tt></b><font color="#000000">
|
||||||
|
(see above). </font><font color="#FF0000">Default is1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --detMutRate=1 # -d : Relative
|
||||||
|
rate for deterministic uniform mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the determinisitc-uniform mutation </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to uniform and normal mutations (see </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
above). Deterministic-uniform mutation modifies one single variable uniformly
|
||||||
|
based on epsilon </font><b><tt><font color="#CC33CC"><font size=+1>epsilon</font></font></tt></b><font color="#000000">.
|
||||||
|
</font><font color="#FF0000">Default is1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --normalMutRate=1 # -d
|
||||||
|
: Relative rate for Gaussian mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
Rate of aplication of the normal mutation </font><b><font color="#FF6600">relatively</font></b><font color="#000000">
|
||||||
|
to two uniform mutations above (see </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
above). </font><font color="#FF0000">Default is1</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --sigma=0.3 # -s : Sigma
|
||||||
|
(fixed) for Gaussian mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The value of standard deviation for Gaussian mutation - fixed along evolution
|
||||||
|
(see the Evolution Strategy program below for self-adaptive mutations).</font>
|
||||||
|
<p>
|
||||||
|
<hr ALIGN=LEFT SIZE=5 WIDTH="100%">
|
||||||
|
<p><a NAME="ES"></a><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">
|
||||||
|
ES-real-valued specific parameters</font></b>
|
||||||
|
<br>The following describes the specific parameters for program <b><tt><font color="#993300"><font size=+1>ESEA</font></font></tt></b>,
|
||||||
|
that implements the full Evolution-Strategy self-adaptive mutation mechanism
|
||||||
|
- together with specific ES crossover operators. The initialization section
|
||||||
|
is the same as the one for plain vector<double> above, so only the opeartor
|
||||||
|
sections will be described here. A new section is now concerned with deciding
|
||||||
|
what kind of self-adaptive mutation strategy will be applied - it has been
|
||||||
|
separated from the other variation operators because it has consequences
|
||||||
|
on the choice of the genotype.
|
||||||
|
<br><b><font color="#FF6600">Warning</font></b>: if you choose not to use
|
||||||
|
any self-adaptive mechanism (i.e. setting all parameters of this section
|
||||||
|
to false) you end up with ... an algorithm that is identical to <b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b>
|
||||||
|
above (try it and take alook at the status file).
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
ES mutation ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">This section allows to decide which type of self-adaptive
|
||||||
|
mutation will be used. There are three available types: isotropic mutation,
|
||||||
|
using one standard deviation for each individual, that will be applied
|
||||||
|
to all variables; anisotropic mutation, where each individual carries as
|
||||||
|
many standard deviations as it has variables; and correlated mutation where
|
||||||
|
each individuals has its own full correlation matrix.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --Isotropic=1 # -i : Isotropic
|
||||||
|
self-adaptive mutation</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
If true, at least one self-adaptive parameter will be used for each individual.
|
||||||
|
</font><font color="#FF0000">Default is true</font><font color="#000000">.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --Stdev=0 # -s : One self-adaptive
|
||||||
|
stDev per variable</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
If true, at least one self-adaptive parameter per variable will be used
|
||||||
|
for each individual. </font><font color="#FF0000">Default is false</font><font color="#000000">.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --Correl=0 # -c : Use correlated
|
||||||
|
mutations</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Boolean parameter:</font><font color="#000000">
|
||||||
|
If true, full correalted self-adaptive mutation will be used for each individual.
|
||||||
|
</font><font color="#FF0000">Default is false</font><font color="#000000">.</font><tt><font color="#CC33CC"><font size=+1></font></font></tt>
|
||||||
|
<p><b><font color="#FF6600">Note</font></b><font color="#000000">: The
|
||||||
|
default values result in an isotropic self-adaptive mutation to be chosen.</font><font color="#000000"></font>
|
||||||
|
<p>
|
||||||
|
<hr SIZE=5 WIDTH="30%">
|
||||||
|
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#CC33CC">######
|
||||||
|
Variation Operators ######</font></tt></font></b>
|
||||||
|
<br><font color="#000000">Only the parameters that are specific to ESEA
|
||||||
|
are presented here - the </font><b><tt><font color="#CC33CC"><font size=+1>objectBounds,</font></font></tt></b><font color="#000000">
|
||||||
|
</font><b><tt><font color="#CC33CC"><font size=+1>operator,</font></font></tt></b><font color="#000000">
|
||||||
|
</font><b><tt><font color="#CC33CC"><font size=+1>pCross</font></font></tt></b><font color="#000000">
|
||||||
|
and </font><b><tt><font color="#CC33CC"><font size=+1>pMut</font></font></tt></b><font color="#000000">
|
||||||
|
are exactly the same as for </font><b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b><font color="#000000">
|
||||||
|
above.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --crossType=global # -C
|
||||||
|
: Type of ES recombination (global or standard)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
Es crossover can involve only two parents - and it is then identical to
|
||||||
|
the </font><b><tt><font color="#CC33CC"><font size=+1>standard</font></font></tt></b><font color="#000000">
|
||||||
|
hypercube crossover describe for the </font><b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b><font color="#000000">
|
||||||
|
parameters above. But new parents can also be chosen anew for each variable
|
||||||
|
before doing the crossover for that variable - and this is called </font><b><tt><font color="#CC33CC"><font size=+1>global</font></font></tt></b><font color="#000000">
|
||||||
|
recombination.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --crossObj=discrete # -O
|
||||||
|
: Recombination of object variables (discrete or intermediate)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
There are two possible crossovers in plain ES. The </font><b><tt><font color="#CC33CC"><font size=+1>discrete</font></font></tt></b><font color="#000000">
|
||||||
|
crossover simpy exchanges variables among the parents. It is similar to
|
||||||
|
the plain uniform crossover for real variables. The crossover performs
|
||||||
|
a linear combination of parents;variables - it si similar to the hypercube
|
||||||
|
crossover described for with alpah parameter set to 0. This parameter
|
||||||
|
allso to choose the type of crossover that will be applied to the </font><b><font color="#FF6600">object
|
||||||
|
variables</font></b><font color="#000000"> (i.e. the origianl variables
|
||||||
|
of the problem). </font><font color="#FF0000">Default is discrete.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --crossStdev=intermediate
|
||||||
|
# -S : Recombination of mutation strategy parameters (intermediate or discrete)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">String parameter:</font><font color="#000000">
|
||||||
|
This parameter allows to choose the type of crossover (see above) that
|
||||||
|
will be applied to the </font><b><font color="#FF6600">mutation strategy
|
||||||
|
parameters</font></b><font color="#000000"> that are part of the genotype.
|
||||||
|
</font><font color="#FF0000">Default is intermediate.</font><b><tt><font color="#CC33CC"><font size=+1></font></font></tt></b>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --TauLoc=1 # -l : Local
|
||||||
|
Tau (before normalization)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The local factor for the mutation of the mutation strategy parameters (the
|
||||||
|
only one used when a single standard deviation is used). </font><font color="#FF0000">Default
|
||||||
|
is 1</font><font color="#000000">.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --TauGlob=1 # -g : Global
|
||||||
|
Tau (before normalization)</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The global factor for the mutation of the mutation strategy parameters
|
||||||
|
(only useful when more than one standard deviation are used). </font><font color="#FF0000">Default
|
||||||
|
is 1</font><font color="#000000">.</font><font color="#000000"></font>
|
||||||
|
<p><b><tt><font color="#CC33CC"><font size=+1># --Beta=0.0873 # -b : Beta</font></font></tt></b>
|
||||||
|
<br><font color="#FF0000">Floating-point parameter:</font><font color="#000000">
|
||||||
|
The factor for the mutation of the rotation angles in the case of the full
|
||||||
|
correlated mutation. </font><font color="#FF0000">Default is 0.0873</font><font color="#000000">
|
||||||
|
(following Schwefel).</font><font color="#000000"></font>
|
||||||
|
<p>
|
||||||
<hr WIDTH="100%">
|
<hr WIDTH="100%">
|
||||||
<br><a NAME="programmerguide"></a><b><font color="#000099"><font size=+2>Programmer's
|
<br><a NAME="programmerguide"></a><b><font color="#000099"><font size=+2>Programmer's
|
||||||
guide
|
guide
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ and to</font></b></center>
|
||||||
<h1>
|
<h1>
|
||||||
<font color="#FF0000">EO Tutorial</font></h1></center>
|
<font color="#FF0000">EO Tutorial</font></h1></center>
|
||||||
|
|
||||||
<center><font color="#FF0000">Version 0.95 - May. 2 2001</font>
|
<center><font color="#FF0000">Version 0.95 - May. 4 2001</font>
|
||||||
<br><b><font color="#FF6600">New</font></b>: <a href="eoLesson4.html">Lesson4</a>
|
<br><b><font color="#FF6600"><blink>New</blink></font></b>: <a href="eoLesson4.html">Lesson4</a>
|
||||||
- with user guide of fully operational program</center>
|
- with user guide of fully operational program for bitstrings and real-valued, including full support of ES self-adaptive mutation strategies</center>
|
||||||
|
|
||||||
<p>Welcome to EO tutorial/on-line documentation.
|
<p>Welcome to EO tutorial/on-line documentation.
|
||||||
<p>Please note that <b><font color="#FF6600">this tutorial is not supposed
|
<p>Please note that <b><font color="#FF6600">this tutorial is not supposed
|
||||||
|
|
|
||||||
Reference in a new issue