Parasol Planning Library (PPL)
SamplerMethod.h
Go to the documentation of this file.
1 #ifndef PMPL_SAMPLER_METHOD_H_
2 #define PMPL_SAMPLER_METHOD_H_
3 
4 #ifdef _PARALLEL
5 #include "runtime.hpp"
6 #endif
7 
10 #include "Utilities/MPUtils.h"
11 
12 #include <iostream>
13 
14 class Boundary;
15 class Environment;
16 
67 #ifdef _PARALLEL
68 class SamplerMethod : public MPBaseObject, public stapl::p_object {
69 #else
70 class SamplerMethod : public MPBaseObject {
71 #endif
72 
73  public:
74 
77 
79 
83 
84  typedef typename std::vector<Cfg>::iterator InputIterator;
85  typedef typename std::back_insert_iterator<std::vector<Cfg>> OutputIterator;
86  typedef typename std::vector<GroupCfgType>::iterator GroupInputIterator;
87  typedef typename std::back_insert_iterator<std::vector<GroupCfgType>> GroupOutputIterator;
88 
90  typedef std::map<Robot*, const Boundary*> BoundaryMap;
91 
95 
96  SamplerMethod() = default;
97 
98  SamplerMethod(XMLNode& _node);
99 
100  virtual ~SamplerMethod() = 0;
101 
105 
113  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
114  const Boundary* const _boundary, OutputIterator _valid,
115  OutputIterator _invalid);
117  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
118  const Boundary* const _boundary, OutputIterator _valid);
119 
125  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
126  const Boundary* const _robotBoundary, const Boundary* const _eeBoundary,
127  OutputIterator _valid, OutputIterator _invalid);
130  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
131  const Boundary* const _robotBoundary, const Boundary* const _eeBoundary,
132  OutputIterator _valid);
133 
146  virtual void Filter(InputIterator _first, InputIterator _last,
147  size_t _maxAttempts, const Boundary* const _boundary,
148  OutputIterator _valid, OutputIterator _invalid);
151  void Filter(InputIterator _first, InputIterator _last,
152  size_t _maxAttempts, const Boundary* const _boundary,
153  OutputIterator _valid);
154 
158 
166  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
167  const Boundary* const _boundary, GroupOutputIterator _valid,
168  GroupOutputIterator _invalid);
171 
174  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
175  const Boundary* const _boundary, GroupOutputIterator _valid);
176 
187  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
188  const BoundaryMap& _boundary, GroupOutputIterator _valid,
189  GroupOutputIterator _invalid);
192  virtual void Sample(size_t _numNodes, size_t _maxAttempts,
193  const BoundaryMap& _boundary, GroupOutputIterator _valid);
194 
207  virtual void Filter(GroupInputIterator _first, GroupInputIterator _last,
208  size_t _maxAttempts, const Boundary* const _boundary,
209  GroupOutputIterator _valid, GroupOutputIterator _invalid);
211  void Filter(GroupInputIterator _first, GroupInputIterator _last,
212  size_t _maxAttempts, const Boundary* const _boundary,
213  GroupOutputIterator _valid);
214 
216 
217  protected:
218 
224 
232  virtual bool Sampler(Cfg& _cfg, const Boundary* const _boundary,
233  std::vector<Cfg>& _valid, std::vector<Cfg>& _invalid);
234 
237  virtual bool Sampler(Cfg& _cfg, const Boundary* const _robotBoundary,
238  const Boundary* const _eeBoundary,
239  std::vector<Cfg>& _valid, std::vector<Cfg>& _invalid);
240 
248  virtual bool Sampler(GroupCfgType& _cfg, const Boundary* const _boundary,
249  std::vector<GroupCfgType>& _valid, std::vector<GroupCfgType>& _invalid);
250 
255  virtual bool Sampler(GroupCfgType& _cfg, const BoundaryMap& _boundaryMap,
256  std::vector<GroupCfgType>& _valid, std::vector<GroupCfgType>& _invalid);
257 
259 
260  friend class MixSampler;
261 
262 };
263 
264 #endif
Definition: Boundary.h:30
Definition: Cfg.h:38
Definition: Environment.h:137
Definition: GroupCfg.h:39
Definition: MPBaseObject.h:46
Definition: MixSampler.h:10
Definition: SamplerMethod.h:70
SamplerMethod()=default
MPBaseObject::GroupCfgType GroupCfgType
Definition: SamplerMethod.h:78
std::vector< GroupCfgType >::iterator GroupInputIterator
Definition: SamplerMethod.h:86
virtual ~SamplerMethod()=0
std::map< Robot *, const Boundary * > BoundaryMap
A map from robots to sampling boundaries.
Definition: SamplerMethod.h:90
std::back_insert_iterator< std::vector< Cfg > > OutputIterator
Definition: SamplerMethod.h:85
virtual void Filter(InputIterator _first, InputIterator _last, size_t _maxAttempts, const Boundary *const _boundary, OutputIterator _valid, OutputIterator _invalid)
Definition: SamplerMethod.cpp:103
std::vector< Cfg >::iterator InputIterator
Definition: SamplerMethod.h:84
virtual void Sample(size_t _numNodes, size_t _maxAttempts, const Boundary *const _boundary, OutputIterator _valid, OutputIterator _invalid)
Definition: SamplerMethod.cpp:19
virtual bool Sampler(Cfg &_cfg, const Boundary *const _boundary, std::vector< Cfg > &_valid, std::vector< Cfg > &_invalid)
Definition: SamplerMethod.cpp:258
std::back_insert_iterator< std::vector< GroupCfgType > > GroupOutputIterator
Definition: SamplerMethod.h:87
Definition: XMLNode.h:27