From 08754eeaee2caad86294e7a8c4b4bcfd0dde8b93 Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Mon, 30 Aug 2010 16:20:55 +0200 Subject: [PATCH] fixed a bug with using of replacor, it didnt reduce the fitness --- src/doEDASA.h | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/doEDASA.h b/src/doEDASA.h index ae2e39cd9..b8c947068 100644 --- a/src/doEDASA.h +++ b/src/doEDASA.h @@ -54,7 +54,7 @@ public: eoSelectOne< EOT > & selectone, doModifierMass< D > & modifier, doSampler< D > & sampler, - eoContinue< EOT > & monitoring_continue, + // eoContinue< EOT > & monitoring_continue, eoContinue< EOT > & pop_continue, doContinue< D > & distribution_continue, eoEvalFunc < EOT > & evaluation, @@ -68,7 +68,7 @@ public: _selectone(selectone), _modifier(modifier), _sampler(sampler), - _monitoring_continue(monitoring_continue), + // _monitoring_continue(monitoring_continue), _pop_continue(pop_continue), _distribution_continue(distribution_continue), _evaluation(evaluation), @@ -91,7 +91,7 @@ public: double temperature = _initial_temperature; - eoPop< EOT > current_pop = pop; + eoPop< EOT > current_pop; eoPop< EOT > selected_pop; @@ -111,19 +111,12 @@ public: do { - if (pop != current_pop) - { - _replacor(pop, current_pop); - } - - current_pop.clear(); - selected_pop.clear(); - - //------------------------------------------------------------- // (3) Selection of the best points in the population //------------------------------------------------------------- + selected_pop.clear(); + _selector(pop, selected_pop); assert( selected_pop.size() > 0 ); @@ -172,6 +165,8 @@ public: // Building of the sampler in current_pop //------------------------------------------------------------- + current_pop.clear(); + do { EOT candidate_solution = _sampler(distrib); @@ -191,12 +186,18 @@ public: } while ( _sa_continue( current_solution) ); + //selected_pop.sort(); + + _replacor(pop, current_pop); + + if ( ! _cooling_schedule( temperature ) ){ eo::log << eo::debug << "_cooling_schedule" << std::endl; break; } + + if ( ! _distribution_continue( distrib ) ){ eo::log << eo::debug << "_distribution_continue" << std::endl; break; } + + if ( ! _pop_continue( pop ) ){ eo::log << eo::debug << "_pop_continue" << std::endl; break; } + } - while ( _cooling_schedule( temperature ) && - _distribution_continue( distrib ) && - _pop_continue( current_pop ) && - _monitoring_continue( selected_pop ) - ); + while ( 1 ); } private: @@ -217,7 +218,7 @@ private: doSampler< D > & _sampler; //! A EOT monitoring continuator - eoContinue < EOT > & _monitoring_continue; + // eoContinue < EOT > & _monitoring_continue; //! A EOT population continuator eoContinue < EOT > & _pop_continue;