eOn 3.2.0
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
PotType
potential
{
PotType::LJ
};
56
57
static
OptimizerConfig
fromParams
(
const
Parameters
&p) {
58
return
{p.
optimizer_options
(), p.
main_options
().
finiteDifference
,
59
p.
saddle_search_options
().
confine_positive
.
bowl_breakout
,
60
p.
potential_options
().
potential
};
61
}
62
};
63
64
class
Optimizer
{
65
private
:
66
const
OptType
m_otype
;
67
68
protected
:
69
const
OptimizerConfig
m_optConfig
;
70
std::shared_ptr<ObjectiveFunction>
m_objf
;
71
72
public
:
73
Optimizer
(std::shared_ptr<ObjectiveFunction> a_objf,
74
const
OptimizerConfig
&a_config)
75
:
m_otype
{a_config.opts.method},
m_optConfig
{a_config},
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},
m_optConfig
{a_config},
m_objf
{a_objf} {}
83
84
// Backward-compat constructors
85
[[deprecated(
"Pass OptimizerConfig directly"
)]]
86
Optimizer
(std::shared_ptr<ObjectiveFunction> a_objf,
87
const
Parameters
&a_params)
88
:
Optimizer
(a_objf,
OptimizerConfig
::fromParams(a_params)) {}
89
[[deprecated(
"Pass OptimizerConfig directly"
)]]
90
Optimizer
(std::shared_ptr<ObjectiveFunction> a_objf,
OptType
a_optype,
91
const
Parameters
&a_params)
92
:
Optimizer
(a_objf, a_optype,
OptimizerConfig
::fromParams(a_params)) {}
93
94
virtual
~Optimizer
() =
default
;
95
virtual
int
step
(
double
a_maxMove) = 0;
96
virtual
int
run
(
size_t
a_maxIterations,
double
a_maxMove) = 0;
97
};
98
99
namespace
helpers::create
{
100
[[nodiscard]] std::unique_ptr<Optimizer>
101
mkOptim
(std::shared_ptr<ObjectiveFunction> a_objf,
OptType
a_otype,
102
const
Parameters
&a_params);
103
}
104
105
}
// namespace eonc
Eigen.h
EonLogger.h
EONC_LOG_WARNING
#define EONC_LOG_WARNING(...)
Definition
EonLogger.h:255
ObjectiveFunction.h
Parameters.h
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_optype, const Parameters &a_params)
Definition
Optimizer.h:90
eonc::Optimizer::m_otype
const OptType m_otype
Definition
Optimizer.h:66
eonc::Optimizer::m_optConfig
const OptimizerConfig m_optConfig
Definition
Optimizer.h:69
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition
Optimizer.h:73
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition
Optimizer.h:86
eonc::Optimizer::run
virtual int run(size_t a_maxIterations, double a_maxMove)=0
eonc::Optimizer::~Optimizer
virtual ~Optimizer()=default
eonc::Optimizer::step
virtual int step(double a_maxMove)=0
eonc::Optimizer::m_objf
std::shared_ptr< ObjectiveFunction > m_objf
Definition
Optimizer.h:70
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:35
eonc::Parameters::potential_options
const potential_options_t & potential_options() const
Definition
ParametersAccess.cpp:79
eonc::Parameters::main_options
const main_options_t & main_options() const
Definition
ParametersAccess.cpp:75
eonc::Parameters::saddle_search_options
const saddle_search_options_t & saddle_search_options() const
Definition
ParametersAccess.cpp:127
eonc::Parameters::optimizer_options_t
eonc::optimizer_options_t optimizer_options_t
Definition
Parameters.h:70
eonc::Parameters::optimizer_options
const optimizer_options_t & optimizer_options() const
Definition
ParametersAccess.cpp:131
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:24
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::OptType
OptType
Definition
BaseStructures.h:103
eonc::PotType
PotType
Definition
BaseStructures.h:36
eonc::PotType::LJ
@ LJ
Definition
BaseStructures.h:41
helpers::create
Definition
Create.hpp:19
eonc::OptimizerConfig
Declaration of the optimizer class.
Definition
Optimizer.h:51
eonc::OptimizerConfig::potential
PotType potential
Definition
Optimizer.h:55
eonc::OptimizerConfig::opts
Parameters::optimizer_options_t opts
Definition
Optimizer.h:52
eonc::OptimizerConfig::fromParams
static OptimizerConfig fromParams(const Parameters &p)
Definition
Optimizer.h:57
eonc::OptimizerConfig::bowlBreakout
bool bowlBreakout
Definition
Optimizer.h:54
eonc::OptimizerConfig::finiteDifference
double finiteDifference
Definition
Optimizer.h:53
eonc::main_options_t::finiteDifference
double finiteDifference
Definition
ParametersOptions.h:39
eonc::potential_options_t::potential
PotType potential
Definition
ParametersOptions.h:51
eonc::saddle_search_options_t::confine_positive_t::bowl_breakout
bool bowl_breakout
Definition
ParametersOptions.h:223
eonc::saddle_search_options_t::confine_positive
struct eonc::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