#ifndef GENETIC_HPP #define GENETIC_HPP #include "nlopt_boilerplate.hpp" namespace libnest2d { namespace opt { class GeneticOptimizer: public NloptOptimizer { public: inline explicit GeneticOptimizer(const StopCriteria& scr = {}): NloptOptimizer(method2nloptAlg(Method::G_GENETIC), scr) {} inline GeneticOptimizer& localMethod(Method m) { localmethod_ = m; return *this; } inline void seed(unsigned long val) { nlopt::srand(val); } }; template<> struct OptimizerSubclass { using Type = GeneticOptimizer; }; template<> inline TOptimizer GlobalOptimizer( Method localm, const StopCriteria& scr ) { return GeneticOptimizer (scr).localMethod(localm); } } } #endif // GENETIC_HPP