eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
LBFGS.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
#include "
EonLogger.h
"
14
15
#include "
HelperFunctions.h
"
16
#include "
Matter.h
"
17
#include "
ObjectiveFunction.h
"
18
#include "
Optimizer.h
"
19
#include "
Parameters.h
"
20
21
#include <deque>
22
23
namespace
eonc
{
24
25
#define LBFGS_EPS 1e-30
26
27
class
LBFGS
final :
public
Optimizer
{
28
29
public
:
30
LBFGS
(std::shared_ptr<ObjectiveFunction> a_objf,
const
Parameters
&a_params)
31
:
Optimizer
(a_objf,
OptType
::
LBFGS
, a_params),
32
m_iteration
{0},
33
m_memory
{std::min(
34
a_objf->degreesOfFreedom(),
35
static_cast<int>(a_params.optimizer_options.lbfgs.memory))} {}
36
37
~LBFGS
() =
default
;
38
39
int
step
(
double
a_maxMove)
override
;
40
int
run
(
size_t
a_maxIterations,
double
a_maxMove)
override
;
41
int
update
(
const
Eigen::VectorXd &a_r1,
const
Eigen::VectorXd &a_r0,
42
const
Eigen::VectorXd &a_f1,
const
Eigen::VectorXd &a_f0);
43
void
reset
(
void
);
44
45
private
:
46
Eigen::VectorXd
getStep
(
double
a_maxMove,
const
Eigen::VectorXd &a_f);
47
48
int
m_iteration
;
49
int
m_memory
;
50
51
std::deque<Eigen::VectorXd>
m_s
;
52
std::deque<Eigen::VectorXd>
m_y
;
53
std::deque<double>
m_rho
;
54
55
Eigen::VectorXd
m_rPrev
;
56
Eigen::VectorXd
m_fPrev
;
57
eonc::log::FileScoped
m_log
{
"lbfgs"
,
"_lbfgs.log"
};
58
};
59
60
}
// namespace eonc
61
62
using
eonc::LBFGS
;
EonLogger.h
HelperFunctions.h
Matter.h
ObjectiveFunction.h
Optimizer.h
The optimizer class is used to serve as an abstract class for all optimizers, as well as to call an o...
Parameters.h
eonc::LBFGS
Definition
LBFGS.h:27
eonc::LBFGS::m_rho
std::deque< double > m_rho
Definition
LBFGS.h:53
eonc::LBFGS::m_fPrev
Eigen::VectorXd m_fPrev
Definition
LBFGS.h:56
eonc::LBFGS::m_iteration
int m_iteration
Definition
LBFGS.h:48
eonc::LBFGS::m_y
std::deque< Eigen::VectorXd > m_y
Definition
LBFGS.h:52
eonc::LBFGS::getStep
Eigen::VectorXd getStep(double a_maxMove, const Eigen::VectorXd &a_f)
Definition
LBFGS.cpp:19
eonc::LBFGS::m_s
std::deque< Eigen::VectorXd > m_s
Definition
LBFGS.h:51
eonc::LBFGS::m_rPrev
Eigen::VectorXd m_rPrev
Definition
LBFGS.h:55
eonc::LBFGS::run
int run(size_t a_maxIterations, double a_maxMove) override
Definition
LBFGS.cpp:167
eonc::LBFGS::m_memory
int m_memory
Definition
LBFGS.h:49
eonc::LBFGS::LBFGS
LBFGS(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition
LBFGS.h:30
eonc::LBFGS::reset
void reset(void)
Definition
LBFGS.cpp:110
eonc::LBFGS::step
int step(double a_maxMove) override
Definition
LBFGS.cpp:144
eonc::LBFGS::update
int update(const Eigen::VectorXd &a_r1, const Eigen::VectorXd &a_r0, const Eigen::VectorXd &a_f1, const Eigen::VectorXd &a_f0)
Definition
LBFGS.cpp:116
eonc::LBFGS::m_log
eonc::log::FileScoped m_log
Definition
LBFGS.h:57
eonc::LBFGS::~LBFGS
~LBFGS()=default
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition
Optimizer.h:71
eonc::Parameters
Definition
Parameters.h:28
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::OptType
OptType
Definition
BaseStructures.h:98
eonc::log::FileScoped
RAII helper for file-based logging in a class.
Definition
EonLogger.h:208
include
eon
LBFGS.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf