idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Factory.h
1//
2// Created by henri on 23.11.23.
3//
4
5#ifndef IDOL_BRANCHADNDBOUND_LOGGERFACTORY_H
6#define IDOL_BRANCHADNDBOUND_LOGGERFACTORY_H
7
8#include "idol/mixed-integer/optimizers/branch-and-bound/nodes/DefaultNodeInfo.h"
9
10namespace idol {
11 namespace Optimizers {
12 template<class NodeInfoT> class BranchAndBound;
13 }
14 namespace Logs::BranchAndBound {
15 template<class NodeInfoT> class Factory;
16 }
17}
18
19template<class NodeInfoT = idol::DefaultNodeInfo>
21public:
22 virtual ~Factory() = default;
23
24 class Strategy {
26 protected:
27 Optimizers::BranchAndBound<NodeInfoT>& parent() { return m_parent; }
28 const Optimizers::BranchAndBound<NodeInfoT>& parent() const { return m_parent; }
29 public:
30 Strategy(Optimizers::BranchAndBound<NodeInfoT>& t_parent) : m_parent(t_parent) {}
31
32 virtual ~Strategy() = default;
33
34 virtual void initialize() {}
35
36 virtual void log_node_after_solve(const Node<NodeInfoT>& t_node) {}
37
38 virtual void log_after_termination() {}
39 };
40
41 virtual Strategy* operator()(Optimizers::BranchAndBound<NodeInfoT>& t_parent) const = 0;
42
43 virtual Factory* clone() const = 0;
44};
45
46#endif //IDOL_BRANCHADNDBOUND_LOGGERFACTORY_H