eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
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
20
namespace
eonc
{
21
30
45
49
51
struct
OptimizerConfig
{
52
Parameters::optimizer_options_t
opts
;
53
double
finiteDifference
{0.01};
54
bool
bowlBreakout
{
false
};
55
56
static
OptimizerConfig
fromParams
(
const
Parameters
&p) {
57
return
{p.
optimizer_options
, p.
main_options
.
finiteDifference
,
58
p.
saddle_search_options
.
confine_positive
.
bowl_breakout
};
59
}
60
};
61
62
class
Optimizer
{
63
private
:
64
const
OptType
m_otype
;
65
66
protected
:
67
const
OptimizerConfig
m_optConfig
;
68
std::shared_ptr<ObjectiveFunction>
m_objf
;
69
70
public
:
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} {
76
EONC_LOG_WARNING
(
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
101
namespace
helpers::create
{
102
std::unique_ptr<Optimizer>
mkOptim
(std::shared_ptr<ObjectiveFunction> a_objf,
103
OptType
a_otype,
const
Parameters
&a_params);
104
}
105
106
}
// namespace eonc
107
108
using
eonc::Optimizer
;
Eigen.h
EonLogger.h
EONC_LOG_WARNING
#define EONC_LOG_WARNING(...)
Definition
EonLogger.h:256
ObjectiveFunction.h
Parameters.h
eonc::Optimizer
Definition
Optimizer.h:62
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_optype, const Parameters &a_params)
Definition
Optimizer.h:92
eonc::Optimizer::m_otype
const OptType m_otype
Definition
Optimizer.h:64
eonc::Optimizer::m_optConfig
const OptimizerConfig m_optConfig
Definition
Optimizer.h:67
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition
Optimizer.h:71
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition
Optimizer.h:88
eonc::Optimizer::run
virtual int run(size_t a_maxIterations, double a_maxMove)=0
eonc::Optimizer::step
virtual int step(double a_maxMove)=0
eonc::Optimizer::m_objf
std::shared_ptr< ObjectiveFunction > m_objf
Definition
Optimizer.h:68
eonc::Optimizer::~Optimizer
virtual ~Optimizer()
Definition
Optimizer.h:96
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_optype, const OptimizerConfig &a_config)
Definition
Optimizer.h:80
eonc::Parameters
Definition
Parameters.h:28
eonc::Parameters::optimizer_options
struct eonc::Parameters::optimizer_options_t optimizer_options
eonc::Parameters::saddle_search_options
struct eonc::Parameters::saddle_search_options_t saddle_search_options
eonc::Parameters::main_options
struct eonc::Parameters::main_options_t main_options
eonc::helpers::create::mkOptim
std::unique_ptr< Optimizer > mkOptim(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_otype, const Parameters &a_params)
Definition
Optimizer.cpp:21
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::OptType
OptType
Definition
BaseStructures.h:98
helpers::create
Definition
Create.hpp:19
eonc::OptimizerConfig
Declaration of the optimizer class.
Definition
Optimizer.h:51
eonc::OptimizerConfig::opts
Parameters::optimizer_options_t opts
Definition
Optimizer.h:52
eonc::OptimizerConfig::fromParams
static OptimizerConfig fromParams(const Parameters &p)
Definition
Optimizer.h:56
eonc::OptimizerConfig::bowlBreakout
bool bowlBreakout
Definition
Optimizer.h:54
eonc::OptimizerConfig::finiteDifference
double finiteDifference
Definition
Optimizer.h:53
eonc::Parameters::main_options_t::finiteDifference
double finiteDifference
Definition
Parameters.h:55
eonc::Parameters::optimizer_options_t
Definition
Parameters.h:219
eonc::Parameters::saddle_search_options_t::confine_positive_t::bowl_breakout
bool bowl_breakout
Definition
Parameters.h:209
eonc::Parameters::saddle_search_options_t::confine_positive
struct eonc::Parameters::saddle_search_options_t::confine_positive_t confine_positive
include
eon
Optimizer.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf