Loading...
Searching...
No Matches
Quickmin.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 "Matter.h"
16#include "Optimizer.h"
17#include "Parameters.h"
18
19namespace eonc {
20
21// when changing away from final, remember to mark the destructor as virtual
22class Quickmin final : public Optimizer {
23
24public:
25 Quickmin(std::shared_ptr<ObjectiveFunction> a_objf,
26 const Parameters &a_params)
27 : Optimizer(a_objf, OptType::QM, a_params),
28 m_dt{a_params.optimizer_options.time_step},
29 m_dt_max{a_params.optimizer_options.max_time_step},
30 m_max_move{a_params.optimizer_options.max_move},
31 m_vel{Eigen::VectorXd::Zero(a_objf->degreesOfFreedom())},
32 m_iteration{0},
33 m_max_iter{a_params.optimizer_options.max_iterations} {}
34 ~Quickmin() = default;
35
36 int step(double a_maxMove) override;
37 int run(size_t a_maxIterations, double a_maxMove) override;
38
39private:
41 Eigen::VectorXd m_vel;
43 eonc::log::FileScoped m_log{"quickmin", "_quickmin.log"};
44};
45
46} // namespace eonc
47
48using eonc::Quickmin;
The optimizer class is used to serve as an abstract class for all optimizers, as well as to call an o...
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition Optimizer.h:71
Quickmin(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Definition Quickmin.h:25
double m_dt
Definition Quickmin.h:40
Eigen::VectorXd m_vel
Definition Quickmin.h:41
eonc::log::FileScoped m_log
Definition Quickmin.h:43
size_t m_max_iter
Definition Quickmin.h:42
int step(double a_maxMove) override
Definition Quickmin.cpp:15
size_t m_iteration
Definition Quickmin.h:42
~Quickmin()=default
int run(size_t a_maxIterations, double a_maxMove) override
Definition Quickmin.cpp:38
double m_dt_max
Definition Quickmin.h:40
double m_max_move
Definition Quickmin.h:40
RAII resource manager for the ARTn C library with global synchronization.
RAII helper for file-based logging in a class.
Definition EonLogger.h:208