From 0dca473aac7581aaa36a4c458840541e25f92eee Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Fri, 3 Aug 2012 11:42:44 +0200 Subject: [PATCH] MPI Multistart: using pop_eval functions instead of eval functions for resetters. --- eo/src/mpi/eoMultiStart.h | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/eo/src/mpi/eoMultiStart.h b/eo/src/mpi/eoMultiStart.h index e4665c51..095bc446 100644 --- a/eo/src/mpi/eoMultiStart.h +++ b/eo/src/mpi/eoMultiStart.h @@ -419,7 +419,19 @@ namespace eo eoEvalFunc& eval) : _continuator( continuator ), _originalPop( originalPop ), - _eval( eval ) + _pop_eval( eval ) + { + // empty + } + + ReuseOriginalPopEA( + eoCountContinue & continuator, + const eoPop& originalPop, + eoPopEvalFunc& pop_eval + ) : + _continuator( continuator ), + _originalPop( originalPop ), + _pop_eval( pop_eval ) { // empty } @@ -427,17 +439,14 @@ namespace eo void operator()( eoPop& pop ) { pop = _originalPop; // copies the original population - for(unsigned i = 0, size = pop.size(); i < size; ++i) - { - _eval( pop[i] ); - } + _pop_eval( pop, pop ); _continuator.reset(); } private: eoCountContinue & _continuator; const eoPop& _originalPop; - eoEvalFunc& _eval; + eoPopEvalFunc& _pop_eval; }; /** @@ -469,6 +478,18 @@ namespace eo } } + ReuseSamePopEA( + eoCountContinue& continuator, + const eoPop& originalPop, + eoPopEvalFunc& pop_eval + ) : + _continuator( continuator ), + _originalPop( originalPop ), + _firstTime( true ) + { + pop_eval( _originalPop, _originalPop ); + } + void operator()( eoPop& pop ) { if( _firstTime )