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 : 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},
27 m_N_min{5},
28 m_N{0},
29 m_vel{Eigen::VectorXd::Zero(a_objf->degreesOfFreedom())},
30 m_alpha_start{0.1},
32 m_f_inc{1.1},
33 m_f_dec{0.5},
34 m_f_a{0.99},
35 m_iteration{0} {}
36 virtual ~FIRE() = default;
37
38 int step(double a_maxMove) override;
39 int run(size_t a_maxIterations, double a_maxMove) override;
40
41private:
43 size_t m_N_min, m_N;
44 Eigen::VectorXd m_vel;
46 double m_alpha;
47 double m_f_inc;
48 double m_f_dec;
49 double m_f_a;
51 eonc::log::FileScoped m_log{"fire", "_fire.log"};
52};
53
54} // namespace eonc
55
56using eonc::FIRE;
The optimizer class is used to serve as an abstract class for all optimizers, as well as to call an o...
int step(double a_maxMove) override
Definition FIRE.cpp:19
Eigen::VectorXd m_vel
Definition FIRE.h:44
double m_dt_max
Definition FIRE.h:42
double m_f_inc
Definition FIRE.h:47
size_t m_N_min
Definition FIRE.h:43
double m_alpha_start
Definition FIRE.h:45
double m_f_a
Definition FIRE.h:49
int run(size_t a_maxIterations, double a_maxMove) override
Definition FIRE.cpp:70
double m_max_move
Definition FIRE.h:42
eonc::log::FileScoped m_log
Definition FIRE.h:51
size_t m_iteration
Definition FIRE.h:50
FIRE(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition FIRE.h:22
size_t m_N
Definition FIRE.h:43
double m_alpha
Definition FIRE.h:46
double m_f_dec
Definition FIRE.h:48
double m_dt
Definition FIRE.h:42
virtual ~FIRE()=default
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition Optimizer.h:71
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:208