1#ifndef _BBM_OPTIMIZER_PTR_H_
2#define _BBM_OPTIMIZER_PTR_H_
26 template<
typename CONF>
requires concepts::config<CONF>
47 inline const std::shared_ptr<optimizer_base<Config>>&
ptr(
void)
const {
return _opt; }
50 inline const std::shared_ptr<optimizer_base<Config>>&
operator->(
void)
56 inline std::shared_ptr<optimizer_base<Config>>
operator->(
void)
const
68 virtual Value
step(
void)
override final
70 return (*this)->step();
76 virtual void reset(
void)
override final
86 return (*this)->is_converged();
93 std::shared_ptr<optimizer_base<Config>>
_opt;
111 auto ptr = std::make_shared<OPTIMIZER>(std::forward<ARGS>(
args)...);
124 template<
typename OPTIMIZATION_ALGORITHM,
typename... ARGS>
requires (concepts::optimization_algorithm<OPTIMIZATION_ALGORITHM> && !concepts::optimizer<OPTIMIZATION_ALGORITHM>)
127 auto ptr = std::make_shared<optimizer<OPTIMIZATION_ALGORITHM>>(std::forward<ARGS>(
args)...);
138 template<
typename OPTIMIZER>
requires concepts::optimizer<OPTIMIZER>
141 auto ptr = std::make_shared<OPTIMIZER>(
arg);
153 template<
typename OPTIMIZATION_ALGORITHM>
requires (concepts::optimization_algorithm<OPTIMIZATION_ALGORITHM> && !concepts::optimizer<OPTIMIZATION_ALGORITHM>)
156 auto ptr = std::make_shared<optimizer<OPTIMIZATION_ALGORITHM>>(
arg);
165 template<
typename CONF>
requires concepts::config<CONF>
All BBM methods are defined to operate on a variety of value types and spectrum types....
Connects a optimization_algorithm to a optimizers.
optimizer_ptr: a wrapper around a shared_ptr to an optimizer
Definition: optimizer_ptr.h:28
const std::shared_ptr< optimizer_base< Config > > & operator->(void)
Definition: optimizer_ptr.h:50
virtual Value step(void) override final
Dereference passthrough of the 'step' method.
Definition: optimizer_ptr.h:68
optimizer_ptr(const std::shared_ptr< OPT > &ptr)
Construct from shared_ptr.
Definition: optimizer_ptr.h:37
optimizer_ptr(void)=default
Default (empty) constructor; shared_ptr is set to nullptr.
optimizer_ptr & operator=(const optimizer_ptr &src)
Assignment operator.
Definition: optimizer_ptr.h:40
std::shared_ptr< optimizer_base< Config > > _opt
Definition: optimizer_ptr.h:93
std::shared_ptr< optimizer_base< Config > > operator->(void) const
Definition: optimizer_ptr.h:56
virtual void reset(void) override final
Dereference passthrough of the 'reset' method.
Definition: optimizer_ptr.h:76
const std::shared_ptr< optimizer_base< Config > > & ptr(void) const
Get the internal shared pointer.
Definition: optimizer_ptr.h:47
virtual Mask is_converged(void) override final
Dereference passthrough of the 'is_converged' method.
Definition: optimizer_ptr.h:84
optimizer_ptr contract
Definition: optimizer_ptr.h:24
optimizer concept
Definition: optimizer.h:28
Predefined exceptions for common errors.
#define bbm_incomplete_init
Definition: error.h:42
Macros for checking if a class meets a concept.
#define BBM_CHECK_CONCEPT(CONCEPTNAME, CLASSNAME,...)
Check a class for a concept with bbm::concepts::archetypes in the namespace.
Definition: macro.h:35
Definition: aggregatebsdf.h:29
typename std::decay_t< T >::Config get_config
get_config type trait
Definition: config.h:49
optimizer_ptr< get_config< OPTIMIZER > > make_optimizer_ptr(ARGS &&... args)
Helper method for making an optimizer_ptr from an optimizer (new construction)
Definition: optimizer_ptr.h:109
Forward declaration of bbm::arg.
Definition: arg.h:27
Forward declaration.
Definition: args.h:248
Abstract optimizer base class.
Definition: optimizer_base.h:23