Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
libnest2d::opt::Optimizer< Subclass > Class Template Reference

The Optimizer base class with CRTP pattern. More...

#include <src/libnest2d/include/libnest2d/optimizer.hpp>

+ Inheritance diagram for libnest2d::opt::Optimizer< Subclass >:
+ Collaboration diagram for libnest2d::opt::Optimizer< Subclass >:

Public Member Functions

 Optimizer (const StopCriteria &scr={})
 
template<class Func , class... Args>
Result< Args... > optimize_min (Func &&objectfunction, Input< Args... > initvals, Bound< Args >... bounds)
 Optimize for minimum value of the provided objectfunction.
 
template<class Func , class... Args>
Result< Args... > optimize_min (Func &&objectfunction, Input< Args... > initvals)
 
template<class... Args, class Func >
Result< Args... > optimize_min (Func &&objectfunction)
 
template<class Func , class... Args>
Result< Args... > optimize_max (Func &&objectfunction, Input< Args... > initvals, Bound< Args >... bounds)
 Same as optimize_min but optimizes for maximum function value.
 
template<class Func , class... Args>
Result< Args... > optimize_max (Func &&objectfunction, Input< Args... > initvals)
 
template<class... Args, class Func >
Result< Args... > optimize_max (Func &&objectfunction)
 

Protected Types

enum class  OptDir { MIN , MAX }
 

Protected Attributes

enum libnest2d::opt::Optimizer::OptDir dir_
 
StopCriteria stopcr_
 

Detailed Description

template<class Subclass>
class libnest2d::opt::Optimizer< Subclass >

The Optimizer base class with CRTP pattern.

Member Enumeration Documentation

◆ OptDir

template<class Subclass >
enum class libnest2d::opt::Optimizer::OptDir
strongprotected
Enumerator
MIN 
MAX 
124 {
125 MIN,
126 MAX
127 } dir_;
enum libnest2d::opt::Optimizer::OptDir dir_

Constructor & Destructor Documentation

◆ Optimizer()

template<class Subclass >
libnest2d::opt::Optimizer< Subclass >::Optimizer ( const StopCriteria scr = {})
inlineexplicit
133{}): stopcr_(scr) {}
StopCriteria stopcr_
Definition optimizer.hpp:129

Member Function Documentation

◆ optimize_max() [1/3]

template<class Subclass >
template<class... Args, class Func >
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_max ( Func &&  objectfunction)
inline
203 {
205 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
206 forward<Func>(objectfunction),
207 Input<Args...>(),
208 Bound<Args>()... );
209 }
tuple< Args... > Input
Definition optimizer.hpp:51

References libnest2d::opt::Optimizer< Subclass >::dir_, and libnest2d::opt::Optimizer< Subclass >::MAX.

◆ optimize_max() [2/3]

template<class Subclass >
template<class Func , class... Args>
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_max ( Func &&  objectfunction,
Input< Args... >  initvals 
)
inline
195 {
197 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
198 forward<Func>(objectfunction), initvals, Bound<Args>()... );
199 }
tuple< Args... > initvals(Args...args)
Definition optimizer.hpp:54

References libnest2d::opt::Optimizer< Subclass >::dir_, libnest2d::opt::initvals(), and libnest2d::opt::Optimizer< Subclass >::MAX.

+ Here is the call graph for this function:

◆ optimize_max() [3/3]

template<class Subclass >
template<class Func , class... Args>
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_max ( Func &&  objectfunction,
Input< Args... >  initvals,
Bound< Args >...  bounds 
)
inline

Same as optimize_min but optimizes for maximum function value.

186 {
188 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
189 forward<Func>(objectfunction), initvals, bounds... );
190 }
Bounds< N > bounds(const Bound(&b)[N])
Definition Optimizer.hpp:192

References libnest2d::opt::Optimizer< Subclass >::dir_, libnest2d::opt::initvals(), and libnest2d::opt::Optimizer< Subclass >::MAX.

+ Here is the call graph for this function:

◆ optimize_min() [1/3]

template<class Subclass >
template<class... Args, class Func >
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_min ( Func &&  objectfunction)
inline
173 {
175 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
176 forward<Func>(objectfunction),
177 Input<Args...>(),
178 Bound<Args>()... );
179 }

References libnest2d::opt::Optimizer< Subclass >::dir_, and libnest2d::opt::Optimizer< Subclass >::MIN.

◆ optimize_min() [2/3]

template<class Subclass >
template<class Func , class... Args>
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_min ( Func &&  objectfunction,
Input< Args... >  initvals 
)
inline
165 {
167 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
168 forward<Func>(objectfunction), initvals, Bound<Args>()... );
169 }

References libnest2d::opt::Optimizer< Subclass >::dir_, libnest2d::opt::initvals(), and libnest2d::opt::Optimizer< Subclass >::MIN.

+ Here is the call graph for this function:

◆ optimize_min() [3/3]

template<class Subclass >
template<class Func , class... Args>
Result< Args... > libnest2d::opt::Optimizer< Subclass >::optimize_min ( Func &&  objectfunction,
Input< Args... >  initvals,
Bound< Args >...  bounds 
)
inline

Optimize for minimum value of the provided objectfunction.

Parameters
objectfunctionThe function that will be searched for the minimum return value.
initvalsA tuple with the initial values for the search
boundsA parameter pack with the bounds for each dimension.
Returns
Returns a Result<Args...> structure. An example call would be: auto result = opt.optimize_min( [](tuple<double> x) // object function { return std::pow(std::get<0>(x), 2); }, make_tuple(-0.5), // initial value {-1.0, 1.0} // search space bounds );
156 {
158 return static_cast<Subclass*>(this)->template optimize<Func, Args...>(
159 forward<Func>(objectfunction), initvals, bounds... );
160 }

References libnest2d::opt::Optimizer< Subclass >::dir_, libnest2d::opt::initvals(), and libnest2d::opt::Optimizer< Subclass >::MIN.

+ Here is the call graph for this function:

Member Data Documentation

◆ dir_

◆ stopcr_

template<class Subclass >
StopCriteria libnest2d::opt::Optimizer< Subclass >::stopcr_
protected

The documentation for this class was generated from the following file: