/home/coin/SVN-release/Bcp-1.3.2/Bcp/examples/MCF-2/include/MCF2_lp.hpp

Go to the documentation of this file.
00001 #ifndef MCF2_lp_hpp
00002 #define MCF2_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 "MCF2_par.hpp"
00009 #include "MCF2_var.hpp"
00010 #include "MCF2_data.hpp"
00011 
00012 class MCF2_lp : public BCP_lp_user
00013 {
00014     OsiSolverInterface* cg_lp;
00015     BCP_parameter_set<MCF2_par> par;
00016     MCF2_data data;
00017     std::vector<MCF2_branch_decision>* branch_history;
00018     // the solution to the original formulation
00019     std::map<int,double>* flows;
00020 
00021     BCP_vec<BCP_var*> gen_vars;
00022     bool generated_vars;
00023 
00024 public:
00025     MCF2_lp() {}
00026     virtual ~MCF2_lp() {
00027         delete[] branch_history;
00028         delete[] flows;
00029         purge_ptr_vector(gen_vars);
00030         delete cg_lp;
00031     }
00032 
00033     virtual void unpack_module_data(BCP_buffer& buf);
00034 
00035     virtual OsiSolverInterface* initialize_solver_interface();
00036 
00037     virtual void
00038     initialize_new_search_tree_node(const BCP_vec<BCP_var*>& vars,
00039                                     const BCP_vec<BCP_cut*>& cuts,
00040                                     const BCP_vec<BCP_obj_status>& var_status,
00041                                     const BCP_vec<BCP_obj_status>& cut_status,
00042                                     BCP_vec<int>& var_changed_pos,
00043                                     BCP_vec<double>& var_new_bd,
00044                                     BCP_vec<int>& cut_changed_pos,
00045                                     BCP_vec<double>& cut_new_bd);
00046     virtual BCP_solution*
00047     test_feasibility(const BCP_lp_result& lp_result,
00048                      const BCP_vec<BCP_var*>& vars,
00049                      const BCP_vec<BCP_cut*>& cuts);
00050     virtual double
00051     compute_lower_bound(const double old_lower_bound,
00052                         const BCP_lp_result& lpres,
00053                         const BCP_vec<BCP_var*>& vars,
00054                         const BCP_vec<BCP_cut*>& cuts);
00055     virtual void
00056     generate_vars_in_lp(const BCP_lp_result& lpres,
00057                         const BCP_vec<BCP_var*>& vars,
00058                         const BCP_vec<BCP_cut*>& cuts,
00059                         const bool before_fathom,
00060                         BCP_vec<BCP_var*>& new_vars,
00061                         BCP_vec<BCP_col*>& new_cols);
00062     virtual void
00063     vars_to_cols(const BCP_vec<BCP_cut*>& cuts,
00064                  BCP_vec<BCP_var*>& vars,
00065                  BCP_vec<BCP_col*>& cols,
00066                  const BCP_lp_result& lpres,
00067                  BCP_object_origin origin, bool allow_multiple);
00068     virtual BCP_branching_decision
00069     select_branching_candidates(const BCP_lp_result& lpres,
00070                                 const BCP_vec<BCP_var*>& vars,
00071                                 const BCP_vec<BCP_cut*>& cuts,
00072                                 const BCP_lp_var_pool& local_var_pool,
00073                                 const BCP_lp_cut_pool& local_cut_pool,
00074                                 BCP_vec<BCP_lp_branching_object*>& cands,
00075                                 bool force_branch = false);
00076 };
00077 
00078 #endif

Generated on Sun Oct 16 03:01:37 2011 for coin-Bcp by  doxygen 1.4.7