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)24 inline 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