Loading...
Searching...
No Matches
FIRE.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#include "Optimizer.h"
15#include "Parameters.h"
16
17namespace eonc {
18
19class FIRE final : public Optimizer {
20
21public:
22 FIRE(std::shared_ptr<ObjectiveFunction> a_objf, const Parameters &a_params)
23 : Optimizer(a_objf, OptType::FIRE, OptimizerConfig::fromParams(a_params)),
24 m_dt{a_params.optimizer_options().time_step},
25 m_dt_max{a_params.optimizer_options().max_time_step},
26 m_max_move{a_params.optimizer_options().max_move}, m_N_min{5}, m_N{0},
27 m_vel{Eigen::VectorXd::Zero(a_objf->degreesOfFreedom())},
29 m_f_a{0.99}, m_iteration{0} {}
30 ~FIRE() = default;
31
32 int step(double a_maxMove) override;
33 int run(size_t a_maxIterations, double a_maxMove) override;
34
35private:
37 size_t m_N_min, m_N;
38 Eigen::VectorXd m_vel;
40 double m_alpha;
41 double m_f_inc;
42 double m_f_dec;
43 double m_f_a;
45 eonc::log::FileScoped m_log{"fire", "_fire.log"};
46};
47
48} // namespace eonc
The optimizer class is used to serve as an abstract class for all optimizers, as well as to call an o...
Eigen::VectorXd m_vel
Definition FIRE.h:38
double m_dt_max
Definition FIRE.h:36
double m_f_inc
Definition FIRE.h:41
size_t m_N_min
Definition FIRE.h:37
double m_alpha_start
Definition FIRE.h:39
int step(double a_maxMove) override
Definition FIRE.cpp:21
double m_f_a
Definition FIRE.h:43
~FIRE()=default
double m_max_move
Definition FIRE.h:36
eonc::log::FileScoped m_log
Definition FIRE.h:45
size_t m_iteration
Definition FIRE.h:44
int run(size_t a_maxIterations, double a_maxMove) override
Definition FIRE.cpp:76
FIRE(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition FIRE.h:22
size_t m_N
Definition FIRE.h:37
double m_alpha
Definition FIRE.h:40
double m_f_dec
Definition FIRE.h:42
double m_dt
Definition FIRE.h:36
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition Optimizer.h:73
RAII resource manager for the ARTn C library with global synchronization.
Declaration of the optimizer class.
Definition Optimizer.h:51
RAII helper for file-based logging in a class.
Definition EonLogger.h:207