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 #ifndef _EOSYNCEASYPSO_H
00026 #define _EOSYNCEASYPSO_H
00027
00028
00029 #include <eoContinue.h>
00030 #include <eoPopEvalFunc.h>
00031 #include <eoPSO.h>
00032 #include <eoVelocity.h>
00033 #include <eoFlight.h>
00034
00035
00045 template < class POT > class eoSyncEasyPSO:public eoPSO < POT >
00046 {
00047 public:
00048
00057 eoSyncEasyPSO (
00058 eoInitializerBase <POT> &_init,
00059 eoContinue < POT > &_continuator,
00060 eoEvalFunc < POT > &_eval,
00061 eoVelocity < POT > &_velocity,
00062 eoFlight < POT > &_flight):
00063 init(_init),
00064 continuator (_continuator),
00065 eval (_eval),
00066 loopEval(_eval),
00067 popEval(loopEval),
00068 velocity (_velocity),
00069 flight (_flight)
00070 {}
00071
00072
00079 eoSyncEasyPSO (
00080 eoInitializerBase <POT> &_init,
00081 eoContinue < POT > &_continuator,
00082 eoEvalFunc < POT > &_eval,
00083 eoVelocity < POT > &_velocity):
00084 init(_init),
00085 continuator (_continuator),
00086 eval (_eval),
00087 loopEval(_eval),
00088 popEval(loopEval),
00089 velocity (_velocity),
00090 flight (dummyFlight)
00091 {}
00092
00100 eoSyncEasyPSO (
00101 eoInitializerBase <POT> &_init,
00102 eoContinue < POT > &_continuator,
00103 eoPopEvalFunc < POT > &_eval,
00104 eoVelocity < POT > &_velocity,
00105 eoFlight <POT> &_flight):
00106 init(_init),
00107 continuator (_continuator),
00108 eval (dummyEval),
00109 loopEval(dummyEval),
00110 popEval(_eval),
00111 velocity (_velocity),
00112 flight (_flight)
00113 {}
00114
00115
00123 eoSyncEasyPSO (
00124 eoContinue < POT > &_continuator,
00125 eoEvalFunc < POT > &_eval,
00126 eoVelocity < POT > &_velocity,
00127 eoFlight < POT > &_flight):
00128 init(dummyInit),
00129 continuator (_continuator),
00130 eval (_eval),
00131 loopEval(_eval),
00132 popEval(loopEval),
00133 velocity (_velocity),
00134 flight (_flight)
00135 {}
00136
00137
00143 eoSyncEasyPSO (
00144 eoContinue < POT > &_continuator,
00145 eoEvalFunc < POT > &_eval,
00146 eoVelocity < POT > &_velocity):
00147 init(dummyInit),
00148 continuator (_continuator),
00149 eval (_eval),
00150 loopEval(_eval),
00151 popEval(loopEval),
00152 velocity (_velocity),
00153 flight (dummyFlight)
00154 {}
00155
00162 eoSyncEasyPSO (
00163 eoContinue < POT > &_continuator,
00164 eoPopEvalFunc < POT > &_eval,
00165 eoVelocity < POT > &_velocity,
00166 eoFlight <POT> &_flight):
00167 init(dummyInit),
00168 continuator (_continuator),
00169 eval (dummyEval),
00170 loopEval(dummyEval),
00171 popEval(_eval),
00172 velocity (_velocity),
00173 flight (_flight)
00174 {}
00175
00177 virtual void operator () (eoPop < POT > &_pop)
00178 {
00179
00180 try
00181 {
00182
00183 init();
00184
00185
00186 eoPop<POT> empty_pop;
00187
00188 do
00189 {
00190
00191 velocity.apply (_pop);
00192
00193
00194 flight.apply (_pop);
00195
00196
00197 popEval(empty_pop,_pop);
00198
00199
00200 velocity.updateNeighborhood(_pop);
00201
00202 }
00203 while (continuator (_pop));
00204
00205 }
00206 catch (std::exception & e)
00207 {
00208 std::string s = e.what ();
00209 s.append (" in eoSyncEasyPSO");
00210 throw std::runtime_error (s);
00211 }
00212
00213 }
00214
00215 private:
00216
00217 eoInitializerBase <POT> &init;
00218 eoContinue < POT > &continuator;
00219
00220 eoEvalFunc < POT > &eval;
00221 eoPopLoopEval<POT> loopEval;
00222 eoPopEvalFunc<POT>& popEval;
00223
00224 eoVelocity < POT > &velocity;
00225 eoFlight < POT > &flight;
00226
00227
00228 class eoDummyEval : public eoEvalFunc<POT>
00229 {
00230 public:
00231 void operator()(POT &)
00232 {}
00233 }
00234 dummyEval;
00235
00236 class eoDummyFlight:public eoFlight < POT >
00237 {
00238 public:
00239 eoDummyFlight () {}
00240 void operator () (POT & _po) {}
00241 }dummyFlight;
00242
00243
00244 class eoDummyInitializer:public eoInitializerBase < POT >
00245 {
00246 public:
00247 eoDummyInitializer () {}
00248 void operator () (POT & _po) {}
00249 }dummyInit;
00250
00251 };
00252
00253
00254 #endif