Loading...
Searching...
No Matches
Optimizer.h
Go to the documentation of this file.
1/*
2** This file is part of eOn.
3**
4** SPDX-License-Identifier: BSD-3-Clause
5**
6** Copyright (c) 2010--present, eOn Development Team
7** All rights reserved.
8**
9** Repo:
10** https://github.com/TheochemUI/eOn
11*/
12#pragma once
13
14#include "Eigen.h"
15#include "ObjectiveFunction.h"
16#include "Parameters.h"
17
18#include "EonLogger.h"
19
20namespace eonc {
21
30
45
49
61
62class Optimizer {
63private:
65
66protected:
68 std::shared_ptr<ObjectiveFunction> m_objf;
69
70public:
71 Optimizer(std::shared_ptr<ObjectiveFunction> a_objf,
72 const OptimizerConfig &a_config)
73 : m_otype{a_config.opts.method},
74 m_optConfig{a_config},
75 m_objf{a_objf} {
77 "You should explicitly set an optimizer while constructing the "
78 "optimizer!!\n Defaulting to opt_method from the parameters");
79 }
80 Optimizer(std::shared_ptr<ObjectiveFunction> a_objf, OptType a_optype,
81 const OptimizerConfig &a_config)
82 : m_otype{a_optype},
83 m_optConfig{a_config},
84 m_objf{a_objf} {}
85
86 // Backward-compat constructors
87 [[deprecated("Pass OptimizerConfig directly")]]
88 Optimizer(std::shared_ptr<ObjectiveFunction> a_objf,
89 const Parameters &a_params)
90 : Optimizer(a_objf, OptimizerConfig::fromParams(a_params)) {}
91 [[deprecated("Pass OptimizerConfig directly")]]
92 Optimizer(std::shared_ptr<ObjectiveFunction> a_objf, OptType a_optype,
93 const Parameters &a_params)
94 : Optimizer(a_objf, a_optype, OptimizerConfig::fromParams(a_params)) {}
95
96 virtual ~Optimizer() {};
97 virtual int step(double a_maxMove) = 0;
98 virtual int run(size_t a_maxIterations, double a_maxMove) = 0;
99};
100
101namespace helpers::create {
102std::unique_ptr<Optimizer> mkOptim(std::shared_ptr<ObjectiveFunction> a_objf,
103 OptType a_otype, const Parameters &a_params);
104}
105
106} // namespace eonc
107
108using eonc::Optimizer;
#define EONC_LOG_WARNING(...)
Definition EonLogger.h:256
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_optype, const Parameters &a_params)
Definition Optimizer.h:92
const OptType m_otype
Definition Optimizer.h:64
const OptimizerConfig m_optConfig
Definition Optimizer.h:67
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition Optimizer.h:71
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition Optimizer.h:88
virtual int run(size_t a_maxIterations, double a_maxMove)=0
virtual int step(double a_maxMove)=0
std::shared_ptr< ObjectiveFunction > m_objf
Definition Optimizer.h:68
virtual ~Optimizer()
Definition Optimizer.h:96
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_optype, const OptimizerConfig &a_config)
Definition Optimizer.h:80
struct eonc::Parameters::optimizer_options_t optimizer_options
struct eonc::Parameters::saddle_search_options_t saddle_search_options
struct eonc::Parameters::main_options_t main_options
std::unique_ptr< Optimizer > mkOptim(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_otype, const Parameters &a_params)
Definition Optimizer.cpp:21
RAII resource manager for the ARTn C library with global synchronization.
Declaration of the optimizer class.
Definition Optimizer.h:51
Parameters::optimizer_options_t opts
Definition Optimizer.h:52
static OptimizerConfig fromParams(const Parameters &p)
Definition Optimizer.h:56
struct eonc::Parameters::saddle_search_options_t::confine_positive_t confine_positive