Loading...
Searching...
No Matches
XtsciOptimizer.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 "eon/Optimizer.h"
15#include "eon/XtsciEindir.h"
16
17struct xts_solver_t;
18
19namespace eonc {
20
23class XtsciOptimizer final : public Optimizer {
24public:
25 XtsciOptimizer(std::shared_ptr<ObjectiveFunction> a_objf,
26 const Parameters &a_params)
27 : Optimizer(a_objf, OptType::XTSCI,
28 OptimizerConfig::fromParams(a_params)) {}
29 ~XtsciOptimizer() override;
30
31 XtsciOptimizer(const XtsciOptimizer &) = delete;
33
34 int step(double a_maxMove) override;
35 int run(size_t a_maxIterations, double a_maxMove) override;
36
37private:
38 // Opaque xtsci session. L-BFGS pairs / NLCG directions live here.
39 xts_solver_t *m_solver{nullptr};
40 // Borrowed eindir objective. Null unless eindir-core is linked.
41 xtsci_eindir::State *m_eindir{nullptr};
42 // Last x passed to setPositions. Persists across step() so eval
43 // at the accepted point does not dirty Matter.
44 Eigen::VectorXd m_cached_x;
45 // Solver state. write_report updates this in place. Do not refresh
46 // from Matter::getPositions: PBC wrap would break last-x reuse.
47 Eigen::VectorXd m_x;
48
49 void ensureSolver(double a_maxMove);
50};
51
52} // namespace eonc
53
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:73
xtsci-optimize backend.
int run(size_t a_maxIterations, double a_maxMove) override
void ensureSolver(double a_maxMove)
Eigen::VectorXd m_cached_x
XtsciOptimizer(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
XtsciOptimizer & operator=(const XtsciOptimizer &)=delete
xts_solver_t * m_solver
Eigen::VectorXd m_x
int step(double a_maxMove) override
XtsciOptimizer(const XtsciOptimizer &)=delete
xtsci_eindir::State * m_eindir
RAII resource manager for the ARTn C library with global synchronization.
Declaration of the optimizer class.
Definition Optimizer.h:51