src/smp/utils/branch_and_bound_base.h

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