1 #ifndef PARTICLESWARM_HPP 2 #define PARTICLESWARM_HPP 3 4 #include <libnest2d/optimizer.hpp> 5 6 namespace libnest2d { namespace opt { 7 8 class ParticleswarmOptimizer { 9 public: ParticleswarmOptimizer(const StopCriteria & scr={})10 inline explicit ParticleswarmOptimizer(const StopCriteria& scr = {}) {} 11 localMethod(Method m)12 inline ParticleswarmOptimizer& localMethod(Method m) { 13 localmethod_ = m; 14 return *this; 15 } 16 seed(unsigned long val)17 inline void seed(unsigned long val) { nlopt::srand(val); } 18 }; 19 20 template<> 21 struct OptimizerSubclass<Method::G_PARTICLESWARM> { using Type = ParticleswarmOptimizer; }; 22 23 template<> GlobalOptimizer(Method localm,const StopCriteria & scr)24inline TOptimizer<Method::G_PARTICLESWARM> GlobalOptimizer<Method::G_PARTICLESWARM>( 25 Method localm, const StopCriteria& scr ) 26 { 27 return ParticleswarmOptimizer (scr).localMethod(localm); 28 } 29 30 } 31 } 32 33 #endif // GENETIC_HPP 34