26 [[nodiscard]] SolutionStatus status()
const {
return m_primal_solution.status(); }
28 [[nodiscard]] SolutionReason reason()
const {
return m_primal_solution.reason(); }
30 [[nodiscard]]
bool has_objective_value()
const {
return m_primal_solution.has_objective_value(); }
32 [[nodiscard]]
double objective_value()
const {
return m_primal_solution.objective_value(); }
34 [[nodiscard]]
double sum_of_infeasibilities()
const {
return m_sum_of_infeasibilities.value(); }
36 [[nodiscard]]
const auto& primal_solution()
const {
return m_primal_solution; }
38 void set_primal_solution(
PrimalPoint t_primal_solution) { m_primal_solution = std::move(t_primal_solution); }
40 virtual void save(
const Model& t_original_formulation,
const Model& t_model);
44 void add_branching_variable(
const Var& t_var, CtrType t_type,
double t_bound);
46 void add_branching_constraint(
const Ctr &t_ctr,
TempCtr t_temporary_constraint);
48 [[nodiscard]]
auto variable_branching_decisions()
const {
return ConstIteratorForward(m_variable_branching_decisions); }
50 [[nodiscard]]
auto constraint_branching_decisions()
const {
return ConstIteratorForward(m_constraint_branching_decisions); }
56 std::optional<double> m_sum_of_infeasibilities;
57 std::list<VarBranchingDecision> m_variable_branching_decisions;
58 std::list<CtrBranchingDecision> m_constraint_branching_decisions;