coin-Bcp
MCF2_lp.hpp
Go to the documentation of this file.
1 #ifndef MCF2_lp_hpp
2 #define MCF2_lp_hpp
3 
4 #include "OsiSolverInterface.hpp"
5 #include "BCP_buffer.hpp"
6 #include "BCP_lp_user.hpp"
7 #include "BCP_parameters.hpp"
8 #include "MCF2_par.hpp"
9 #include "MCF2_var.hpp"
10 #include "MCF2_data.hpp"
11 
12 class MCF2_lp : public BCP_lp_user
13 {
17  std::vector<MCF2_branch_decision>* branch_history;
18  // the solution to the original formulation
19  std::map<int,double>* flows;
20 
23 
24 public:
25  MCF2_lp() {}
26  virtual ~MCF2_lp() {
27  delete[] branch_history;
28  delete[] flows;
30  delete cg_lp;
31  }
32 
33  virtual void unpack_module_data(BCP_buffer& buf);
34 
36 
37  virtual void
39  const BCP_vec<BCP_cut*>& cuts,
40  const BCP_vec<BCP_obj_status>& var_status,
41  const BCP_vec<BCP_obj_status>& cut_status,
42  BCP_vec<int>& var_changed_pos,
43  BCP_vec<double>& var_new_bd,
44  BCP_vec<int>& cut_changed_pos,
45  BCP_vec<double>& cut_new_bd);
46  virtual BCP_solution*
47  test_feasibility(const BCP_lp_result& lp_result,
48  const BCP_vec<BCP_var*>& vars,
49  const BCP_vec<BCP_cut*>& cuts);
50  virtual double
51  compute_lower_bound(const double old_lower_bound,
52  const BCP_lp_result& lpres,
53  const BCP_vec<BCP_var*>& vars,
54  const BCP_vec<BCP_cut*>& cuts);
55  virtual void
57  const BCP_vec<BCP_var*>& vars,
58  const BCP_vec<BCP_cut*>& cuts,
59  const bool before_fathom,
60  BCP_vec<BCP_var*>& new_vars,
61  BCP_vec<BCP_col*>& new_cols);
62  virtual void
63  vars_to_cols(const BCP_vec<BCP_cut*>& cuts,
64  BCP_vec<BCP_var*>& vars,
65  BCP_vec<BCP_col*>& cols,
66  const BCP_lp_result& lpres,
67  BCP_object_origin origin, bool allow_multiple);
70  const BCP_vec<BCP_var*>& vars,
71  const BCP_vec<BCP_cut*>& cuts,
72  const BCP_lp_var_pool& local_var_pool,
73  const BCP_lp_cut_pool& local_cut_pool,
75  bool force_branch = false);
76 };
77 
78 #endif
BCP_object_origin
This enumerative constant describes the origin (originating process) of an object (variable or cut)...
Definition: BCP_enum.hpp:249
virtual void vars_to_cols(const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_var * > &vars, BCP_vec< BCP_col * > &cols, const BCP_lp_result &lpres, BCP_object_origin origin, bool allow_multiple)
Convert a set of variables into corresponding columns for the current LP relaxation.
MCF2_data data
Definition: MCF2_lp.hpp:16
MCF2_lp()
Definition: MCF2_lp.hpp:25
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 * > &cands, bool force_branch=false)
Decide whether to branch or not and select a set of branching candidates if branching is decided upon...
OsiSolverInterface * cg_lp
Definition: MCF2_lp.hpp:14
virtual void unpack_module_data(BCP_buffer &buf)
Unpack the initial information sent to the LP process by the Tree Manager.
std::vector< MCF2_branch_decision > * branch_history
Definition: MCF2_lp.hpp:17
BCP_vec< BCP_var * > gen_vars
Definition: MCF2_lp.hpp:21
The BCP_lp_user class is the base class from which the user can derive a problem specific class to be...
Definition: BCP_lp_user.hpp:75
std::map< int, double > * flows
Definition: MCF2_lp.hpp:19
BCP_parameter_set< MCF2_par > par
Definition: MCF2_lp.hpp:15
BCP_branching_decision
This enumerative constant is the return value of the select_branching_candidates() method in [BCP_lp_...
virtual OsiSolverInterface * initialize_solver_interface()
Create LP solver environment.
Abstract Base Class for describing an interface to a solver.
virtual void initialize_new_search_tree_node(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, BCP_vec< int > &var_changed_pos, BCP_vec< double > &var_new_bd, BCP_vec< int > &cut_changed_pos, BCP_vec< double > &cut_new_bd)
Initializing a new search tree node.
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.
bool generated_vars
Definition: MCF2_lp.hpp:22
This class describes the message buffer used for all processes of BCP.
Definition: BCP_buffer.hpp:39
void purge_ptr_vector(BCP_vec< T * > &pvec, typename BCP_vec< T * >::iterator first, typename BCP_vec< T * >::iterator last)
This function purges the entries [first,last) from the vector of pointers pvec.
Definition: BCP_vector.hpp:266
This class holds the results after solving an LP relaxation.
virtual double compute_lower_bound(const double old_lower_bound, const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
Compute a true lower bound for the subproblem.
virtual void generate_vars_in_lp(const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, const bool before_fathom, BCP_vec< BCP_var * > &new_vars, BCP_vec< BCP_col * > &new_cols)
Generate variables within the LP process.
virtual ~MCF2_lp()
Definition: MCF2_lp.hpp:26
This is the abstract base class for a solution to a Mixed Integer Programming problem.