8#include "idol/general/utils/Point.h"
27 static std::ostream &operator<<(std::ostream& t_os, idol::CallbackEvent t_event) {
30 case IncumbentSolution:
return t_os <<
"IncumbentSolution";
31 case InvalidSolution:
return t_os <<
"InvalidSolution";
32 case NodeLoaded:
return t_os <<
"NodeLoaded";
33 case PrunedSolution:
return t_os <<
"PrunedSolution";
44 friend class ::idol::Callback;
46 [[nodiscard]]
virtual const Model& original_model()
const = 0;
48 virtual void add_user_cut(
const TempCtr& t_cut) = 0;
50 virtual void add_lazy_cut(
const TempCtr& t_cut) = 0;
52 virtual void submit_heuristic_solution(
PrimalPoint t_solution) = 0;
54 [[nodiscard]]
virtual PrimalPoint primal_solution()
const = 0;
56 [[nodiscard]]
virtual const Timer& time()
const = 0;
58 [[nodiscard]]
virtual double best_obj()
const = 0;
60 [[nodiscard]]
virtual double best_bound()
const = 0;
62 virtual void terminate() = 0;
64 void execute(
Callback& t_cb, CallbackEvent t_event);
70 friend class ::idol::CallbackI;
134 void throw_if_no_interface()
const;
const Timer & time() const
virtual void add_lazy_cut(const TempCtr &t_cut)
virtual void operator()(CallbackEvent t_event)=0
virtual void submit_heuristic_solution(const PrimalPoint &t_solution)
virtual PrimalPoint primal_solution() const
virtual void add_user_cut(const TempCtr &t_cut)
virtual const Model & original_model() const
double best_bound() const