00001 #ifndef MCF3_tm_hpp
00002 #define MCF3_tm_hpp
00003
00004 #include "BCP_buffer.hpp"
00005 #include "BCP_tm_user.hpp"
00006 #include "BCP_parameters.hpp"
00007 #include "MCF3_par.hpp"
00008 #include "MCF3_var.hpp"
00009 #include "MCF3_data.hpp"
00010
00011 class MCF3_packer : public BCP_user_pack
00012 {
00014 virtual void
00015 pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf) {
00016 MCF3_pack_var(var, buf);
00017 }
00018
00020 virtual BCP_var_algo* unpack_var_algo(BCP_buffer& buf) {
00021 return MCF3_unpack_var(buf);
00022 }
00023
00025 virtual void
00026 pack_user_data(const BCP_user_data* ud, BCP_buffer& buf) {
00027 const MCF3_user* u = dynamic_cast<const MCF3_user*>(ud);
00028 u->pack(buf);
00029 }
00030
00032 virtual BCP_user_data* unpack_user_data(BCP_buffer& buf) {
00033 return new MCF3_user(buf);
00034 }
00035 };
00036
00037
00038
00039 class MCF3_tm : public BCP_tm_user
00040 {
00041 public:
00042 BCP_parameter_set<MCF3_par> par;
00043 MCF3_data data;
00044
00045 public:
00046 MCF3_tm() {}
00047 virtual ~MCF3_tm() {}
00048
00049 virtual void pack_module_data(BCP_buffer& buf, BCP_process_t ptype);
00050 virtual void init_new_phase(int phase,
00051 BCP_column_generation& colgen,
00052 CoinSearchTreeBase*& candidates);
00053 virtual void initialize_core(BCP_vec<BCP_var_core*>& vars,
00054 BCP_vec<BCP_cut_core*>& cuts,
00055 BCP_lp_relax*& matrix);
00056 virtual void create_root(BCP_vec<BCP_var*>& added_vars,
00057 BCP_vec<BCP_cut*>& added_cuts,
00058 BCP_user_data*& user_data);
00059 virtual void display_feasible_solution(const BCP_solution* sol);
00060 };
00061
00062 #endif