Package aima.core.probability.hmm

Examples of aima.core.probability.hmm.VarDistribution


    perceptions.add(HmmConstants.SEE_UMBRELLA);

    List<VarDistribution> results = rainmanHmm
        .forward_backward(perceptions);

    VarDistribution smoothedDayOne = results.get(1);
    System.out.println("Smoothed Probability Of Raining on Day One = "
        + smoothedDayOne.getProbabilityOf(HmmConstants.RAINING));
    System.out.println("Smoothed Probability Of NOT Raining on Day One ="
        + smoothedDayOne.getProbabilityOf(HmmConstants.NOT_RAINING));

    VarDistribution smoothedDayTwo = results.get(2);
    System.out.println("Smoothed Probability Of Raining on Day Two = "
        + smoothedDayTwo.getProbabilityOf(HmmConstants.RAINING));
    System.out.println("Smoothed Probability Of NOT Raining on Day Two = "
        + smoothedDayTwo.getProbabilityOf(HmmConstants.NOT_RAINING));

  }
View Full Code Here


  @Before
  public void setUp() {
    List<String> states = Arrays.asList(new String[] {
        HmmConstants.DOOR_OPEN, HmmConstants.DOOR_CLOSED });
    aDistribution = new VarDistribution("HiddenState", states);
  }
View Full Code Here

        0.001);
  }

  @Test
  public void testForwardMessagingWorksForFiltering() {
    VarDistribution afterOneStep = robotHmm.forward(robotHmm.prior(),
        HmmConstants.DO_NOTHING, HmmConstants.SEE_DOOR_OPEN);
    Assert.assertEquals(0.75,
        afterOneStep.getProbabilityOf(HmmConstants.DOOR_OPEN),
        TOLERANCE);
    Assert.assertEquals(0.25,
        afterOneStep.getProbabilityOf(HmmConstants.DOOR_CLOSED),
        TOLERANCE);

    VarDistribution afterTwoSteps = robotHmm.forward(afterOneStep,
        HmmConstants.PUSH_DOOR, HmmConstants.SEE_DOOR_OPEN);
    Assert.assertEquals(0.983,
        afterTwoSteps.getProbabilityOf(HmmConstants.DOOR_OPEN),
        TOLERANCE);
    Assert.assertEquals(0.017,
        afterTwoSteps.getProbabilityOf(HmmConstants.DOOR_CLOSED),
        TOLERANCE);
  }
View Full Code Here

        TOLERANCE);
  }

  @Test
  public void testRecursiveBackwardMessageCalculationIsCorrect() {
    VarDistribution afterOneStep = rainmanHmm.forward(rainmanHmm.prior(),
        HmmConstants.DO_NOTHING, HmmConstants.SEE_UMBRELLA);
    VarDistribution afterTwoSteps = rainmanHmm.forward(afterOneStep,
        HmmConstants.DO_NOTHING, HmmConstants.SEE_UMBRELLA);

    VarDistribution postSequence = afterTwoSteps.duplicate()
        .createUnitBelief();

    VarDistribution smoothed = rainmanHmm.calculate_next_backward_message(
        postSequence, HmmConstants.SEE_UMBRELLA);
    Assert.assertEquals(0.627,
        smoothed.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
    Assert.assertEquals(0.373,
        smoothed.getProbabilityOf(HmmConstants.NOT_RAINING), TOLERANCE);
  }
View Full Code Here

    List<VarDistribution> results = rainmanHmm
        .forward_backward(perceptions);
    Assert.assertEquals(3, results.size());

    Assert.assertNull(results.get(0));
    VarDistribution smoothedDayOne = results.get(1);
    Assert.assertEquals(0.883,
        smoothedDayOne.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.117,
        smoothedDayOne.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);

    VarDistribution smoothedDayTwo = results.get(2);
    Assert.assertEquals(0.883,
        smoothedDayTwo.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.117,
        smoothedDayTwo.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);
  }
