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:
evomarc 2001-05-04 16:51:29 +00:00
commit 5508869d00
19 changed files with 653 additions and 189 deletions

View file

@ -33,6 +33,9 @@
#include <eoEvalFuncCounter.h>
#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 //////////////
@ -58,6 +61,12 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
// and store it in the state
_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:
/////////////////////////////////////////
@ -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>& 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");
eoBestFitnessStat<EOT> *bestStat = NULL;
if ( printBestParam.value() || plotBestParam.value() || fileBestParam.value() )
// 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);
}
// do we wnat some histogram of fitnesses snpashots?
eoValueParam<bool> plotHistogramParam = _parser.createParam(false, "plotHisto", "Plot histogram of fitnesses", '\0', "Output - Graphical");
///////////////
// The monitors
///////////////
@ -183,6 +191,12 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
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
{
string stmp = dirNameParam.value() + "/best.xg";
@ -227,7 +241,7 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
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?
{
eoScalarFitnessStat<EOT> *fitStat = new eoScalarFitnessStat<EOT>;
@ -252,6 +266,10 @@ eoCheckPoint<EOT>& do_make_checkpoint(eoParameterLoader& _parser, eoState& _stat
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 );
string stmp = dirNameParam.value() + "/generations";
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" );
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";
eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp);
_state.storeFunctor(stateSaver2);

View file

@ -27,6 +27,7 @@
#ifndef _make_pop_h
#define _make_pop_h
#include <sys/time.h> // for time(0) for random seeding
#include <eoPop.h>
#include <eoInit.h>
#include <utils/eoRNG.h>
@ -50,7 +51,7 @@ eoPop<EOT>& do_make_pop(eoParser & _parser, eoState& _state, eoInit<EOT> & _ini
// random seed
eoValueParam<uint32>& seedParam = _parser.createParam(uint32(0), "seed", "Random number seed", 'S');
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");
// Either load or initialize

View file

@ -90,10 +90,10 @@ class eoEsMutationInit
virtual std::string section(void)
{ 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 std::string TauGlbName(void) const { return "TauGlb"; }
virtual std::string TauGlbName(void) const { return "TauGlob"; }
virtual char TauGlbShort(void) const { return 'g'; }
virtual std::string TauBetaName(void) const { return "Beta"; }

View file

@ -329,13 +329,13 @@ protected:
double range; // == 1+2*alpha
};
/** eoArithmeticCrossover --> uniform choice in hypercube
/** eoHypercubeCrossover --> uniform choice in hypercube
== arithmetical with different values for each coordinate
\class eoArithmeticCrossover eoRealOp.h Tutorial/eoRealOp.h
\ingroup parameteric
*/
template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
template<class EOT> class eoHypercubeCrossover: public eoQuadOp<EOT>
{
public:
/**
@ -347,7 +347,7 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
* 0 == contractive application
* Must be positive
*/
eoArithmeticCrossover(const double& _alpha = 0.0):
eoHypercubeCrossover(const double& _alpha = 0.0):
bounds(eoDummyVectorNoBounds), alpha(_alpha), range(1+2*_alpha)
{
if (_alpha < 0)
@ -362,7 +362,7 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
* 0 == contractive application
* Must be positive
*/
eoArithmeticCrossover(eoRealVectorBounds & _bounds,
eoHypercubeCrossover(eoRealVectorBounds & _bounds,
const double& _alpha = 0.0):
bounds(_bounds), alpha(_alpha), range(1+2*_alpha)
{
@ -371,10 +371,10 @@ template<class EOT> class eoArithmeticCrossover: public eoQuadOp<EOT>
}
/// 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 _eo2 The first parent
*/
@ -434,21 +434,21 @@ protected:
\ingroup parameteric
*/
template<class EOT> class eoRealUxOver: public eoQuadOp<EOT>
template<class EOT> class eoRealUXover: public eoQuadOp<EOT>
{
public:
/**
* (Default) Constructor.
* @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) )
runtime_error("UxOver --> invalid preference");
}
/// The class name.
virtual string className() const { return "eoRealUxOver"; }
virtual string className() const { return "eoRealUXover"; }
/**
* Uniform crossover for real vectors

View file

@ -130,10 +130,10 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
// 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>& crossStdevParam = _parser.createParam(string("Intermediate"), "crossStdev", "Recombination of mutation strategy parameters (Intermediate or Discrete)", 'S', "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");
// The pointers: first the atom Xover
eoBinOp<double> *ptObjAtomCross = NULL;
@ -142,22 +142,22 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
eoGenOp<EOT> *ptCross;
// check for the atom Xovers
if (crossObjParam.value() == string("Discrete"))
if (crossObjParam.value() == string("discrete"))
ptObjAtomCross = new eoRealAtomExchange;
else if (crossObjParam.value() == string("Intermediate"))
else if (crossObjParam.value() == string("intermediate"))
ptObjAtomCross = new eoRealAtomExchange;
else throw runtime_error("Invalid Object variable crossover type");
if (crossStdevParam.value() == string("Discrete"))
if (crossStdevParam.value() == string("discrete"))
ptStdevAtomCross = new eoRealAtomExchange;
else if (crossStdevParam.value() == string("Intermediate"))
else if (crossStdevParam.value() == string("intermediate"))
ptStdevAtomCross = new eoRealAtomExchange;
else throw runtime_error("Invalid mutation strategy parameter crossover type");
// and build the indi Xover
if (crossTypeParam.value() == string("Global"))
if (crossTypeParam.value() == string("global"))
ptCross = new eoEsGlobalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
else if (crossTypeParam.value() == string("Local"))
else if (crossTypeParam.value() == string("standard"))
ptCross = new eoEsLocalXover<EOT>(*ptObjAtomCross, *ptStdevAtomCross);
else throw runtime_error("Invalide Object variable crossover type");

View file

@ -131,19 +131,30 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
// the crossovers
/////////////////
// 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" );
// minimum check
if ( (segmentRateParam.value() < 0) )
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
if ( (arithmeticRateParam.value() < 0) )
throw runtime_error("Invalid arithmeticRate");
if ( (hypercubeRateParam.value() < 0) )
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
bool bCross = true;
if (segmentRateParam.value()+arithmeticRateParam.value()==0)
if (segmentRateParam.value()+hypercubeRateParam.value()+uxoverRateParam.value()==0)
{
cerr << "Warning: no crossover" << endl;
bCross = false;
@ -156,14 +167,19 @@ eoGenOp<EOT> & do_make_op(eoParameterLoader& _parser, eoState& _state, eoRealIni
if (bCross)
{
// segment crossover for bitstring - pass it the bounds
ptQuad = new eoSegmentCrossover<EOT>(*ptBounds);
ptQuad = new eoSegmentCrossover<EOT>(*ptBounds, alphaParam.value());
_state.storeFunctor(ptQuad);
ptCombinedQuadOp = new eoPropCombinedQuadOp<EOT>(*ptQuad, segmentRateParam.value());
// arithmetic crossover
ptQuad = new eoArithmeticCrossover<EOT>(*ptBounds);
// hypercube crossover
ptQuad = new eoHypercubeCrossover<EOT>(*ptBounds, alphaParam.value());
_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
_state.storeFunctor(ptCombinedQuadOp);

View file

@ -1,22 +1,9 @@
#include <ctime>
#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
{
/// The Global random number generator.
eoRng rng(random_seed());
eoRng rng(time(0));
}

View file

@ -288,9 +288,6 @@ extern eoRng 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.

View file

@ -25,6 +25,7 @@
//-----------------------------------------------------------------------------
#include <utils/eoParser.h>
#include <fstream.h>
#include <stdexcept>
/** Generation of the status file, and output of the help message if needed
*
@ -60,3 +61,40 @@ void make_help(eoParser & _parser)
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;
}

View file

@ -107,7 +107,7 @@ void main_function(int argc, char **argv)
//////////////////////////////////////
// CROSSOVER
// offspring(i) is a linear combination of parent(i)
eoArithmeticCrossover<Indi> xover;
eoSegmentCrossover<Indi> xover;
// MUTATION
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]
eoUniformMutation<Indi> mutation(EPSILON);

View file

@ -48,10 +48,10 @@ void main_function(int argc, char **argv)
const double EPSILON = 0.01; // range for real uniform mutation
double SIGMA = 0.3; // std dev. for normal mutation
// some parameters for chosing among different operators
const double segmentRate = 0.5; // relative weight for 1-pt Xover
const double arithmeticRate = 0.5; // relative weight for 2-pt Xover
const double uniformMutRate = 0.5; // relative weight for bit-flip mutation
const double detMutRate = 0.5; // relative weight for one-bit mutation
const double hypercubeRate = 0.5; // relative weight for hypercube Xover
const double segmentRate = 0.5; // relative weight for segment Xover
const double uniformMutRate = 0.5; // relative weight for uniform mutation
const double detMutRate = 0.5; // relative weight for det-uniform mutation
const double normalMutRate = 0.5; // relative weight for normal mutation
// GENERAL
@ -113,10 +113,10 @@ void main_function(int argc, char **argv)
// uniform chooce on segment made by the parents
eoSegmentCrossover<Indi> xoverS;
// uniform choice in hypercube built by the parents
eoArithmeticCrossover<Indi> xoverA;
eoHypercubeCrossover<Indi> xoverA;
// Combine them with relative weights
eoPropCombinedQuadOp<Indi> xover(xoverS, segmentRate);
xover.add(xoverA, arithmeticRate, true);
xover.add(xoverA, hypercubeRate, true);
// MUTATION
// offspring(i) uniformly chosen in [parent(i)-epsilon, parent(i)+epsilon]

View file

@ -1,4 +1,4 @@
SUBDIRS = Lesson1 Lesson2 Lesson3
SUBDIRS = Lesson1 Lesson2 Lesson3 Lesson4
all:
for i in $(SUBDIRS); do pushd $$i && $(MAKE) all; popd; done
@ -12,6 +12,9 @@ lesson2 :
lesson3 :
cd Lesson3; make
lesson4 :
cd Lesson4; make
#empty dist and distdir to let top-level 'make' do its job
dist :

View file

@ -98,14 +98,14 @@ SIGMA = 0.3;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // std dev.
for normal mutation</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;</b>// some parameters for chosing
among different operators</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;const double segmentRate = 0.5;&nbsp;&nbsp;&nbsp;
</b>// relative weight for 1-pt Xover</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;const double arithmeticRate = 0.5;
</b>// relative weight for 2-pt Xover</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;const double hypercubeRate = 0.5;&nbsp;&nbsp;&nbsp;
</b>// relative weight for hypercube Xover</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;const double segmentRate = 0.5;
</b>// relative weight for segment Xover</font></tt>
<br><tt><font color="#3366FF"><b>&nbsp;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>&nbsp;const double detMutRate = 0.5;&nbsp;&nbsp;&nbsp;&nbsp;
</b>// relative weight for one-bit mutation</font></tt>
</b>// relative weight for det-uniform mutation</font></tt>
<br><tt><font color="#3366FF">&nbsp;<b>const double normalMutRate = 0.5;</b>&nbsp;
// relative weight for normal mutation</font></tt></td>
</tr>
@ -214,12 +214,12 @@ made by the parents</font></tt>
<br><b><tt><font color="#993399">&nbsp;eoSegmentCrossover&lt;Indi> xoverS;</font></tt></b>
<br><tt><font color="#993399"><b>&nbsp;</b>// uniform choice in hypercube
built by the parents</font></tt>
<br><b><tt><font color="#993399">&nbsp;eoArithmeticCrossover&lt;Indi> xoverA;</font></tt></b>
<br><b><tt><font color="#993399">&nbsp;eoHypercubeCrossover&lt;Indi> xoverA;</font></tt></b>
<br><tt><font color="#993399"><b>&nbsp;</b>// Combine them with relative
weights</font></tt>
<br><b><tt><font color="#993399">&nbsp;eoPropCombinedQuadOp&lt;Indi> xover(xoverS,
segmentRate);</font></tt></b>
<br><b><tt><font color="#993399">&nbsp;xover.add(xoverA, arithmeticRate,
<br><b><tt><font color="#993399">&nbsp;xover.add(xoverA, hypercubeRate,
true);</font></tt></b></td>
</tr>
</table>

View file

@ -273,7 +273,7 @@ The actual code is in boldface and the comment in normal face.
<td>
<tt><font color="#993399">
<b> &nbsp;</b>// offspring(i) is a linear combination of parent(i)<br>
<b> &nbsp;eoArithmeticCrossover&lt;Indi> xover;</b><br>
<b> &nbsp;eoSegmentCrossover&lt;Indi> xover;</b><br>
</font></tt>
</td>
</tr>

View file

@ -223,7 +223,7 @@ continuator(MAX_GEN);</font></font></td>
<tr>
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoUniformMutation&lt;Indi>&nbsp;
mutation(EPSILON);</font></font>
<br><font face="Courier New,Courier"><font color="#CC33CC">eoArithmeticCrossover&lt;Indi>
<br><font face="Courier New,Courier"><font color="#CC33CC">eoSegmentCrossover&lt;Indi>
xover;</font></font></td>
<td BGCOLOR="#F0C6B7"><font face="Courier New,Courier"><font color="#CC33CC">eoBitMutation&lt;Indi>&nbsp;

View file

@ -259,8 +259,8 @@ bit, which is specific of the bit-flip mutation.&nbsp; Hence, to run the
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>
<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>
is the standard <font color="#CC33CC">arithmetic crossover</font> for real-valued
<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">segment crossover</font> for real-valued
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>
is the <font color="#CC33CC">uniform mutation</font> for real-valued vectors

View file

@ -172,8 +172,8 @@ on many problems.</font>
<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">
chooses one point uniformly on the segment joining the parents, while the
</font><font color="#CC33CC">eoArithmeticCrossover</font><font color="#000000">
performs a segment crossover on each coordinate independently, which amount
</font><font color="#CC33CC">eoHypercubeCrossover</font><font color="#000000">
performs a linear combination on each coordinate independently, which amount
to choosing the offspring uniformly in the hypercube whose diagonal is
the segment joining the parents.</font>
<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
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 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>
<p><a NAME="Exercise3"></a><b><font size=+2><font color="#000099">Exercise
3:&nbsp; </font><font color="#FF0000">full selection/replacement</font></font></b>

View file

@ -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
out the rest of the line) in the file are those that were not specified
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
parameters</font></b>
<br><font color="#000000">The parameters are organized in sections. In
what follows, the fixed font colored text is directly taken from the status
file and is commented between the lines.</font>
<br>
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
<br><font color="#000000">In what follows, the fixed font colored text
is directly taken from the status file and is commented between the lines.
The presentation follows the status file format - only two sections are
representation-dependent (see the corresponding <a href="#binary">binary</a>
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">######
General ######</font></tt></font></b>
<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
again. There is </font><font color="#FF0000">no default value ("true" random
seed)</font><font color="#000000">.</font>
<br>
<hr ALIGN=LEFT SIZE=3 WIDTH="30%">
<br><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#3333FF">######
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">######
<p>
<hr SIZE=5 WIDTH="30%">
<p><b><font size=+1><font color="#FF0000">Section </font><tt><font color="#009900">######
engine ######</font></tt></font></b>
<br><font color="#000000">In this section, one chooses all components of
the <a href="eoEngine.html">Evolution Engine</a> (selection, replacemenet
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>
<br><font color="#FF0000">String parameter:</font><font color="#000000">
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
parent replaces the worst offspring). </font><font color="#FF0000">Default
is false.</font>
<p><b><font color="#000099"><font size=+1>User's guide:</font></font><font color="#FF0000">
Bistring specific parameters</font></b>
<p>
<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>&nbsp;
<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">######&nbsp;&nbsp;&nbsp;
Genotype Initialization&nbsp;&nbsp;&nbsp; ######</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">######&nbsp;&nbsp;&nbsp;
Variation Operators&nbsp;&nbsp;&nbsp; ######</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&nbsp; </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&nbsp; </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>&nbsp;
<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&lt;double></font></b>.
<br><b><tt><font color="#993300"><font size=+1>RealEA</font></font></tt></b>&nbsp;
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&lt;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">######&nbsp;&nbsp;&nbsp;
Genotype Initialization&nbsp;&nbsp;&nbsp; ######</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&lt;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.&nbsp; 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">######&nbsp;&nbsp;&nbsp;
Variation Operators&nbsp;&nbsp;&nbsp; ######</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&nbsp; </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&lt;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">######&nbsp;&nbsp;&nbsp;&nbsp;
ES mutation&nbsp;&nbsp;&nbsp; ######</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">######&nbsp;&nbsp;&nbsp;
Variation Operators&nbsp;&nbsp;&nbsp; ######</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">&nbsp;
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">&nbsp;
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&nbsp; crossover performs
a linear combination of parents;variables - it si similar to the hypercube
crossover described for&nbsp; 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">&nbsp;
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%">
<br><a NAME="programmerguide"></a><b><font color="#000099"><font size=+2>Programmer's
guide

View file

@ -17,9 +17,9 @@ and to</font></b></center>
<h1>
<font color="#FF0000">EO Tutorial</font></h1></center>
<center><font color="#FF0000">Version 0.95 - May. 2 2001</font>
<br><b><font color="#FF6600">New</font></b>: <a href="eoLesson4.html">Lesson4</a>
- with user guide of fully operational program</center>
<center><font color="#FF0000">Version 0.95 - May. 4 2001</font>
<br><b><font color="#FF6600"><blink>New</blink></font></b>: <a href="eoLesson4.html">Lesson4</a>
- 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>Please note that <b><font color="#FF6600">this tutorial is not supposed