00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _eoScalarFitnessStat_h
00028 #define _eoScalarFitnessStat_h
00029
00030 #include <utils/eoRealVectorBounds.h>
00031 #include <utils/eoStat.h>
00032
00036 template <class EOT, class FitT = typename EOT::Fitness>
00037 class eoScalarFitnessStat : public eoSortedStat<EOT, std::vector<double> >
00038 {
00039 public:
00040
00041 using eoSortedStat<EOT, std::vector<double> >::value;
00042
00043 eoScalarFitnessStat(std::string _description = "FitnessES",
00044 eoRealVectorBounds & _bounds = eoDummyVectorNoBounds)
00045 : eoSortedStat<EOT, std::vector<double> >(std::vector<double>(0), _description),
00046 range(*_bounds[0])
00047 {}
00048
00049 virtual void operator()(const std::vector<const EOT*>& _popPters)
00050 {
00051 value().resize(_popPters.size());
00052 for (unsigned i=0; i<_popPters.size(); i++)
00053 {
00054 value()[i] = _popPters[i]->fitness();
00055 range.truncate(value()[i]);
00056 }
00057 }
00058
00059 private :
00060 eoRealBounds & range;
00061 };
00062
00063 #endif