Loading...
Searching...
No Matches
idol::BranchingWithPriority< NodeT > Class Template Referenceabstract

Description

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

Definition at line 20 of file BranchingWithPriority.h.

Public Types

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

Public Methods

 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
virtual BranchingRule< idol::DefaultNodeInfo > * operator() (const Optimizers::BranchAndBound< idol::DefaultNodeInfo > &t_parent) const=0

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.

Methods 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

◆ operator()()

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

Definition at line 51 of file BranchingWithPriority.h.