00001 #ifndef Particle_Swarm_Optimization_h 00002 #define Particle_Swarm_Optimization_h 00003 00004 #include "ECF_base.h" 00005 #include "ECF_derived.h" 00006 #include "ECF_macro.h" 00007 00008 #include "Algorithm.h" 00009 #include "floatingpoint/FloatingPoint.h" 00010 00011 00022 class ParticleSwarmOptimization : public Algorithm 00023 { 00024 public: 00025 ParticleSwarmOptimization(); 00026 00027 enum InertiaWeightType 00028 { 00029 CONSTANT, 00030 TIME_VARIANT 00031 }; 00032 00033 bool advanceGeneration(StateP state, DemeP deme); 00034 bool initialize(StateP state); 00035 void registerParameters(StateP state); 00036 00037 protected: 00038 SelectionOperatorP selBestOp; 00039 00040 int m_maxIter; 00041 00042 InertiaWeightType m_weightType; 00043 double m_weight; 00044 double m_maxV; 00045 }; 00046 typedef boost::shared_ptr<ParticleSwarmOptimization> ParticleSwarmOptimizationP; 00047 00048 #endif // Particle_Swarm_Optimization_h 00049