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 "binary/Binary.h"
00010
00011
00021 class ParticleSwarmOptimization : public Algorithm
00022 {
00023 public:
00024 ParticleSwarmOptimization();
00025
00026 enum InertiaWeightType
00027 {
00028 CONSTANT,
00029 TIME_VARIANT
00030 };
00031
00032 bool advanceGeneration(StateP state, DemeP deme);
00033 bool initialize(StateP state);
00034 void registerParameters(StateP state);
00035
00036 protected:
00037 SelectionOperatorP selBestOp;
00038
00039 int m_maxIter;
00040
00041 InertiaWeightType m_weightType;
00042 double m_weight;
00043 double m_maxV;
00044 };
00045 typedef boost::shared_ptr<ParticleSwarmOptimization> ParticleSwarmOptimizationP;
00046
00047 #endif // Particle_Swarm_Optimization_h
00048