/** * Reset this instances persistent variables to be used between called to * particleFiltering(). * * @param N * the number of samples to be maintained * @param dbn * a DBN with prior <b>P</b>(<b>X</b><sub>0</sub>), transition * model <b>P</b>(<b>X</b><sub>1</sub> | <b>X</b><sub>0</sub>), * sensor model <b>P</b>(<b>E</b><sub>1</sub> | * <b>X</b><sub>1</sub>) */ public void initPersistent(int N, IDynamicBayesianNetwork dbn) { this.N = N; this.dbn = dbn; // persistent: S, a vector of samples of size N, initially generated // from <b>P</b>(<b>X</b><sub>0</sub>) S = new AssignmentProposition[N][]; S_tp1 = new AssignmentProposition[N][]; int[] indexes = new int[N]; for (int i = 0; i < N; ++i) { S[i] = new AssignmentProposition[this.dbn.GetX_0().Size()]; S_tp1[i] = new AssignmentProposition[this.dbn.GetX_0().Size()]; indexes[i] = i; IMap <IRandomVariable, object> sample = priorSampler.priorSample(this.dbn.GetPriorNetwork()); int idx = 0; foreach (var sa in sample) { S[i][idx] = new AssignmentProposition(this.dbn.GetX_0_to_X_1().Get(sa.GetKey()), sa.GetValue()); S_tp1[i][idx] = new AssignmentProposition(this.dbn.GetX_0_to_X_1().Get(sa.GetKey()), sa.GetValue()); idx++; } } sensorModel = new FiniteBayesModel(dbn, new EliminationAsk()); sampleIndexes = new RandVar("SAMPLE_INDEXES", new FiniteIntegerDomain(indexes)); }
/** * Construct a Particle Filtering instance. * * @param N * the number of samples to be maintained * @param dbn * a DBN with prior <b>P</b>(<b>X</b><sub>0</sub>), transition * model <b>P</b>(<b>X</b><sub>1</sub> | <b>X</b><sub>0</sub>), * sensor model <b>P</b>(<b>E</b><sub>1</sub> | * <b>X</b><sub>1</sub>) * @param randomizer * a IRandom to be used for sampling purposes. */ public ParticleFiltering(int N, IDynamicBayesianNetwork dbn, IRandom randomizer) { this.randomizer = randomizer; this.priorSampler = new PriorSample(this.randomizer); initPersistent(N, dbn); }
/** * Construct a Particle Filtering instance. * * @param N * the number of samples to be maintained * @param dbn * a DBN with prior <b>P</b>(<b>X</b><sub>0</sub>), transition * model <b>P</b>(<b>X</b><sub>1</sub> | <b>X</b><sub>0</sub>), * sensor model <b>P</b>(<b>E</b><sub>1</sub> | * <b>X</b><sub>1</sub>) */ public ParticleFiltering(int N, IDynamicBayesianNetwork dbn) : this(N, dbn, CommonFactory.CreateRandom()) { }