28 std::unique_ptr<CglCutGenerator> m_cgl_generator;
30 const std::string m_name;
31 unsigned int m_n_calls = 0;
32 unsigned int m_n_generated = 0;
33 unsigned int m_n_accepted = 0;
34 double m_sum_effectiveness = 0.;
35 double m_max_effectiveness = 0.;
40 [[nodiscard]]
const std::string& name()
const {
return m_name; }
41 [[nodiscard]]
double score()
const;
42 [[nodiscard]]
unsigned int n_generated()
const {
return m_n_generated; }
43 [[nodiscard]]
unsigned int n_accepted()
const {
return m_n_accepted; }
44 [[nodiscard]]
double average_effectiveness()
const {
return m_sum_effectiveness / m_n_generated; }
45 [[nodiscard]]
double maximum_effectiveness()
const {
return m_max_effectiveness; }
46 [[nodiscard]]
double acceptance_ratio()
const {
return (
double) m_n_accepted / m_n_generated; }
47 [[nodiscard]]
double average_time_per_call()
const {
return m_timer.cumulative_count() / m_n_calls; }
49 void add_accepted_cut() { m_n_accepted++; }
50 void add_effectiveness_statistics(
double t_effectiveness);
52 OsiCuts generate(OsiSolverInterface& t_osi_solver,
int t_agressiveness);