idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
idol::BranchingWithPriority< NodeT > Class Template Reference
Inheritance diagram for idol::BranchingWithPriority< NodeT >:
Inheritance graph
Collaboration diagram for idol::BranchingWithPriority< NodeT >:
Collaboration graph

Public Types

template<class ReturnT , class T >
using only_if_has_Strategy = typename std::pair< typename T::template Strategy< NodeT >, ReturnT >::second_type
 

Public Member Functions

 BranchingWithPriority (const BranchingWithPriority &t_src)
 
BranchingWithPriority< NodeT > & add_branching_rule (const BranchingRuleFactory< NodeT > &t_branching_rule)
 
template<class BranchingRuleFactoryT >
only_if_has_Strategy< BranchingWithPriority< NodeT > &, BranchingRuleFactoryT > add_branching_rule (const BranchingRuleFactoryT &t_branching_rule)
 
BranchingRule< NodeT > * operator() (const Optimizers::BranchAndBound< NodeT > &t_parent) const override
 
BranchingRuleFactory< NodeT > * clone () const override
 

Detailed Description

template<class NodeT = idol::DefaultNodeInfo>
class idol::BranchingWithPriority< NodeT >

Definition at line 20 of file BranchingWithPriority.h.

Member Typedef Documentation

◆ only_if_has_Strategy

template<class NodeT = idol::DefaultNodeInfo>
template<class ReturnT , class T >
using idol::BranchingWithPriority< NodeT >::only_if_has_Strategy = typename std::pair<typename T::template Strategy<NodeT>, ReturnT>::second_type

This type is used to exploit SFINAE in order to identify classes having a sub-class named Strategy<NodeInfoT>. This is used to make calls like .with_node_selection_rule(DepthFirst()); which will actually call .with_node_selection_rule(DepthFirst::Strategy<NodeInfoT>()).

Definition at line 39 of file BranchingWithPriority.h.

Constructor & Destructor Documentation

◆ BranchingWithPriority()

template<class NodeT = idol::DefaultNodeInfo>
idol::BranchingWithPriority< NodeT >::BranchingWithPriority ( const BranchingWithPriority< NodeT > &  t_src)
inline

Definition at line 25 of file BranchingWithPriority.h.

Member Function Documentation

◆ add_branching_rule() [1/2]

template<class NodeT = idol::DefaultNodeInfo>
BranchingWithPriority< NodeT > & idol::BranchingWithPriority< NodeT >::add_branching_rule ( const BranchingRuleFactory< NodeT > &  t_branching_rule)
inline

Definition at line 41 of file BranchingWithPriority.h.

◆ add_branching_rule() [2/2]

template<class NodeT = idol::DefaultNodeInfo>
template<class BranchingRuleFactoryT >
only_if_has_Strategy< BranchingWithPriority< NodeT > &, BranchingRuleFactoryT > idol::BranchingWithPriority< NodeT >::add_branching_rule ( const BranchingRuleFactoryT &  t_branching_rule)
inline

Definition at line 47 of file BranchingWithPriority.h.

◆ clone()

template<class NodeT = idol::DefaultNodeInfo>
BranchingRuleFactory< NodeT > * idol::BranchingWithPriority< NodeT >::clone ( ) const
inlineoverridevirtual

Implements idol::BranchingRuleFactory< NodeT >.

Definition at line 55 of file BranchingWithPriority.h.

◆ operator()()

template<class NodeT = idol::DefaultNodeInfo>
BranchingRule< NodeT > * idol::BranchingWithPriority< NodeT >::operator() ( const Optimizers::BranchAndBound< NodeT > &  t_parent) const
inlineoverridevirtual

Implements idol::BranchingRuleFactory< NodeT >.

Definition at line 51 of file BranchingWithPriority.h.