From 8ff63ff776a2ce01fbcb340322b456db715056e3 Mon Sep 17 00:00:00 2001 From: jmerelo Date: Wed, 21 Mar 2001 13:35:10 +0000 Subject: [PATCH] Added a new xover to varlenxover --- eo/src/eoVariableLengthCrossover.h | 32 +++++++++++++++++++++++++++++- eo/src/utils/eoParser.h | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/eo/src/eoVariableLengthCrossover.h b/eo/src/eoVariableLengthCrossover.h index be7d4b88..304583a2 100644 --- a/eo/src/eoVariableLengthCrossover.h +++ b/eo/src/eoVariableLengthCrossover.h @@ -21,7 +21,7 @@ Contact: todos@geneura.ugr.es, http://geneura.ugr.es Marc.Schoenauer@polytechnique.fr mak@dhi.dk - CVS Info: $Date: 2001-03-21 13:09:47 $ $Header: /home/nojhan/dev/eodev/eodev_cvs/eo/src/eoVariableLengthCrossover.h,v 1.5 2001-03-21 13:09:47 jmerelo Exp $ $Author: jmerelo $ + CVS Info: $Date: 2001-03-21 13:35:09 $ $Header: /home/nojhan/dev/eodev/eodev_cvs/eo/src/eoVariableLengthCrossover.h,v 1.6 2001-03-21 13:35:09 jmerelo Exp $ $Author: jmerelo $ */ //----------------------------------------------------------------------------- @@ -147,6 +147,36 @@ private: unsigned Min, Max; eoAtomExchange & atomExchange; }; +/** Exchange Crossover using an AtomExchange + */ + +template +class eoInnerExchangeQuadOp : public eoQuadOp +{ +public : + + typedef typename EOT::AtomType AtomType; + + // default ctor: requires bounds on number of genes + a rate + eoInnerExchangeQuadOp( eoQuadOp& _op, float _rate = 0.5): + op(_op), rate( _rate ) {} + + bool operator()(EOT & _eo1, EOT & _eo2) + { + unsigned size1 = _eo1.size(), size2 = _eo2.size(), minsize = ( size1 > size2)?size2:size1; + bool changed = false; + for ( unsigned i = 0; i < minsize; i ++ ) { + if ( rng.flip( rate ) ) { + bool changedHere = op( _eo1[i], _eo2[i] ); + changed |= changedHere; + } + } + return changed; // should we test that? Yes, but no time now + } +private: + float rate; + eoQuadOp & op; +}; diff --git a/eo/src/utils/eoParser.h b/eo/src/utils/eoParser.h index 2127eb6a..7edf8e93 100644 --- a/eo/src/utils/eoParser.h +++ b/eo/src/utils/eoParser.h @@ -24,7 +24,7 @@ */ //----------------------------------------------------------------------------- /** -CVS Info: $Date: 2001-02-13 22:35:07 $ $Header: /home/nojhan/dev/eodev/eodev_cvs/eo/src/utils/eoParser.h,v 1.7 2001-02-13 22:35:07 jmerelo Exp $ $Author: jmerelo $ $Log$ +CVS Info: $Date: 2001-03-21 13:35:10 $ $Version$ $Author: jmerelo $ */ #ifndef eoParser_h #define eoParser_h