28 #ifndef CPARTICLEFILTERCAPABLE_H
29 #define CPARTICLEFILTERCAPABLE_H
38 #define INVALID_LIKELIHOOD_VALUE (-1e300) // An invalid log-likelihood value, used to signal non-initialized likelihood variables.
73 typedef double ( *TParticleProbabilityEvaluator) (
78 const void * observation );
84 static double defaultEvaluator(
89 const void * observation )
92 return obj->
getW(index);
113 void prepareFastDrawSample(
115 TParticleProbabilityEvaluator partEvaluator = defaultEvaluator,
116 const void * action = NULL,
117 const void * observation = NULL
134 virtual double getW(
size_t i)
const = 0;
138 virtual void setW(
size_t i,
double w) = 0;
142 virtual size_t particlesCount()
const = 0;
148 void prediction_and_update(
157 virtual void performSubstitution(
const std::vector<size_t> &indx) = 0;
163 virtual double normalizeWeights(
double *out_max_log_w = NULL ) =0;
168 virtual double ESS() = 0;
183 static void computeResampling(
186 std::vector<size_t> &out_indexes
192 static void log2linearWeights(
201 virtual void prediction_and_update_pfStandardProposal(
208 virtual void prediction_and_update_pfAuxiliaryPFStandard(
215 virtual void prediction_and_update_pfOptimalProposal(
222 virtual void prediction_and_update_pfAuxiliaryPFOptimal(
235 alreadyDrawnIndexes(),
236 alreadyDrawnNextOne(0)