Parasol Planning Library (PPL)
QueryMethod.h
Go to the documentation of this file.
1 #ifndef PMPL_QUERY_METHOD_H_
2 #define PMPL_QUERY_METHOD_H_
3 
4 #include "MapEvaluatorMethod.h"
5 
7 #include "MPProblem/MPProblem.h"
8 #include "MPProblem/MPTask.h"
10 #include "Utilities/SSSP.h"
11 
12 
31 class QueryMethod : virtual public MapEvaluatorMethod {
32 
33  public:
34 
37 
39  typedef typename RoadmapType::VID VID;
41  typedef std::unordered_set<size_t> VIDSet;
42 
46 
48 
52 
53  QueryMethod();
54 
55  QueryMethod(XMLNode& _node);
56 
57  virtual ~QueryMethod() = default;
58 
62 
63  virtual void Print(std::ostream& _os) const override;
64 
65  virtual void Initialize() override;
66 
70 
71  virtual bool operator()() override;
72 
76 
82  std::vector<VID> GeneratePath(const VID _start, const VIDSet& _end);
83 
88  void SetDMLabel(const std::string& _dmLabel);
89 
93 
96  void SetLastConstraintTime(double _last);
97 
100  void SetLastGoalConstraintTime(double _time);
101 
104  void SetStartTime(double _start);
105 
108  void SetEndTime(double _end);
109 
111 
112  protected:
113 
116 
119  virtual void Reset(RoadmapType* const _r);
120 
124  void SetSearchAlgViaString(std::string _alg, const std::string& _where);
125 
131  virtual bool PerformSubQuery(const VID _start, const VIDSet& _goal);
132 
140  virtual double StaticPathWeight(
141  typename RoadmapType::adj_edge_iterator& _ei,
142  const double _sourceDistance, const double _targetDistance) const;
143 
152  virtual double DynamicPathWeight(
153  typename RoadmapType::adj_edge_iterator& _ei,
154  const double _sourceDistance, const double _targetDistance) const;
155 
159  std::vector<typename QueryMethod::VID>
160  TwoVariableQuery(const VID _start, const VIDSet& _goals);
161 
165 
166  RoadmapType* m_roadmap{nullptr};
167  MPTask* m_task{nullptr};
168 
169  size_t m_goalIndex{0};
170 
172 
173  std::string m_safeIntervalLabel;
174  std::string m_dmLabel;
175  bool m_twoVariable{false};
176 
179 
180  double m_lastConstraint{0};
182  double m_startTime{0};
183  double m_endTime{0};
184 
186 
187 };
188 
189 #endif
std::function< double(typename GraphType::adj_edge_iterator &, const double, const double)> SSSPPathWeightFunction
Definition: SSSP.h:94
Definition: GenericStateGraph.h:67
STAPLGraph::vertex_descriptor VID
Definition: GenericStateGraph.h:83
std::unordered_set< VID > VertexSet
Definition: GenericStateGraph.h:86
Definition: MPTask.h:46
Definition: MapEvaluatorMethod.h:16
Definition: QueryMethod.h:31
double m_startTime
The start time of the query.
Definition: QueryMethod.h:182
bool m_twoVariable
Temporary flag to use two varibale state search.
Definition: QueryMethod.h:175
virtual bool PerformSubQuery(const VID _start, const VIDSet &_goal)
Definition: QueryMethod.cpp:301
virtual ~QueryMethod()=default
std::vector< typename QueryMethod::VID > TwoVariableQuery(const VID _start, const VIDSet &_goals)
Definition: QueryMethod.cpp:382
MPBaseObject::RoadmapType RoadmapType
Definition: QueryMethod.h:38
void SetLastConstraintTime(double _last)
Definition: QueryMethod.cpp:481
virtual bool operator()() override
Definition: QueryMethod.cpp:62
std::string m_dmLabel
The DistanceMetric label.
Definition: QueryMethod.h:174
std::string m_safeIntervalLabel
The SafeIntervalTool label.
Definition: QueryMethod.h:173
size_t m_goalIndex
Index of next unreached goal.
Definition: QueryMethod.h:169
void SetDMLabel(const std::string &_dmLabel)
Definition: QueryMethod.cpp:248
RoadmapType::VertexSet VertexSet
Definition: QueryMethod.h:40
MPTask * m_task
Last task we looked at.
Definition: QueryMethod.h:167
std::vector< VID > GeneratePath(const VID _start, const VIDSet &_end)
Definition: QueryMethod.cpp:149
virtual void Reset(RoadmapType *const _r)
Definition: QueryMethod.cpp:263
virtual void Print(std::ostream &_os) const override
Definition: QueryMethod.cpp:40
double m_lastGoalConstraint
The time of the last goal constraint.
Definition: QueryMethod.h:181
void SetLastGoalConstraintTime(double _time)
Definition: QueryMethod.cpp:488
RoadmapType * m_roadmap
Last roadmap queried.
Definition: QueryMethod.h:166
void SetSearchAlgViaString(std::string _alg, const std::string &_where)
Definition: QueryMethod.cpp:279
void SetEndTime(double _end)
Definition: QueryMethod.cpp:502
virtual void Initialize() override
Definition: QueryMethod.cpp:51
virtual void SetPathWeightFunction(SSSPPathWeightFunction< RoadmapType > _f)
Definition: QueryMethod.cpp:255
std::unordered_set< size_t > VIDSet
Definition: QueryMethod.h:41
RoadmapType::VID VID
Definition: QueryMethod.h:39
QueryMethod()
Definition: QueryMethod.cpp:13
double m_lastConstraint
The time of the last constraint.
Definition: QueryMethod.h:180
SSSPPathWeightFunction< RoadmapType > m_weightFunction
The function for computing total path weight.
Definition: QueryMethod.h:178
GraphSearchAlg m_searchAlg
The sssp algorithm to use.
Definition: QueryMethod.h:171
double m_endTime
The end time of the query.
Definition: QueryMethod.h:183
virtual double StaticPathWeight(typename RoadmapType::adj_edge_iterator &_ei, const double _sourceDistance, const double _targetDistance) const
Definition: QueryMethod.cpp:317
GraphSearchAlg
Definition: QueryMethod.h:47
@ ASTAR
Definition: QueryMethod.h:47
@ DIJKSTRAS
Definition: QueryMethod.h:47
virtual double DynamicPathWeight(typename RoadmapType::adj_edge_iterator &_ei, const double _sourceDistance, const double _targetDistance) const
Definition: QueryMethod.cpp:335
void SetStartTime(double _start)
Definition: QueryMethod.cpp:495
Definition: XMLNode.h:27