Example #1
0
        public MarkovState getResult(StochasticAction action)
        {
            double              value   = rand.NextDouble();
            double              current = 0.0;
            ActionResult        result  = null;
            int                 i       = 0;
            List <ActionResult> results = action.getPossibleResults();

            while (i < results.Count() && current < value)
            {
                result   = results[i];
                current += result.probability;
                i++;
            }

            return(result.state);
        }
Example #2
0
 internal void addAction(StochasticAction action)
 {
     actions.Add(action);
 }
Example #3
0
        private StochasticAction createAction(Direction direction, int x, int y)
        {
            StochasticAction action = null;

            ActionResult up    = new ActionResult(get(x, y - 1));
            ActionResult down  = new ActionResult(get(x, y + 1));
            ActionResult left  = new ActionResult(get(x - 1, y));
            ActionResult right = new ActionResult(get(x + 1, y));

            switch (direction)
            {
            case Direction.down:
                action = new GridAction("v");

                // go down
                down.probability = .8;
                action.addPossible(down);

                // go left
                left.probability = .1;
                action.addPossible(left);

                // go right
                right.probability = .1;
                action.addPossible(right);

                break;

            case Direction.left:

                action = new GridAction("<");

                // go left
                left.probability = .8;
                action.addPossible(left);

                // go up
                up.probability = .1;
                action.addPossible(up);

                // go down
                down.probability = .1;
                action.addPossible(down);

                break;

            case Direction.right:

                action = new GridAction(">");
                // go right
                right.probability = .8;
                action.addPossible(right);

                // go up
                up.probability = .1;
                action.addPossible(up);

                // go down
                down.probability = .1;
                action.addPossible(down);

                break;

            case Direction.up:

                action = new GridAction("^");
                // go down
                up.probability = .8;
                action.addPossible(up);

                // go left
                left.probability = .1;
                action.addPossible(left);

                // go right
                right.probability = .1;
                action.addPossible(right);

                break;

            default:
                break;
            }

            return(action);
        }