MPI Multistart: using pop_eval functions instead of eval functions for resetters.

This commit is contained in:
Benjamin Bouvier 2012-08-03 11:42:44 +02:00
commit 0dca473aac

View file

@ -419,7 +419,19 @@ namespace eo
eoEvalFunc<EOT>& eval) : eoEvalFunc<EOT>& eval) :
_continuator( continuator ), _continuator( continuator ),
_originalPop( originalPop ), _originalPop( originalPop ),
_eval( eval ) _pop_eval( eval )
{
// empty
}
ReuseOriginalPopEA(
eoCountContinue<EOT> & continuator,
const eoPop<EOT>& originalPop,
eoPopEvalFunc<EOT>& pop_eval
) :
_continuator( continuator ),
_originalPop( originalPop ),
_pop_eval( pop_eval )
{ {
// empty // empty
} }
@ -427,17 +439,14 @@ namespace eo
void operator()( eoPop<EOT>& pop ) void operator()( eoPop<EOT>& pop )
{ {
pop = _originalPop; // copies the original population pop = _originalPop; // copies the original population
for(unsigned i = 0, size = pop.size(); i < size; ++i) _pop_eval( pop, pop );
{
_eval( pop[i] );
}
_continuator.reset(); _continuator.reset();
} }
private: private:
eoCountContinue<EOT> & _continuator; eoCountContinue<EOT> & _continuator;
const eoPop<EOT>& _originalPop; const eoPop<EOT>& _originalPop;
eoEvalFunc<EOT>& _eval; eoPopEvalFunc<EOT>& _pop_eval;
}; };
/** /**
@ -469,6 +478,18 @@ namespace eo
} }
} }
ReuseSamePopEA(
eoCountContinue<EOT>& continuator,
const eoPop<EOT>& originalPop,
eoPopEvalFunc<EOT>& pop_eval
) :
_continuator( continuator ),
_originalPop( originalPop ),
_firstTime( true )
{
pop_eval( _originalPop, _originalPop );
}
void operator()( eoPop<EOT>& pop ) void operator()( eoPop<EOT>& pop )
{ {
if( _firstTime ) if( _firstTime )