From 116f21f182d3215acc78dcc6f2697de22828ebe5 Mon Sep 17 00:00:00 2001 From: evomarc Date: Mon, 2 Jan 2006 14:09:22 +0000 Subject: [PATCH] Changed some bug in never-used-except-in-make_algo_easea.h file (probably some change in the compiler made this stop working ???) --- eo/src/eoReduceSplit.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/eo/src/eoReduceSplit.h b/eo/src/eoReduceSplit.h index 79a4637a..62a6f142 100644 --- a/eo/src/eoReduceSplit.h +++ b/eo/src/eoReduceSplit.h @@ -221,7 +221,8 @@ public: } /** Performs repeated inverse_deterministic_tournament on the pop */ - void operator()(eoPop& _newgen, unsigned _newsize) + void operator()(eoPop& _newgen, eoPop & _eliminated) + // BUG??? void operator()(eoPop& _newgen, unsigned _newsize) { unsigned popSize = _newgen.size(); unsigned eliminated = howMany(popSize); @@ -276,15 +277,30 @@ public: } /** Performs repeated inverse_stochastic_tournament on the pop */ - void operator()(eoPop& _newgen, unsigned _newsize) + void operator()(eoPop& _newgen, eoPop & _eliminated) + //BUG??? void operator()(eoPop& _newgen, unsigned _newsize) { + /* old version if (!_eliminated.size()) // nothing to do return; unsigned oldSize = _newgen.size(); unsigned newSize = oldSize - _eliminated.size(); + unsigned eliminated = howMany(popSize); if (newSize < 0) throw std::logic_error("eoStochTournamentTruncateSplit: Cannot truncate to a larger size!\n"); +end of old version */ + + unsigned popSize = _newgen.size(); + unsigned eliminated = howMany(popSize); + if (!eliminated) // nothing to do + return ; + unsigned newsize = popSize - eliminated; + if (newsize < 0) + throw std::logic_error("eoDetTournamentTruncateSplit: Cannot truncate to a larger size!\n"); + + + _eliminated.reserve(_eliminated.size()+eliminated); //in case not empty? for (unsigned i=0; i<_eliminated.size(); i++) {