00001 00020 #ifndef _LOCALSEARCH_H 00021 00022 #define _LOCALSEARCH_H 1 00023 00024 #include "ilocalsearch.h" 00025 00029 namespace realea { 00030 00031 namespace internal { 00032 00040 class NewIndividualLocalSearchManager: public IReset { 00041 public: 00045 NewIndividualLocalSearchManager(ILocalSearch *ls); 00046 00050 void reset(void); 00051 00068 virtual bool applyNewSol(tChromosomeReal &sol, tFitness *pfitness, ILSParameters *params=NULL) = 0; 00069 00073 virtual ~NewIndividualLocalSearchManager(void); 00074 protected: 00075 ILocalSearch *m_ls; 00076 }; 00077 00083 class RatioLocalSearchManager : public NewIndividualLocalSearchManager { 00084 public: 00092 RatioLocalSearchManager(ILocalSearch *ls, unsigned intensity, double porcen=0.0625); 00093 00098 void setRandom(Random *random); 00099 00100 00101 00114 bool applyNewSol(tChromosomeReal &sol, tFitness *pfitness, ILSParameters *params=NULL); 00115 00116 00117 private: 00118 00123 unsigned getIntensity(void); 00124 00125 00126 Random *m_random; 00127 double m_ratio; 00129 unsigned m_intensity; 00130 bool m_configured; 00131 }; 00132 00133 }} 00134 00135 #endif