/home/coin/SVN-release/CoinAll-1.1.0/Bcp/examples/MCF-3/include/MCF3_lp.hpp

Go to the documentation of this file.
00001 #ifndef MCF3_lp_hpp
00002 #define MCF3_lp_hpp
00003 
00004 #include "OsiSolverInterface.hpp"
00005 #include "BCP_buffer.hpp"
00006 #include "BCP_lp_user.hpp"
00007 #include "BCP_parameters.hpp"
00008 #include "MCF3_par.hpp"
00009 #include "MCF3_var.hpp"
00010 #include "MCF3_data.hpp"
00011 
00012 class MCF3_lp : public BCP_lp_user
00013 {
00014     OsiSolverInterface* cg_lp;
00015     BCP_parameter_set<MCF3_par> par;
00016     MCF3_data data;
00017     std::vector<MCF3_branch_decision>* branch_history;
00018     std::vector<MCF3_branch_decision>* new_branch;
00019     std::vector<int> commodities_with_candidate;
00020     
00021     // the solution to the original formulation
00022     std::map<int,double>* flows;
00023 
00024     BCP_vec<BCP_var*> gen_vars;
00025     bool generated_vars;
00026 
00027 public:
00028     MCF3_lp() {}
00029     virtual ~MCF3_lp() {
00030         delete[] flows;
00031         delete[] new_branch;
00032         purge_ptr_vector(gen_vars);
00033         delete cg_lp;
00034     }
00035 
00036     virtual void unpack_module_data(BCP_buffer& buf);
00037     virtual void pack_var_algo(const BCP_var_algo* var, BCP_buffer& buf) {
00038         MCF3_pack_var(var, buf);
00039     }
00040     virtual BCP_var_algo* unpack_var_algo(BCP_buffer& buf) {
00041         return MCF3_unpack_var(buf);
00042     }
00043     
00044     virtual void pack_user_data(const BCP_user_data* ud, BCP_buffer& buf) {
00045         const MCF3_user* u = dynamic_cast<const MCF3_user*>(ud);
00046         u->pack(buf);
00047     }
00048     virtual BCP_user_data* unpack_user_data(BCP_buffer& buf) {
00049         MCF3_user* u = new MCF3_user;
00050         u->unpack(buf);
00051         return u;
00052     }
00053 
00054     virtual OsiSolverInterface* initialize_solver_interface();
00055 
00056     virtual void
00057     initialize_new_search_tree_node(const BCP_vec<BCP_var*>& vars,
00058                                     const BCP_vec<BCP_cut*>& cuts,
00059                                     const BCP_vec<BCP_obj_status>& var_status,
00060                                     const BCP_vec<BCP_obj_status>& cut_status,
00061                                     BCP_vec<int>& var_changed_pos,
00062                                     BCP_vec<double>& var_new_bd,
00063                                     BCP_vec<int>& cut_changed_pos,
00064                                     BCP_vec<double>& cut_new_bd);
00065     virtual BCP_solution*
00066     test_feasibility(const BCP_lp_result& lp_result,
00067                      const BCP_vec<BCP_var*>& vars,
00068                      const BCP_vec<BCP_cut*>& cuts);
00069     virtual double
00070     compute_lower_bound(const double old_lower_bound,
00071                         const BCP_lp_result& lpres,
00072                         const BCP_vec<BCP_var*>& vars,
00073                         const BCP_vec<BCP_cut*>& cuts);
00074     virtual void
00075     generate_vars_in_lp(const BCP_lp_result& lpres,
00076                         const BCP_vec<BCP_var*>& vars,
00077                         const BCP_vec<BCP_cut*>& cuts,
00078                         const bool before_fathom,
00079                         BCP_vec<BCP_var*>& new_vars,
00080                         BCP_vec<BCP_col*>& new_cols);
00081     virtual void
00082     vars_to_cols(const BCP_vec<BCP_cut*>& cuts,
00083                  BCP_vec<BCP_var*>& vars,
00084                  BCP_vec<BCP_col*>& cols,
00085                  const BCP_lp_result& lpres,
00086                  BCP_object_origin origin, bool allow_multiple);
00087     virtual BCP_branching_decision
00088     select_branching_candidates(const BCP_lp_result& lpres,
00089                                 const BCP_vec<BCP_var*>& vars,
00090                                 const BCP_vec<BCP_cut*>& cuts,
00091                                 const BCP_lp_var_pool& local_var_pool,
00092                                 const BCP_lp_cut_pool& local_cut_pool,
00093                                 BCP_vec<BCP_lp_branching_object*>& cands);
00094     virtual void
00095     set_user_data_for_children(BCP_presolved_lp_brobj* best, 
00096                                const int selected);
00097 };
00098 
00099 #endif

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