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 _EOEASYPSO_H
00026 #define _EOEASYPSO_H
00027
00028
00029 #include <eoContinue.h>
00030 #include <eoPSO.h>
00031 #include <eoVelocity.h>
00032 #include <eoFlight.h>
00033
00034
00044 template < class POT > class eoEasyPSO:public eoPSO < POT >
00045 {
00046 public:
00047
00056 eoEasyPSO (
00057 eoInitializerBase <POT> &_init,
00058 eoContinue < POT > &_continuator,
00059 eoEvalFunc < POT > &_eval,
00060 eoVelocity < POT > &_velocity,
00061 eoFlight < POT > &_flight):
00062 init(_init),
00063 continuator (_continuator),
00064 eval (_eval),
00065 velocity (_velocity),
00066 flight (_flight)
00067 {}
00068
00069
00076 eoEasyPSO (
00077 eoInitializerBase <POT> &_init,
00078 eoContinue < POT > &_continuator,
00079 eoEvalFunc < POT > &_eval,
00080 eoVelocity < POT > &_velocity):
00081 init(_init),
00082 continuator (_continuator),
00083 eval (_eval),
00084 velocity (_velocity),
00085 flight (dummyFlight)
00086 {}
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 eoEasyPSO (
00097 eoContinue < POT > &_continuator,
00098 eoEvalFunc < POT > &_eval,
00099 eoVelocity < POT > &_velocity,
00100 eoFlight < POT > &_flight):
00101 init(dummyInit),
00102 continuator (_continuator),
00103 eval (_eval),
00104 velocity (_velocity),
00105 flight (_flight)
00106 {}
00107
00108
00114 eoEasyPSO (
00115 eoContinue < POT > &_continuator,
00116 eoEvalFunc < POT > &_eval,
00117 eoVelocity < POT > &_velocity):
00118 init(dummyInit),
00119 continuator (_continuator),
00120 eval (_eval),
00121 velocity (_velocity),
00122 flight (dummyFlight)
00123 {}
00124
00126 virtual void operator () (eoPop < POT > &_pop)
00127 {
00128 try
00129 {
00130
00131 init();
00132 do
00133 {
00134
00135 for (unsigned idx = 0; idx < _pop.size (); idx++)
00136 {
00137
00138 velocity (_pop[idx],idx);
00139
00140
00141 flight (_pop[idx]);
00142
00143
00144 eval (_pop[idx]);
00145
00146
00147 velocity.updateNeighborhood(_pop[idx],idx);
00148 }
00149
00150 }
00151 while (continuator (_pop));
00152
00153 }
00154 catch (std::exception & e)
00155 {
00156 std::string s = e.what ();
00157 s.append (" in eoEasyPSO");
00158 throw std::runtime_error (s);
00159 }
00160
00161 }
00162
00163 protected:
00164 eoInitializerBase <POT> &init;
00165 eoContinue < POT > &continuator;
00166 eoEvalFunc < POT > &eval;
00167 eoVelocity < POT > &velocity;
00168 eoFlight < POT > &flight;
00169
00170
00171 class eoDummyFlight:public eoFlight < POT >
00172 {
00173 public:
00174 eoDummyFlight () {}
00175 void operator () (POT & _po) {}
00176 }dummyFlight;
00177
00178
00179 class eoDummyInitializer:public eoInitializerBase < POT >
00180 {
00181 public:
00182 eoDummyInitializer () {}
00183 void operator () (POT & _po) {}
00184 }dummyInit;
00185
00186 };
00187
00188
00189 #endif