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
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