/home/coin/Bcp-1.0.0/Bcp/src/include/BCP_tm_user.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef _BCP_TM_USER_FUN_H
00004 #define _BCP_TM_USER_FUN_H
00005 
00006 // This file is fully docified.
00007 
00008 #include "BCP_enum.hpp"
00009 #include "BCP_enum_process_t.hpp"
00010 
00011 #include "BCP_vector.hpp"
00012 #include "BCP_string.hpp"
00013 #include "BCP_buffer.hpp"
00014 #include "BCP_solution.hpp"
00015 #include "BCP_warmstart.hpp"
00016 #include "BCP_var.hpp"
00017 #include "BCP_cut.hpp"
00018 #include "BCP_matrix.hpp"
00019 
00020 #include "BCP_tm_param.hpp"
00021 #include "BCP_tm_node.hpp"
00022 #include "BCP_enum_tm.hpp"
00023 
00024 class BCP_lp_statistics;
00025 
00026 //#############################################################################
00027 
00057 class BCP_tm_user {
00058 private:
00059   BCP_tm_prob * p;
00060 public:
00067 
00068     void setTmProblemPointer(BCP_tm_prob * ptr) { p = ptr; }
00070     BCP_tm_prob * getTmProblemPointer() { return p; }
00075 
00076     double upper_bound() const;
00081 
00082     char              get_param(const BCP_tm_par::chr_params key) const;
00084     int               get_param(const BCP_tm_par::int_params key) const;
00086     double            get_param(const BCP_tm_par::dbl_params key) const;
00088     const BCP_string& get_param(const BCP_tm_par::str_params key) const;
00089 
00091     void set_param(const BCP_tm_par::chr_params key, const bool val);
00093     void set_param(const BCP_tm_par::chr_params key, const char val);
00095     void set_param(const BCP_tm_par::int_params key, const int val);
00097     void set_param(const BCP_tm_par::dbl_params key, const double val);
00099     void set_param(const BCP_tm_par::str_params key, const char * val);
00102   //===========================================================================
00105     BCP_tm_user() : p(0) {}
00108     virtual ~BCP_tm_user() {}
00111   //===========================================================================
00112   // Here are the user defined functions. For each of them a default is given
00113   // which can be overridden when the concrete user class is defined.
00114   //===========================================================================
00115 
00125     virtual void
00126     pack_module_data(BCP_buffer& buf, BCP_process_t ptype);
00127 
00135     virtual BCP_solution*
00136     unpack_feasible_solution(BCP_buffer& buf);
00137 
00142     virtual bool
00143     replace_solution(const BCP_solution* old_sol, const BCP_solution* new_sol);
00144 
00155       virtual void
00156       pack_warmstart(const BCP_warmstart* ws, BCP_buffer& buf);
00158       virtual BCP_warmstart*
00159       unpack_warmstart(BCP_buffer& buf);
00160       
00162       virtual void
00163       pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf);
00165       virtual BCP_var_algo*
00166       unpack_var_algo(BCP_buffer& buf);
00167       
00169       virtual void
00170       pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf);
00172       virtual BCP_cut_algo*
00173       unpack_cut_algo(BCP_buffer& buf);
00174 
00176       virtual void
00177       pack_user_data(const BCP_user_data* ud, BCP_buffer& buf);
00179       virtual BCP_user_data*
00180       unpack_user_data(BCP_buffer& buf);
00183 
00184   //--------------------------------------------------------------------------
00186   const BCP_proc_id* process_id() const;
00188   void
00189   send_message(const BCP_proc_id* const target, const BCP_buffer& buf);
00191   void
00192   broadcast_message(const BCP_process_t proc_type, const BCP_buffer& buf);
00195   virtual void
00196   process_message(BCP_buffer& buf);
00197   //--------------------------------------------------------------------------
00209      virtual void
00210      initialize_core(BCP_vec<BCP_var_core*>& vars,
00211                      BCP_vec<BCP_cut_core*>& cuts,
00212                      BCP_lp_relax*& matrix);
00213     //-------------------------------------------------------------------------
00223      virtual void
00224      create_root(BCP_vec<BCP_var*>& added_vars,
00225                  BCP_vec<BCP_cut*>& added_cuts,
00226                  BCP_user_data*& user_data,
00227                  BCP_pricing_status& pricing_status);
00230   //--------------------------------------------------------------------------
00232   virtual void
00233   display_feasible_solution(const BCP_solution* sol);
00234     
00235   //--------------------------------------------------------------------------
00238   virtual void
00239   display_node_information(BCP_tree& search_tree,
00240                            const BCP_tm_node& node);
00241     
00242   //--------------------------------------------------------------------------
00244   virtual void
00245   display_final_information(const BCP_lp_statistics& lp_stat);
00246     
00247   //---------------------------------------------------------------------------
00252     virtual void
00253     init_new_phase(int phase, BCP_column_generation& colgen);
00256   //---------------------------------------------------------------------------
00266     virtual bool compare_tree_nodes(const BCP_tm_node* node0,
00267                                     const BCP_tm_node* node1);
00269 };
00270 
00271 //#############################################################################
00272 
00273 #endif

Generated on Wed Aug 22 03:00:54 2007 for coin-Bcp by  doxygen 1.4.7