src/smp/utils/branch_and_bound_euclidean.h

Go to the documentation of this file.
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