MPI Multistart: using eoCountContinue in resetAlgo functors instead of eoGenContinue.

This commit is contained in:
Benjamin Bouvier 2012-07-26 15:13:36 +02:00
commit 2ca5483f5d
2 changed files with 8 additions and 11 deletions

View file

@ -219,10 +219,9 @@ namespace eo
struct ReuseOriginalPopEA: public MultiStartStore<EOT>::ResetAlgo struct ReuseOriginalPopEA: public MultiStartStore<EOT>::ResetAlgo
{ {
ReuseOriginalPopEA( ReuseOriginalPopEA(
eoGenContinue<EOT> & continuator, eoCountContinue<EOT> & continuator,
const eoPop<EOT>& originalPop, const eoPop<EOT>& originalPop,
eoEvalFunc<EOT>& eval) : eoEvalFunc<EOT>& eval) :
_initial( continuator.totalGenerations() ),
_continuator( continuator ), _continuator( continuator ),
_originalPop( originalPop ), _originalPop( originalPop ),
_eval( eval ) _eval( eval )
@ -237,12 +236,11 @@ namespace eo
{ {
_eval( pop[i] ); _eval( pop[i] );
} }
_continuator.totalGenerations( _initial ); _continuator.reset();
} }
private: private:
unsigned int _initial; eoCountContinue<EOT> & _continuator;
eoGenContinue<EOT> & _continuator;
const eoPop<EOT>& _originalPop; const eoPop<EOT>& _originalPop;
eoEvalFunc<EOT>& _eval; eoEvalFunc<EOT>& _eval;
}; };
@ -251,14 +249,13 @@ namespace eo
struct ReuseSamePopEA : public MultiStartStore<EOT>::ResetAlgo struct ReuseSamePopEA : public MultiStartStore<EOT>::ResetAlgo
{ {
ReuseSamePopEA( ReuseSamePopEA(
eoGenContinue<EOT>& continuator, eoCountContinue<EOT>& continuator,
const eoPop<EOT>& originalPop, const eoPop<EOT>& originalPop,
eoEvalFunc<EOT>& eval eoEvalFunc<EOT>& eval
) : ) :
_continuator( continuator ), _continuator( continuator ),
_originalPop( originalPop ), _originalPop( originalPop ),
_firstTime( true ), _firstTime( true )
_initial( continuator.totalGenerations() )
{ {
for( unsigned i = 0, size = originalPop.size(); for( unsigned i = 0, size = originalPop.size();
i < size; ++i ) i < size; ++i )
@ -274,15 +271,14 @@ namespace eo
pop = _originalPop; pop = _originalPop;
_firstTime = false; _firstTime = false;
} }
_continuator.totalGenerations( _initial ); _continuator.reset();
} }
protected: protected:
eoGenContinue<EOT>& _continuator; eoCountContinue<EOT>& _continuator;
eoPop<EOT> _originalPop; eoPop<EOT> _originalPop;
bool _firstTime; bool _firstTime;
int _initial;
}; };
template< class EOT > template< class EOT >

View file

@ -162,6 +162,7 @@ int main(int argc, char **argv)
///////////////////////////////////// /////////////////////////////////////
// stop after MAX_GEN generations // stop after MAX_GEN generations
eoGenContinue<Indi> continuator(MAX_GEN); eoGenContinue<Indi> continuator(MAX_GEN);
// eoSteadyFitContinue< Indi > continuator( 10, 50 );
// GENERATION // GENERATION
///////////////////////////////////////// /////////////////////////////////////////