39 #ifndef OMPL_MULTILEVEL_PLANNERS_BUNDLESPACE_DATASTRUCTURES_GRAPHSAMPLER_SAMPLER_
40 #define OMPL_MULTILEVEL_PLANNERS_BUNDLESPACE_DATASTRUCTURES_GRAPHSAMPLER_SAMPLER_
41 #include <ompl/multilevel/datastructures/BundleSpaceGraph.h>
42 #include <ompl/multilevel/datastructures/ParameterExponentialDecay.h>
43 #include <boost/random/linear_congruential.hpp>
44 #include <boost/random/variate_generator.hpp>
50 class BundleSpaceGraphSampler
53 using Vertex = ompl::multilevel::BundleSpaceGraph::Vertex;
56 BundleSpaceGraphSampler() =
delete;
58 BundleSpaceGraphSampler(BundleSpaceGraph *);
60 virtual void sample(base::State *xRandom);
62 void setPathBiasStartSegment(
double);
64 double getPathBiasStartSegment();
66 void disableSegmentBias();
68 void disablePathBias();
73 virtual void sampleImplementation(base::State *xRandom) = 0;
75 using RNGType = boost::minstd_rand;
79 BundleSpaceGraph *bundleSpaceGraph_;
81 double epsilonGraphThickening_{0.0};
83 double epsilonGraphThickeningFraction_{1e-3};
85 double pathBiasFixed_{0.1};
87 double pathBiasStartSegment_{0.0};
89 bool segmentBias_{
true};
91 double exponentialDecayLambda_{1e-5};
93 unsigned long long counterPathSampling_{0};
95 unsigned long long counterGraphSampling_{0};
97 ParameterExponentialDecay pathBiasDecay_;
98 ParameterExponentialDecay graphThickeningGrowth_;
99 ParameterExponentialDecay pathThickeningGrowth_;