00001 #ifndef INDII_ML_FILTER_FLAGS_HPP 00002 #define INDII_ML_FILTER_FLAGS_HPP 00003 00004 /** 00005 * @file flags.hpp 00006 * 00007 * Optimisation flags for KernelForwardBackwardSmoother and 00008 * KernelTwoFilterSmoother. 00009 */ 00010 00011 namespace indii { 00012 namespace ml { 00013 namespace filter { 00014 /** 00015 * Optimisation flags. These may be ORed and passed to the smooth() 00016 * methods to trigger optimisations relevant in specific circumstances. 00017 */ 00018 enum Flags { 00019 /** 00020 * Do not standardise kernel density evaluations. 00021 * 00022 * The support of \f$p(\mathbf{x}_{n+1}\,|\,\mathbf{y}_{1:n})\f$ and 00023 * \f$p(\mathbf{x}_{n+1}\,|\,\mathbf{y}_{1:T})\f$ is assumed equivalent. 00024 */ 00025 NO_STANDARDISATION = 1, 00026 00027 /** 00028 * Assume no resampling was performed by the %filter between times 00029 * \f$t_n\f$ and \f$t_{n+1}\f$. 00030 * 00031 * In the case that the %filter density is used as proposal distribution, 00032 * this allows reuse of the components supporting \f$p(\mathbf{x}_{n+1}\, 00033 * |\,\mathbf{y}_{1:n})\f$ as the propagations of the proposal particles 00034 * from \f$q(\mathbf{x}_n) = p(\mathbf{x}_n\,|\,\mathbf{y}_{1:n})\f$. 00035 * In addition, if NO_STANDARDISATION is set, a self-tree kernel density 00036 * evaluation is performed. 00037 */ 00038 NO_RESAMPLING = 2, 00039 00040 /** 00041 * Assume that the proposal distribution is the same as the last call 00042 * to smooth(). 00043 * 00044 * In this case, samples from the proposal distribution are reused from 00045 * the last call. 00046 */ 00047 SAME_PROPOSAL = 4, 00048 00049 /** 00050 * If SAME_PROPOSAL is set, additionally reuse the propagations of the 00051 * proposal samples from the last call. 00052 */ 00053 SAME_PROPAGATIONS = 8, 00054 00055 /** 00056 * Use filter-smoother when applicable. This is significantly faster, 00057 * but may reduce sampling effectiveness. 00058 */ 00059 FILTER_SMOOTHER = 16 00060 00061 }; 00062 00063 } 00064 } 00065 } 00066 00067 #endif 00068
1.5.3