idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
Diver.h
1
//
2
// Created by henri on 17.10.23.
3
//
4
5
#ifndef IDOL_DIVER_H
6
#define IDOL_DIVER_H
7
8
#include "VariableBranching.h"
9
#include "idol/mixed-integer/optimizers/branch-and-bound/branching-rules/impls/Diver.h"
10
11
namespace
idol {
12
template
<
class
BranchingRuleT>
class
Diver;
13
}
14
15
template
<
class
BranchingRuleT>
16
class
idol::Diver
:
public
idol::VariableBranching
{
17
public
:
18
Diver
() =
default
;
19
20
template
<
class
IteratorT>
21
Diver
(IteratorT t_begin, IteratorT t_end) :
idol::VariableBranching
(t_begin, t_end) {}
22
23
template
<
class
NodeInfoT>
24
class
Strategy
:
public
VariableBranching::Strategy
<NodeInfoT> {
25
public
:
26
Strategy
() =
default
;
27
28
explicit
Strategy
(
const
Diver
& t_parent) :
VariableBranching::Strategy<NodeInfoT>
(t_parent) {}
29
30
BranchingRules::VariableBranching<NodeInfoT>
*
31
operator()(
const
Optimizers::BranchAndBound<NodeInfoT>
&t_parent)
const override
{
32
return
new
BranchingRules::Diver<BranchingRuleT>
(t_parent,
idol::VariableBranching::Strategy<NodeInfoT>::create_branching_candidates
(t_parent.parent()));
33
}
34
35
VariableBranching::Strategy<NodeInfoT>
*clone()
const override
{
36
return
new
Strategy
(*
this
);
37
}
38
};
39
40
};
41
42
#endif
//IDOL_DIVER_H
idol::BranchingRules::Diver
Definition
Diver.h:16
idol::BranchingRules::VariableBranching
Definition
VariableBranching.h:19
idol::Diver::Strategy
Definition
Diver.h:24
idol::Diver
Definition
Diver.h:16
idol::Optimizers::BranchAndBound
Definition
Optimizers_BranchAndBound.h:30
idol::VariableBranching::Strategy
Definition
VariableBranching.h:33
idol::VariableBranching
Definition
VariableBranching.h:18
lib
include
idol
mixed-integer
optimizers
branch-and-bound
branching-rules
factories
Diver.h
Generated by
1.9.8