00001 00013 #ifndef _SMP_BRANCH_AND_BOUND_BASE_H_ 00014 #define _SMP_BRANCH_AND_BOUND_BASE_H_ 00015 00016 #include <smp/planner_utils/vertex_edge.h> 00017 #include <smp/planners/base.h> 00018 00019 00020 namespace smp{ 00021 00023 00028 template< class typeparams > 00029 class branch_and_bound_base { 00030 00031 00032 typedef typename typeparams::state state_t; 00033 typedef typename typeparams::input input_t; 00034 typedef typename typeparams::vertex_data vertex_data_t; 00035 typedef typename typeparams::edge_data edge_data_t; 00036 00037 typedef vertex<typeparams> vertex_t; 00038 typedef edge<typeparams> edge_t; 00039 00040 typedef planner<typeparams> planner_t; 00041 00042 protected: 00043 00045 00049 planner_t *planner_bnb; 00050 00052 00058 double upper_bound_cost; 00059 00060 00061 public : 00062 00063 branch_and_bound_base (); 00064 ~branch_and_bound_base (); 00065 00077 int set_planner (planner_t *planner_in); 00078 00079 00090 int set_upper_bound_cost (double upper_bound_cost_in); 00091 00101 virtual int run_branch_and_bound () = 0; 00102 00103 }; 00104 } 00105 00106 #endif