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
11
namespace
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
28
struct
idol::SideEffectRegistry
{
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
34
template
<
class
NodeInfoT>
35
class
idol::AbstractBranchAndBoundCallbackI
{
36
public
:
37
virtual
~AbstractBranchAndBoundCallbackI
() =
default
;
38
protected
:
39
virtual
SideEffectRegistry
operator()(
40
Optimizers::BranchAndBound<NodeInfoT>
* t_parent,
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
idol::AbstractBranchAndBoundCallbackI
Definition
AbstractBranchAndBoundCallbackI.h:35
idol::BranchAndBoundCallback
Definition
BranchAndBoundCallback.h:131
idol::Model
Definition
Model.h:43
idol::Node
Definition
Node.h:16
idol::Optimizers::BranchAndBound
Definition
Optimizers_BranchAndBound.h:30
idol::SideEffectRegistry
Definition
AbstractBranchAndBoundCallbackI.h:28
lib
include
idol
mixed-integer
optimizers
branch-and-bound
callbacks
AbstractBranchAndBoundCallbackI.h
Generated by
1.9.8