/home/coin/SVN-release/CoinAll-1.1.0/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 
00056 
00057   virtual void unpack_module_data(BCP_buffer & buf);
00058 
00060   virtual void pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf);
00061 
00063   virtual BCP_cut_algo* unpack_cut_algo(BCP_buffer& buf);
00064 
00066   virtual void pack_user_data(const BCP_user_data* ud, BCP_buffer& buf);
00067 
00069   virtual MY_user_data* unpack_user_data(BCP_buffer& buf);
00071 
00072   // Tell Bcp which solver to use and set parameters of solver.
00074   virtual OsiSolverInterface *initialize_solver_interface();
00075   
00077   virtual void initialize_new_search_tree_node(
00078                                  const BCP_vec<BCP_var*>& vars,
00079                                  const BCP_vec<BCP_cut*>& cuts,
00080                                  const BCP_vec<BCP_obj_status>& var_status,
00081                                  const BCP_vec<BCP_obj_status>& cut_status,
00082                                  BCP_vec<int>& var_changed_pos,
00083                                  BCP_vec<double>& var_new_bd,
00084                                  BCP_vec<int>& cut_changed_pos,
00085                                  BCP_vec<double>& cut_new_bd);
00086   
00090   virtual void modify_lp_parameters(OsiSolverInterface* lp, 
00091                                     bool in_strong_branching);
00092   
00097   virtual BCP_solution* test_feasibility(const BCP_lp_result& lp_result,
00098                                          const BCP_vec<BCP_var*>& vars,
00099                                          const BCP_vec<BCP_cut*>& cuts);
00100   
00104   virtual void logical_fixing(const BCP_lp_result& lpres,
00105                               const BCP_vec<BCP_var*>& vars,
00106                               const BCP_vec<BCP_cut*>& cuts,
00107                               const BCP_vec<BCP_obj_status>& var_status,
00108                               const BCP_vec<BCP_obj_status>& cut_status,
00109                               const int var_bound_changes_since_logical_fixing,
00110                               BCP_vec<int>& changed_pos, 
00111                               BCP_vec<double>& new_bd);
00112   
00117   virtual void generate_cuts_in_lp(const BCP_lp_result& lpres,
00118                       const BCP_vec<BCP_var*>& vars,
00119                       const BCP_vec<BCP_cut*>& cuts,
00120                       BCP_vec<BCP_cut*>& new_cuts,
00121                       BCP_vec<BCP_row*>& new_rows);
00122 
00124   virtual BCP_solution* generate_heuristic_solution(
00125                                const BCP_lp_result& lpres,
00126                                const BCP_vec<BCP_var*>& vars,
00127                                const BCP_vec<BCP_cut*>& cuts);
00128 
00132   virtual void
00133   cuts_to_rows(const BCP_vec<BCP_var*>& vars, // on what to expand
00134                BCP_vec<BCP_cut*>& cuts,       // what to expand
00135                BCP_vec<BCP_row*>& rows,       // the expanded rows
00136                const BCP_lp_result& lpres,
00137                BCP_object_origin origin, bool allow_multiple);
00138 
00145 
00146   virtual BCP_branching_decision
00147   select_branching_candidates(const BCP_lp_result& lpres,
00148                               const BCP_vec<BCP_var*>& vars,
00149                               const BCP_vec<BCP_cut*>& cuts,
00150                               const BCP_lp_var_pool& local_var_pool,
00151                               const BCP_lp_cut_pool& local_cut_pool,
00152                               BCP_vec<BCP_lp_branching_object*>& cands);
00153 
00156   virtual void set_user_data_for_children(BCP_presolved_lp_brobj* best, 
00157                                           const int selected);
00158 };
00159 
00160 #endif

Generated on Sun Nov 14 14:06:28 2010 for Coin-All by  doxygen 1.4.7