Example #1
0
        /**
         * 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));
        }
Example #2
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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())
 {
 }