Loading...
Searching...
No Matches
eonc::helpers::create Namespace Reference

Functions

std::unique_ptr< OptimizermkOptim (std::shared_ptr< ObjectiveFunction > a_objf, OptType a_otype, const Parameters &a_params)

Function Documentation

◆ mkOptim()

std::unique_ptr< Optimizer > eonc::helpers::create::mkOptim ( std::shared_ptr< ObjectiveFunction > a_objf,
OptType a_otype,
const Parameters & a_params )

Definition at line 21 of file Optimizer.cpp.

23 {
24 switch (a_otype) {
25 case OptType::FIRE: {
26 return std::make_unique<FIRE>(a_objf, a_params);
27 }
28 case OptType::QM: {
29 return std::make_unique<Quickmin>(a_objf, a_params);
30 }
31 case OptType::CG: {
32 return std::make_unique<ConjugateGradients>(a_objf, a_params);
33 }
34 case OptType::LBFGS: {
35 return std::make_unique<LBFGS>(a_objf, a_params);
36 }
37 case OptType::SD: {
38 return std::make_unique<SteepestDescent>(a_objf, a_params);
39 }
40 case OptType::None: {
41 throw std::runtime_error("[Optimizer] Cannot create None");
42 }
43 case OptType::Unknown: {
44 throw std::runtime_error("[Optimizer] Cannot create Unknown");
45 }
46 default: {
47 throw std::runtime_error("Unsupported optimization type");
48 }
49 }
50}