public static HiddenMarkovModel createRainmanHMM()
{
List <String> states = new List <String> {
HmmConstants.RAINING, HmmConstants.NOT_RAINING
};
// no actions because the observer has no way of changing the hidden
// state and i spassive
List <String> perceptions = new List <String> {
HmmConstants.SEE_UMBRELLA, HmmConstants.SEE_NO_UMBRELLA
};
RandomVariable prior = new RandomVariable(states);
TransitionModel tm = new TransitionModel(states);
// tm.setTransitionModelValue(start_state, action, end_state,
// probability);
// given a start state and an action the probability of the end state is
// probability
tm.setTransitionProbability(HmmConstants.RAINING, HmmConstants.RAINING,
0.7);
tm.setTransitionProbability(HmmConstants.RAINING,
HmmConstants.NOT_RAINING, 0.3);
tm.setTransitionProbability(HmmConstants.NOT_RAINING,
HmmConstants.RAINING, 0.3);
tm.setTransitionProbability(HmmConstants.NOT_RAINING,
HmmConstants.NOT_RAINING, 0.7);
SensorModel sm = new SensorModel(states, perceptions);
// sm.setSensingProbaility(state,perception,p); given a state the
// probability of a perception is p
sm.setSensingProbability(HmmConstants.RAINING,
HmmConstants.SEE_UMBRELLA, 0.9);
sm.setSensingProbability(HmmConstants.RAINING,
HmmConstants.SEE_NO_UMBRELLA, 0.1);
sm.setSensingProbability(HmmConstants.NOT_RAINING,
HmmConstants.SEE_UMBRELLA, 0.2);
sm.setSensingProbability(HmmConstants.NOT_RAINING,
HmmConstants.SEE_NO_UMBRELLA, 0.8);
HiddenMarkovModel hmm = new HiddenMarkovModel(prior, tm, sm);
// hmm.setSensorModelValue(state,perception,p); given a state the
// probability of a perception is p
return(hmm);
}