eoRealBoundModifier.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
00002 
00003 //-----------------------------------------------------------------------------
00004 // eoRealBoundModifier.h
00005 // (c) OPAC 2007
00006 /*
00007     Contact: paradiseo-help@lists.gforge.inria.fr
00008  */
00009 //-----------------------------------------------------------------------------
00010 
00011 #ifndef EOREALBOUNDMODIFIER_H
00012 #define EOREALBOUNDMODIFIER_H
00013 
00014 //-----------------------------------------------------------------------------
00015 #include <eoFunctor.h>
00016 #include <utils/eoRealVectorBounds.h>
00017 //-----------------------------------------------------------------------------
00018 
00023 class eoRealBoundModifier: public eoBF < eoRealBaseVectorBounds &,unsigned,void > {};
00024 
00025 
00029 class eoDummyRealBoundModifier: public eoRealBoundModifier
00030 {
00031 public:
00032 
00033     eoDummyRealBoundModifier (){}
00034 
00035     void operator() (eoRealBaseVectorBounds & _bnds,unsigned _i){}
00036 };
00037 
00038 
00039 
00049 class eoExpDecayingBoundModifier: public eoRealBoundModifier
00050 {
00051 public:
00052         
00059     eoExpDecayingBoundModifier (unsigned _stopCriteria,
00060                                 double _alpha,
00061                                 eoValueParam<unsigned> & _genCounter):
00062                                                 stopCriteria(_stopCriteria),
00063                                                         alpha(_alpha),
00064                                                 genCounter(_genCounter){}
00065             
00066             
00067     void operator() (eoRealBaseVectorBounds & _bnds,unsigned _i)
00068     {
00069         double newMaxBound=(1-pow((double)genCounter.value()/stopCriteria,alpha))*_bnds.maximum(_i);
00070 
00071         // should delete the old eoRealBounds ?
00072         _bnds[_i]=new eoRealInterval(_bnds.minimum(_i),std::max(_bnds.minimum(_i),newMaxBound));
00073     }
00074 
00075 
00076 protected:
00077     unsigned stopCriteria;
00078     double alpha;
00079     eoValueParam<unsigned> & genCounter;
00080 
00081 };
00082 
00083 #endif/*EOREALBOUNDMODIFIER_H*/

Generated on Fri Jun 22 10:17:02 2007 for EO-PSO by  doxygen 1.4.7