145 const int var_bound_changes_since_logical_fixing,
153 const double objval)
const;
156 const double objval)
const;
159 const double objval)
const;
161 tailoff_test(
bool& tailoff_gap_rel,
bool& tailoff_lb_abs,
162 bool& tailoff_lb_rel,
const double objval)
const;
BCP_object_origin
This enumerative constant describes the origin (originating process) of an object (variable or cut)...
virtual void cuts_to_rows(const BCP_vec< BCP_var * > &vars, BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_row * > &rows, const BCP_lp_result &lpres, BCP_object_origin origin, bool allow_multiple)
Convert (and possibly lift) a set of cuts into corresponding rows for the current LP relaxation...
bool tried_hard_cuts_in_prev_major_iter
virtual void set_actions_for_children(BCP_presolved_lp_brobj *best)
Decide what to do with the children of the selected branching object.
BCP_presolved_lp_brobj * best_presolved
virtual void pack_cut_algo(const BCP_cut_algo *cut, BCP_buffer &buf)
bool is_lb_tailoff_rel(const int k, const double minimp, const double objval) const
Abstract base class that defines members common to all types of cuts.
This is the class from which the user should derive her own algorithmic cuts.
virtual void unpack_module_data(BCP_buffer &buf)
Unpack the initial information sent to the LP process by the Tree Manager.
void perform_strong_branching(const BCP_lp_result &lpres, OsiSolverInterface *exact_solver, BCP_vec< BCP_lp_branching_object * > &cands)
virtual BCP_branching_decision select_branching_candidates(const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, const BCP_lp_var_pool &local_var_pool, const BCP_lp_cut_pool &local_cut_pool, BCP_vec< BCP_lp_branching_object * > &candidates)
virtual BCP_branching_object_relation compare_branching_candidates(BCP_presolved_lp_brobj *new_presolved, BCP_presolved_lp_brobj *old_presolved)
Decide which branching object is preferred for branching.
The BCP_lp_user class is the base class from which the user can derive a problem specific class to be...
virtual BCP_solution * test_feasibility(const BCP_lp_result &lp_result, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
Evaluate and return MIP feasibility of the current solution.
virtual void logical_fixing(const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, const BCP_vec< BCP_obj_status > &var_status, const BCP_vec< BCP_obj_status > &cut_status, const int var_bound_changes_since_logical_fixing, BCP_vec< int > &changed_pos, BCP_vec< double > &new_bd)
This method provides an opportunity for the user to tighten the bounds of variables.
virtual BCP_cut_algo * unpack_cut_algo(BCP_buffer &buf)
void generate_mst_cuts(const double *x, const double *lhs, const double objval, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
virtual BCP_solution * generate_heuristic_solution(const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
Try to generate a heuristic solution (or return one generated during cut/variable generation...
OsiSolverInterface * solveToOpt(OsiVolSolverInterface *vollp, const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, double &exact_obj)
void unique_cycle_cuts(BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
void tailoff_test(bool &tailoff_gap_rel, bool &tailoff_lb_abs, bool &tailoff_lb_rel, const double objval) const
BCP_branching_decision
This enumerative constant is the return value of the select_branching_candidates() method in [BCP_lp_...
Abstract Base Class for describing an interface to a solver.
virtual void generate_cuts_in_lp(const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
Generate cuts within the LP process.
A presolved branching object candidate.
This class describes the message buffer used for all processes of BCP.
void generate_sp_cuts(const double *x, const double *lhs, const double objval, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
bool is_lb_tailoff_abs(const int k, const double minimp, const double objval) const
BCP_branching_object_relation
This enumerative constant is the return value of the compare_presolved_branching_objects() method in ...
virtual void pack_feasible_solution(BCP_buffer &buf, const BCP_solution *sol)
Pack a MIP feasible solution into a buffer.
This class holds the results after solving an LP relaxation.
MC_lp & operator=(const MC_lp &)
void choose_branching_vars(const BCP_vec< BCP_var * > &vars, const double *x, const int cand_num, BCP_vec< BCP_lp_branching_object * > &cands)
virtual void modify_lp_parameters(OsiSolverInterface *lp, bool in_strong_branching)
BCP_object_compare_result
This enumerative constant describes the possible outcomes when comparing two objects (variables or cu...
BCP_parameter_set< MC_lp_par > par
MC_solution * mc_generate_heuristic_solution(const double *x, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
A local helper function.
virtual OsiSolverInterface * initialize_solver_interface()
Create LP solver environment.
bool is_gap_tailoff_rel(const int k, const double minimp, const double objval) const
virtual BCP_object_compare_result compare_cuts(const BCP_cut *c0, const BCP_cut *c1)
Compare two generated cuts.
Vol(ume) Solver Interface.
This is the abstract base class for a solution to a Mixed Integer Programming problem.