From e2e6ad8c9999edbf4ad3af70dcbd41fe571ac2a0 Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Thu, 26 Jul 2012 13:48:40 +0200 Subject: [PATCH] MPI Multistart: renamed default functors and added a few default functors. --- eo/test/mpi/t-mpi-multistart.cpp | 47 ++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/eo/test/mpi/t-mpi-multistart.cpp b/eo/test/mpi/t-mpi-multistart.cpp index da736fab..cd9a28f4 100644 --- a/eo/test/mpi/t-mpi-multistart.cpp +++ b/eo/test/mpi/t-mpi-multistart.cpp @@ -319,6 +319,7 @@ class MultiStart : public OneShotJob< MultiStartData< EOT > > }; template +// No seeds! Use default generator struct DummyGetSeeds : public MultiStartStore::GetSeeds { std::vector operator()( int n ) @@ -327,9 +328,43 @@ struct DummyGetSeeds : public MultiStartStore::GetSeeds } }; +template +// Multiple of a seed +struct MultiplesOfNumber : public MultiStartStore::GetSeeds +{ + MultiplesOfNumber ( int n = 0 ) + { + while( n == 0 ) + { + n = eo::rng.rand(); + } + _seed = n; + _i = 0; + } + + std::vector operator()( int n ) + { + std::vector ret; + for( unsigned int i = 0; i < n; ++i ) + { + ret.push_back( (++_i) * _seed ); + } + } + + private: + + unsigned int _seed; + unsigned int _i; +}; + template struct GetRandomSeeds : public MultiStartStore::GetSeeds { + GetRandomSeeds( int seed ) + { + eo::rng.reseed( seed ); + } + std::vector operator()( int n ) { std::vector ret; @@ -341,9 +376,9 @@ struct GetRandomSeeds : public MultiStartStore::GetSeeds }; template -struct ReinitMultiEA : public MultiStartStore::ReinitJob +struct RecopyPopEA : public MultiStartStore::ReinitJob { - ReinitMultiEA( const eoPop& pop, eoEvalFunc& eval ) : _originalPop( pop ), _eval( eval ) + RecopyPopEA( const eoPop& pop, eoEvalFunc& eval ) : _originalPop( pop ), _eval( eval ) { // empty } @@ -363,9 +398,9 @@ struct ReinitMultiEA : public MultiStartStore::ReinitJob }; template -struct ResetAlgoEA : public MultiStartStore::ResetAlgo +struct ResetGenContinueEA: public MultiStartStore::ResetAlgo { - ResetAlgoEA( eoGenContinue & continuator ) : + ResetGenContinueEA( eoGenContinue & continuator ) : _continuator( continuator ), _initial( continuator.totalGenerations() ) { @@ -503,8 +538,8 @@ int main(int argc, char **argv) MultiStartStore< Indi > store( gga, DEFAULT_MASTER, - *new ReinitMultiEA< Indi >( pop, eval ), - *new ResetAlgoEA< Indi >( continuator ), + *new RecopyPopEA< Indi >( pop, eval ), + *new ResetGenContinueEA< Indi >( continuator ), *new DummyGetSeeds< Indi >()); MultiStart< Indi > msjob( assignmentAlgo, DEFAULT_MASTER, store, 5 );