/home/coin/SVN-release/Bcp-1.2.1/Bcp/examples/BAC/include/BB_lp.hpp

Go to the documentation of this file.
00001 // Last edit: 2/10/05
00002 //
00003 // Name:     BB_lp.hpp
00004 // Author:   Francois Margot
00005 //           Tepper School of Business
00006 //           Carnegie Mellon University, Pittsburgh, PA 15213
00007 //           email: fmargot@andrew.cmu.edu
00008 // Date:     12/28/03
00009 //-----------------------------------------------------------------------------
00010 // Copyright (C) 2003, Francois Margot, International Business Machines
00011 // Corporation and others.  All Rights Reserved.
00012 
00013 #ifndef _BB_LP_H
00014 #define _BB_LP_H
00015 
00016 #include "BB.hpp"
00017 #include "BCP_lp_user.hpp"
00018 
00019 #include "BB_user_data.hpp"
00020 
00023 class BB_lp : public BCP_lp_user {
00024 
00026   BB_prob *p_desc;     
00027 
00029   MY_user_data *p_ud;  
00030   
00032   int in_strong;       
00033 
00035   double EPS;          
00036 
00038   BCP_vec<BCP_cut*> algo_cuts;    
00039 
00041   std::vector<int> violated_cuts; 
00042 
00043 public:
00044 
00047 
00048   BB_lp(){}
00049   
00051   virtual ~BB_lp() {}
00053 
00055   virtual void unpack_module_data(BCP_buffer & buf);
00056 
00057   // Tell Bcp which solver to use and set parameters of solver.
00059   virtual OsiSolverInterface *initialize_solver_interface();
00060   
00062   virtual void initialize_new_search_tree_node(
00063                                  const BCP_vec<BCP_var*>& vars,
00064                                  const BCP_vec<BCP_cut*>& cuts,
00065                                  const BCP_vec<BCP_obj_status>& var_status,
00066                                  const BCP_vec<BCP_obj_status>& cut_status,
00067                                  BCP_vec<int>& var_changed_pos,
00068                                  BCP_vec<double>& var_new_bd,
00069                                  BCP_vec<int>& cut_changed_pos,
00070                                  BCP_vec<double>& cut_new_bd);
00071   
00075   virtual void modify_lp_parameters(OsiSolverInterface* lp, 
00076                                     bool in_strong_branching);
00077   
00082   virtual BCP_solution* test_feasibility(const BCP_lp_result& lp_result,
00083                                          const BCP_vec<BCP_var*>& vars,
00084                                          const BCP_vec<BCP_cut*>& cuts);
00085   
00089   virtual void logical_fixing(const BCP_lp_result& lpres,
00090                               const BCP_vec<BCP_var*>& vars,
00091                               const BCP_vec<BCP_cut*>& cuts,
00092                               const BCP_vec<BCP_obj_status>& var_status,
00093                               const BCP_vec<BCP_obj_status>& cut_status,
00094                               const int var_bound_changes_since_logical_fixing,
00095                               BCP_vec<int>& changed_pos, 
00096                               BCP_vec<double>& new_bd);
00097   
00102   virtual void generate_cuts_in_lp(const BCP_lp_result& lpres,
00103                       const BCP_vec<BCP_var*>& vars,
00104                       const BCP_vec<BCP_cut*>& cuts,
00105                       BCP_vec<BCP_cut*>& new_cuts,
00106                       BCP_vec<BCP_row*>& new_rows);
00107 
00109   virtual BCP_solution* generate_heuristic_solution(
00110                                const BCP_lp_result& lpres,
00111                                const BCP_vec<BCP_var*>& vars,
00112                                const BCP_vec<BCP_cut*>& cuts);
00113 
00117   virtual void
00118   cuts_to_rows(const BCP_vec<BCP_var*>& vars, // on what to expand
00119                BCP_vec<BCP_cut*>& cuts,       // what to expand
00120                BCP_vec<BCP_row*>& rows,       // the expanded rows
00121                const BCP_lp_result& lpres,
00122                BCP_object_origin origin, bool allow_multiple);
00123 
00130 
00131   virtual BCP_branching_decision
00132   select_branching_candidates(const BCP_lp_result& lpres,
00133                               const BCP_vec<BCP_var*>& vars,
00134                               const BCP_vec<BCP_cut*>& cuts,
00135                               const BCP_lp_var_pool& local_var_pool,
00136                               const BCP_lp_cut_pool& local_cut_pool,
00137                               BCP_vec<BCP_lp_branching_object*>& cands);
00138 
00141   virtual void set_user_data_for_children(BCP_presolved_lp_brobj* best, 
00142                                           const int selected);
00143 };
00144 
00145 #endif

Generated on Thu Jan 15 03:00:58 2009 for coin-Bcp by  doxygen 1.4.7