00001 00005 #ifndef _SMP_BRANCH_AND_BOUND_EUCLIDEAN_H_ 00006 #define _SMP_BRANCH_AND_BOUND_EUCLIDEAN_H_ 00007 00008 #include <smp/utils/branch_and_bound_base.h> 00009 00010 #include <smp/planner_utils/vertex_edge.h> 00011 #include <smp/common/region.h> 00012 00013 00014 namespace smp{ 00015 00017 00023 template< class typeparams, int NUM_DIMENSIONS > 00024 class branch_and_bound_euclidean : public branch_and_bound_base<typeparams> { 00025 00026 00027 typedef typename typeparams::state state_t; 00028 typedef typename typeparams::input input_t; 00029 typedef typename typeparams::vertex_data vertex_data_t; 00030 typedef typename typeparams::edge_data edge_data_t; 00031 00032 typedef region<NUM_DIMENSIONS> region_t; 00033 00034 typedef vertex<typeparams> vertex_t; 00035 typedef edge<typeparams> edge_t; 00036 00037 typedef planner<typeparams> planner_t; 00038 00039 region_t region_goal; 00040 00041 vertex_t *root_vertex; 00042 00043 int add_children_to_list (list<vertex_t*> &list_vertices_in, vertex_t *vertex_in); 00044 00045 public : 00046 00047 branch_and_bound_euclidean (); 00048 ~branch_and_bound_euclidean (); 00049 00050 00051 int run_branch_and_bound (); 00052 00064 int set_goal_region (region_t region_goal_in); 00065 00066 00079 int set_root_vertex (vertex_t *root_vertex_in); 00080 }; 00081 00082 } 00083 00084 #endif