coin-Bcp
MCF3_lp.hpp
Go to the documentation of this file.
1 #ifndef MCF3_lp_hpp
2 #define MCF3_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 "MCF3_par.hpp"
9 #include "MCF3_var.hpp"
10 #include "MCF3_data.hpp"
11 
12 class MCF3_lp : public BCP_lp_user
13 {
17  std::vector<MCF3_branch_decision>* branch_history;
18  std::vector<MCF3_branch_decision>* new_branch;
19  std::vector<int> commodities_with_candidate;
20 
21  // the solution to the original formulation
22  std::map<int,double>* flows;
23 
26 
27 public:
28  MCF3_lp() {}
29  virtual ~MCF3_lp() {
30  delete[] flows;
31  delete[] new_branch;
33  delete cg_lp;
34  }
35 
36  virtual void unpack_module_data(BCP_buffer& buf);
37 
39 
40  virtual void
42  const BCP_vec<BCP_cut*>& cuts,
43  const BCP_vec<BCP_obj_status>& var_status,
44  const BCP_vec<BCP_obj_status>& cut_status,
45  BCP_vec<int>& var_changed_pos,
46  BCP_vec<double>& var_new_bd,
47  BCP_vec<int>& cut_changed_pos,
48  BCP_vec<double>& cut_new_bd);
49  virtual BCP_solution*
50  test_feasibility(const BCP_lp_result& lp_result,
51  const BCP_vec<BCP_var*>& vars,
52  const BCP_vec<BCP_cut*>& cuts);
53  virtual double
54  compute_lower_bound(const double old_lower_bound,
55  const BCP_lp_result& lpres,
56  const BCP_vec<BCP_var*>& vars,
57  const BCP_vec<BCP_cut*>& cuts);
58  virtual void
60  const BCP_vec<BCP_var*>& vars,
61  const BCP_vec<BCP_cut*>& cuts,
62  const bool before_fathom,
63  BCP_vec<BCP_var*>& new_vars,
64  BCP_vec<BCP_col*>& new_cols);
65  virtual void
66  vars_to_cols(const BCP_vec<BCP_cut*>& cuts,
67  BCP_vec<BCP_var*>& vars,
68  BCP_vec<BCP_col*>& cols,
69  const BCP_lp_result& lpres,
70  BCP_object_origin origin, bool allow_multiple);
73  const BCP_vec<BCP_var*>& vars,
74  const BCP_vec<BCP_cut*>& cuts,
75  const BCP_lp_var_pool& local_var_pool,
76  const BCP_lp_cut_pool& local_cut_pool,
78  bool force_branch = false);
79  virtual void
81  const int selected);
82 };
83 
84 #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 set_user_data_for_children(BCP_presolved_lp_brobj *best, const int selected)
For each child create a user data object and put it into the appropriate entry in best-&gt;user_data()...
std::vector< MCF3_branch_decision > * branch_history
Definition: MCF3_lp.hpp:17
std::vector< MCF3_branch_decision > * new_branch
Definition: MCF3_lp.hpp:18
bool generated_vars
Definition: MCF3_lp.hpp:25
virtual ~MCF3_lp()
Definition: MCF3_lp.hpp:29
BCP_parameter_set< MCF3_par > par
Definition: MCF3_lp.hpp:15
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 void unpack_module_data(BCP_buffer &buf)
Unpack the initial information sent to the LP process by the Tree Manager.
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
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...
std::map< int, double > * flows
Definition: MCF3_lp.hpp:22
BCP_branching_decision
This enumerative constant is the return value of the select_branching_candidates() method in [BCP_lp_...
OsiSolverInterface * cg_lp
Definition: MCF3_lp.hpp:14
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 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.
BCP_vec< BCP_var * > gen_vars
Definition: MCF3_lp.hpp:24
std::vector< int > commodities_with_candidate
Definition: MCF3_lp.hpp:19
A presolved branching object candidate.
virtual OsiSolverInterface * initialize_solver_interface()
Create LP solver environment.
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.
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
MCF3_data data
Definition: MCF3_lp.hpp:16
This class holds the results after solving an LP relaxation.
MCF3_lp()
Definition: MCF3_lp.hpp:28
This is the abstract base class for a solution to a Mixed Integer Programming problem.
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.