diff --git a/trunk/paradiseo-peo/src/peoPSOSelect.h b/trunk/paradiseo-peo/src/peoPSOSelect.h index 1163f0415..160d3d786 100644 --- a/trunk/paradiseo-peo/src/peoPSOSelect.h +++ b/trunk/paradiseo-peo/src/peoPSOSelect.h @@ -39,24 +39,21 @@ #include #include -template class peoPSOSelect: public eoSelectOne +template class peoPSOSelect: public eoSelectOne { public: - typedef typename PO < EOT >::Fitness Fitness; + peoPSOSelect(eoTopology < POT > & _topology):topology(_topology){} + + typedef typename PO < POT >::Fitness Fitness; - virtual const EOT& operator()(const eoPop& _pop) + virtual const POT& operator()(const eoPop& _pop) { - unsigned ind=0; - double best=_pop[0].best(); - for(unsigned i=1;i<_pop.size();i++) - if(_pop[i].best() > best) - { - ind=i; - best=_pop[i].best(); - } - return _pop[ind]; + return topology.globalBest(_pop); } + + private: + eoTopology < POT > & topology; }; #endif