5#ifndef IDOL_STRONGBRANCHING_H
6#define IDOL_STRONGBRANCHING_H
8#include "VariableBranching.h"
9#include "idol/mixed-integer/optimizers/branch-and-bound/branching-rules/impls/NodeScoreFunction.h"
10#include "idol/mixed-integer/optimizers/branch-and-bound/branching-rules/impls/strong-branching/StrongBranchingPhase.h"
11#include "idol/mixed-integer/optimizers/branch-and-bound/branching-rules/impls/StrongBranching.h"
14 class StrongBranching;
21 template<
class IteratorT>
24 template<
class NodeInfoT>
26 std::optional<unsigned int> m_max_n_variables;
27 std::unique_ptr<NodeScoreFunction> m_node_scoring_function;
28 std::list<StrongBranchingPhase> m_phases;
42 m_max_n_variables.has_value() ? m_max_n_variables.value() : 100,
59 std::optional<unsigned int> m_max_n_variables;
60 std::unique_ptr<NodeScoreFunction> m_node_scoring_function;
61 std::list<StrongBranchingPhase> m_phases;
64template<
class NodeInfoT>
67 m_max_n_variables(t_parent.m_max_n_variables),
68 m_node_scoring_function(t_parent.m_node_scoring_function ? t_parent.m_node_scoring_function->clone() : nullptr),
69 m_phases(t_parent.m_phases) {
73template<
class NodeInfoT>
75 : VariableBranching::Strategy<NodeInfoT>(t_src),
76 m_max_n_variables(t_src.m_max_n_variables),
77 m_node_scoring_function(t_src.m_node_scoring_function ? t_src.m_node_scoring_function->clone() : nullptr),
78 m_phases(t_src.m_phases)