View Full Code Here

    List<VarDistribution> results = rainmanHmm
        .forward_backward(perceptions);
    Assert.assertEquals(4, results.size());
    Assert.assertNull(results.get(0));

    VarDistribution smoothedDayOne = results.get(1);
    Assert.assertEquals(0.861,
        smoothedDayOne.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.138,
        smoothedDayOne.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);

    VarDistribution smoothedDayTwo = results.get(2);
    Assert.assertEquals(0.799,
        smoothedDayTwo.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.201,
        smoothedDayTwo.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);

    VarDistribution smoothedDayThree = results.get(3);
    Assert.assertEquals(0.190,
        smoothedDayThree.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.810,
        smoothedDayThree.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);
  }
View Full Code Here

  @Test
  public void testOneStepFixedLagSmoothingOnRainManHmm() {
    FixedLagSmoothing fls = new FixedLagSmoothing(rainmanHmm, 1);

    VarDistribution smoothedDayZero = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
    // umbrella on day one
    Assert.assertEquals(0.627,
        smoothedDayZero.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);

    VarDistribution smoothedDayOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
    // umbrella on day two
    Assert.assertEquals(0.883,
        smoothedDayOne.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.117,
        smoothedDayOne.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);

    VarDistribution smoothedDayTwo = fls
        .smooth(HmmConstants.SEE_NO_UMBRELLA); // see no umbrella on
    // day three
    Assert.assertEquals(0.799,
        smoothedDayTwo.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.201,
        smoothedDayTwo.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);
  }
View Full Code Here

  @Test
  public void testOneStepFixedLagSmoothingOnRainManHmmWithDifferingEvidence() {
    FixedLagSmoothing fls = new FixedLagSmoothing(rainmanHmm, 1);

    VarDistribution smoothedDayZero = fls.smooth(HmmConstants.SEE_UMBRELLA);// see
    // umbrella on day one
    Assert.assertEquals(0.627,
        smoothedDayZero.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);

    VarDistribution smoothedDayOne = fls
        .smooth(HmmConstants.SEE_NO_UMBRELLA);// no umbrella on day
    // two
    Assert.assertEquals(0.702,
        smoothedDayOne.getProbabilityOf(HmmConstants.RAINING),
        TOLERANCE);
    Assert.assertEquals(0.297,
        smoothedDayOne.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);
  }
View Full Code Here

  @Test
  public void testTwoStepFixedLagSmoothingOnRainManHmm() {
    FixedLagSmoothing fls = new FixedLagSmoothing(rainmanHmm, 2);

    VarDistribution smoothedOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
    // umbrella on day one
    Assert.assertNull(smoothedOne);

    smoothedOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
    // umbrella on day two
    Assert.assertEquals(0.653,
        smoothedOne.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
    Assert.assertEquals(0.346,
        smoothedOne.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);

    VarDistribution smoothedTwo = fls.smooth(HmmConstants.SEE_UMBRELLA);// see
    // umbrella on day 3
    Assert.assertEquals(0.894,
        smoothedTwo.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
    Assert.assertEquals(0.105,
        smoothedTwo.getProbabilityOf(HmmConstants.NOT_RAINING),
        TOLERANCE);
  }
View Full Code Here

        .numberOfParticlesWithState(HmmConstants.DOOR_CLOSED));
  }

  @Test
  public void testRandomVariableConversionToParticleSet() {
    VarDistribution rv = rainman.prior();
    ParticleSet ps = rv.toParticleSet(rainman, randomizer, 10);
    Assert.assertEquals(5,
        ps.numberOfParticlesWithState(HmmConstants.RAINING));
    Assert.assertEquals(5,
        ps.numberOfParticlesWithState(HmmConstants.NOT_RAINING));
  }
View Full Code Here

TOP

Related Classes of aima.core.probability.hmm.VarDistribution

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.