idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
AbstractBranchAndBoundCallbackI.h
1//
2// Created by henri on 12/04/23.
3//
4
5#ifndef IDOL_ABSTRACTBRANCHANDBOUNDCALLBACKI_H
6#define IDOL_ABSTRACTBRANCHANDBOUNDCALLBACKI_H
7
8#include "idol/general/utils/Point.h"
9#include "idol/mixed-integer/optimizers/callbacks/Callback.h"
10
11namespace idol {
12
13 template<class NodeInfoT>
14 class BranchAndBoundCallback;
15
16 namespace Optimizers {
17 template<class NodeInfoT>
18 class BranchAndBound;
19 }
20
21 struct SideEffectRegistry;
22
23 template<class NodeInfoT>
24 class AbstractBranchAndBoundCallbackI;
25
26}
27
29 unsigned int n_added_lazy_cuts = 0;
30 unsigned int n_added_user_cuts = 0;
31 unsigned int n_added_local_variable_branching = 0;
32};
33
34template<class NodeInfoT>
36public:
37 virtual ~AbstractBranchAndBoundCallbackI() = default;
38protected:
39 virtual SideEffectRegistry operator()(
41 CallbackEvent t_event,
42 const Node<NodeInfoT>& t_current_node,
43 Model* t_relaxation) = 0;
44
45 virtual void add_callback(BranchAndBoundCallback<NodeInfoT>* t_cb) = 0;
46
47 virtual void initialize(Optimizers::BranchAndBound<NodeInfoT>* t_parent) = 0;
48
49 virtual void log_after_termination() = 0;
50
51 friend class Optimizers::BranchAndBound<NodeInfoT>;
52};
53
54#endif //IDOL_ABSTRACTBRANCHANDBOUNDCALLBACKI_H