19    std::optional<double> m_lower_multiplicity;
 
   20    std::optional<double> m_upper_multiplicity;
 
   22    std::list<std::unique_ptr<OptimizerFactory>> m_phase_optimizers;
 
   24    std::optional<unsigned int> m_max_column_per_pricing;
 
   25    std::optional<std::pair<unsigned int, double>> m_column_pool_clean_up_parameters; 
 
   35    SubProblem& with_multiplicities(
double t_lower, 
double t_upper);
 
   37    SubProblem& with_lower_multiplicity(
double t_lower);
 
   39    SubProblem& with_upper_multiplicity(
double t_upper);
 
   43    SubProblem& with_max_column_per_pricing(
unsigned int t_n_columns);
 
   45    SubProblem& with_column_pool_clean_up(
unsigned int t_threshold, 
double t_ratio);
 
   47    unsigned int max_column_per_pricing()
 const { 
return m_max_column_per_pricing.has_value() ? m_max_column_per_pricing.value() : 1; }
 
   49    double lower_multiplicity() 
const;
 
   51    double upper_multiplicity() 
const;
 
   53    unsigned int column_pool_clean_up_threshold() 
const;
 
   55    double column_pool_clean_up_ratio() 
const;
 
   57    using PhaseId = std::list<std::unique_ptr<OptimizerFactory>>::const_iterator;