diff --git a/eo/src/eoVariableLengthCrossover.h b/eo/src/eoVariableLengthCrossover.h index db569625..6a4bf787 100644 --- a/eo/src/eoVariableLengthCrossover.h +++ b/eo/src/eoVariableLengthCrossover.h @@ -18,10 +18,8 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Contact: todos@geneura.ugr.es, http://geneura.ugr.es - Marc.Schoenauer@polytechnique.fr - mak@dhi.dk - CVS Info: $Date: 2003-03-21 02:38:57 $ $Header: /home/nojhan/dev/eodev/eodev_cvs/eo/src/eoVariableLengthCrossover.h,v 1.9 2003-03-21 02:38:57 maartenkeijzer Exp $ $Author: maartenkeijzer $ + Contact: Marc.Schoenauer@polytechnique.fr + mkeijzer@cs.vu.nl */ //----------------------------------------------------------------------------- @@ -43,20 +41,23 @@ template class eoAtomExchange : public eoBF { public: - // a function to initlialize - to be called before every crossover + /** a function to initlialize - to be called before every crossover */ virtual void randomize(unsigned int, unsigned int){} + /** the inherited className() */ virtual std::string className() const=0; }; -/** Uniform crossover - well, not really for FixedLength */ +/** Uniform crossover - well, not really, efficient for FixedLength */ template class eoUniformAtomExchange: public eoAtomExchange { public: eoUniformAtomExchange(double _rate=0.5):rate(_rate){} - // randomize: fill the mask: the exchange will be simulated first - // to see if sizes are OK, so it must be repeatable + /** randomize: fill the mask: the exchange will be simulated first + * to see if sizes are OK, so it must be repeatable : + * the mask has to be a private data, cannot be computed on the fly + */ void randomize(unsigned _size1, unsigned _size2) { mask.resize(_size1 + _size2); @@ -64,12 +65,13 @@ public: mask[i]=eo::rng.flip(rate); } - // the operator() simply returns the mask booleans in turn + /** the operator() simply returns the mask booleans in turn */ bool operator()(unsigned _i, Atom & ) { return mask[_i]; } + /** inherited className() */ virtual std::string className() const {return "eoUniformAtomExchange";} private: @@ -77,10 +79,12 @@ private: std::vector mask; }; +///////////////////////////////////////////////////////////////////// +////// Now the operators themsleves +///////////////////////////////////////////////////////////////////// /** Exchange Crossover using an AtomExchange */ - template class eoVlAtomExchangeQuadOp : public eoQuadOp { @@ -88,7 +92,7 @@ public : typedef typename EOT::AtomType AtomType; - // default ctor: requires bounds on number of genes + a rate + /** default ctor: requires bounds on number of genes + a rate */ eoVlAtomExchangeQuadOp(unsigned _Min, unsigned _Max, eoAtomExchange& _atomExchange): Min(_Min), Max(_Max), atomExchange(_atomExchange) {} @@ -148,6 +152,7 @@ public : return true; // should we test that? Yes, but no time now } + /** the inherited className */ virtual std::string className() const { #ifdef HAVE_SSTREAM @@ -155,7 +160,6 @@ public : os << "eoVlAtomExchangeQuadOp(" << atomExchange.className() << ")"; return os.str() #else - char s[1024]; std::ostrstream os(s, 1022); os << "eoVlAtomExchangeQuadOp(" << atomExchange.className() << ")" << std::ends; @@ -168,9 +172,9 @@ private: eoAtomExchange & atomExchange; }; -/** Crossover using an AtomCrossover (probably irrelevant in Variable Length) +/** Crossover using an AtomCrossover. Probably irrelevant in Variable Length - + see eoFlOrBinOp.h and eoFlOrQuadOp.h for the similar Fixed Length operators */ - template class eoInnerExchangeQuadOp : public eoQuadOp { @@ -178,10 +182,11 @@ public : typedef typename EOT::AtomType AtomType; - // default ctor: requires bounds on number of genes + a rate + /** default ctor: requires bounds on number of genes + a rate */ eoInnerExchangeQuadOp( eoQuadOp& _op, float _rate = 0.5): op(_op), rate( _rate ) {} + /** performs the Atom crossover */ bool operator()(EOT & _eo1, EOT & _eo2) { unsigned size1 = _eo1.size(), size2 = _eo2.size(), minsize = ( size1 > size2)?size2:size1; @@ -210,7 +215,7 @@ private: -/** Direct Uniform Exchange of genes (obsolete, already :-) +/** Direct Uniform Exchange of genes (obsolete, already :-) stays there for historical reasons A very primitive version, that does no verification at all!!! NEEDS to be improved - but no time now :-((( diff --git a/eo/src/eoVariableLengthMutation.h b/eo/src/eoVariableLengthMutation.h index 30b1d3b0..2a17da68 100644 --- a/eo/src/eoVariableLengthMutation.h +++ b/eo/src/eoVariableLengthMutation.h @@ -2,7 +2,7 @@ //----------------------------------------------------------------------------- // eoVariableLengthMutation.h -// (c) GeNeura Team, 2000 - EEAAX 1999 - Maarten Keijzer 2000 +// (c) Marc Schoenauer 1999 - Maarten Keijzer 2000 /* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -18,10 +18,8 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Contact: todos@geneura.ugr.es, http://geneura.ugr.es - Marc.Schoenauer@polytechnique.fr - mak@dhi.dk - CVS Info: $Date: 2003-03-21 02:38:57 $ $Version$ $Author: maartenkeijzer $ + Contact: Marc.Schoenauer@polytechnique.fr + mkeijzer@cs.vu.nl */ //----------------------------------------------------------------------------- @@ -61,6 +59,7 @@ public : eoVlAddMutation(unsigned _nMax, eoInit & _atomInit) : nMax(_nMax), atomInit(_atomInit) {} + /** operator: actually adds an Atom */ bool operator()(EOT & _eo) { if (_eo.size() >= nMax) @@ -72,6 +71,7 @@ public : return true; } + /** inherited className */ virtual std::string className() const { return "eoVlAddMutation"; } private: @@ -79,6 +79,7 @@ private: eoInit & atomInit; }; + /** A helper class for choosing which site to delete */ template class eoGeneDelChooser : public eoUF @@ -120,7 +121,7 @@ public : eoVlDelMutation(unsigned _nMin, eoGeneDelChooser & _chooser) : nMin(_nMin), uChooser(), chooser(_chooser) {} - /** ctor with uniform gene chooser + /** ctor with uniform gene chooser - the default * @param nMin min number of atoms to leave in the individual */