/home/coin/SVN-release/CoinAll-1.1.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_math.hpp"
00009 #include "BCP_enum.hpp"
00010 #include "BCP_enum_process_t.hpp"
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 #include "BCP_tm_param.hpp"
00020 #include "BCP_tm_node.hpp"
00021 #include "BCP_enum_tm.hpp"
00022 
00023 class BCP_lp_statistics;
00024 
00025 //#############################################################################
00026 
00056 class BCP_tm_user {
00057 private:
00058   BCP_tm_prob * p;
00059 public:
00066 
00067     void setTmProblemPointer(BCP_tm_prob * ptr) { p = ptr; }
00069     BCP_tm_prob * getTmProblemPointer() { return p; }
00074 
00075     double upper_bound() const;
00080 
00081     char              get_param(const BCP_tm_par::chr_params key) const;
00083     int               get_param(const BCP_tm_par::int_params key) const;
00085     double            get_param(const BCP_tm_par::dbl_params key) const;
00087     const BCP_string& get_param(const BCP_tm_par::str_params key) const;
00088 
00090     void set_param(const BCP_tm_par::chr_params key, const bool val);
00092     void set_param(const BCP_tm_par::chr_params key, const char val);
00094     void set_param(const BCP_tm_par::int_params key, const int val);
00096     void set_param(const BCP_tm_par::dbl_params key, const double val);
00098     void set_param(const BCP_tm_par::str_params key, const char * val);
00101   //===========================================================================
00104     BCP_tm_user() : p(0) {}
00107     virtual ~BCP_tm_user() {}
00110   //===========================================================================
00111   // Here are the user defined functions. For each of them a default is given
00112   // which can be overridden when the concrete user class is defined.
00113   //===========================================================================
00114 
00124     virtual void
00125     pack_module_data(BCP_buffer& buf, BCP_process_t ptype);
00126 
00134     virtual BCP_solution*
00135     unpack_feasible_solution(BCP_buffer& buf);
00136 
00141     virtual bool
00142     replace_solution(const BCP_solution* old_sol, const BCP_solution* new_sol);
00143 
00154       virtual void
00155       pack_warmstart(const BCP_warmstart* ws, BCP_buffer& buf);
00157       virtual BCP_warmstart*
00158       unpack_warmstart(BCP_buffer& buf);
00159       
00161       virtual void
00162       pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf);
00164       virtual BCP_var_algo*
00165       unpack_var_algo(BCP_buffer& buf);
00166       
00168       virtual void
00169       pack_cut_algo(const BCP_cut_algo* cut, BCP_buffer& buf);
00171       virtual BCP_cut_algo*
00172       unpack_cut_algo(BCP_buffer& buf);
00173 
00175       virtual void
00176       pack_user_data(const BCP_user_data* ud, BCP_buffer& buf);
00178       virtual BCP_user_data*
00179       unpack_user_data(BCP_buffer& buf);
00182 
00183   //--------------------------------------------------------------------------
00185   const BCP_proc_id* process_id() const;
00187   void
00188   send_message(const BCP_proc_id* const target, const BCP_buffer& buf);
00190   void
00191   broadcast_message(const BCP_process_t proc_type, const BCP_buffer& buf);
00194   virtual void
00195   process_message(BCP_buffer& buf);
00196   //--------------------------------------------------------------------------
00208      virtual void
00209      initialize_core(BCP_vec<BCP_var_core*>& vars,
00210                      BCP_vec<BCP_cut_core*>& cuts,
00211                      BCP_lp_relax*& matrix);
00212     //-------------------------------------------------------------------------
00222      virtual void
00223      create_root(BCP_vec<BCP_var*>& added_vars,
00224                  BCP_vec<BCP_cut*>& added_cuts,
00225                  BCP_user_data*& user_data,
00226                  BCP_pricing_status& pricing_status);
00229   //--------------------------------------------------------------------------
00231   virtual void
00232   display_feasible_solution(const BCP_solution* sol);
00233     
00234   //--------------------------------------------------------------------------
00237   virtual void
00238   display_node_information(BCP_tree& search_tree,
00239                            const BCP_tm_node& node);
00240     
00241   //--------------------------------------------------------------------------
00243   virtual void
00244   display_final_information(const BCP_lp_statistics& lp_stat);
00245     
00246   //---------------------------------------------------------------------------
00251     virtual void
00252     init_new_phase(int phase, BCP_column_generation& colgen);
00255   //---------------------------------------------------------------------------
00265     virtual bool compare_tree_nodes(const BCP_tm_node* node0,
00266                                     const BCP_tm_node* node1);
00268 };
00269 
00270 //#############################################################################
00271 
00272 #endif

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