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

Go to the documentation of this file.
00001 // Last edit: 1/21/09
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                                     const int changeType,
00077                                     bool in_strong_branching);
00078   
00083   virtual BCP_solution* test_feasibility(const BCP_lp_result& lp_result,
00084                                          const BCP_vec<BCP_var*>& vars,
00085                                          const BCP_vec<BCP_cut*>& cuts);
00086   
00090   virtual void logical_fixing(const BCP_lp_result& lpres,
00091                               const BCP_vec<BCP_var*>& vars,
00092                               const BCP_vec<BCP_cut*>& cuts,
00093                               const BCP_vec<BCP_obj_status>& var_status,
00094                               const BCP_vec<BCP_obj_status>& cut_status,
00095                               const int var_bound_changes_since_logical_fixing,
00096                               BCP_vec<int>& changed_pos, 
00097                               BCP_vec<double>& new_bd);
00098   
00103   virtual void generate_cuts_in_lp(const BCP_lp_result& lpres,
00104                       const BCP_vec<BCP_var*>& vars,
00105                       const BCP_vec<BCP_cut*>& cuts,
00106                       BCP_vec<BCP_cut*>& new_cuts,
00107                       BCP_vec<BCP_row*>& new_rows);
00108 
00110   virtual BCP_solution* generate_heuristic_solution(
00111                                const BCP_lp_result& lpres,
00112                                const BCP_vec<BCP_var*>& vars,
00113                                const BCP_vec<BCP_cut*>& cuts);
00114 
00118   virtual void
00119   cuts_to_rows(const BCP_vec<BCP_var*>& vars, // on what to expand
00120                BCP_vec<BCP_cut*>& cuts,       // what to expand
00121                BCP_vec<BCP_row*>& rows,       // the expanded rows
00122                const BCP_lp_result& lpres,
00123                BCP_object_origin origin, bool allow_multiple);
00124 
00131 
00132   virtual BCP_branching_decision
00133   select_branching_candidates(const BCP_lp_result& lpres,
00134                               const BCP_vec<BCP_var*>& vars,
00135                               const BCP_vec<BCP_cut*>& cuts,
00136                               const BCP_lp_var_pool& local_var_pool,
00137                               const BCP_lp_cut_pool& local_cut_pool,
00138                               BCP_vec<BCP_lp_branching_object*>& cands,
00139                               bool force_branch = false);
00140 
00143   virtual void set_user_data_for_children(BCP_presolved_lp_brobj* best, 
00144                                           const int selected);
00145 };
00146 
00147 #endif

Generated on Sun Oct 16 03:01:37 2011 for coin-Bcp by  doxygen 1.4.7