示例#1
0
        public GridWorldMap DrawResults(GridWorldMap gw1)
        {
            if (gw1 == null || A == null)
            {
                return(null);
            }

            GridWorldMap gw2 = new GridWorldMap(gw1);


            IPolicy        policy       = A.getPolicy();
            GridWorldState currentState = (GridWorldState)start.State;
            GridWorldState goalState    = (GridWorldState)goal.State;
            IEnvironment   env          = new GridWorld(gwMap, blockSize);

            gw2.DrawBlock(currentState.X, currentState.Y, Color.Red, blockSize);
            gw2.DrawBlock(goalState.X, goalState.Y, Color.Green, blockSize);


            int i    = 0;
            int maxi = 3000;

            while (policy != null && !currentState.Equals(goal.State) && i < maxi)
            {
                i++;
                IOperator op = policy.action(currentState);

                IOutcome outcome = env.act(currentState, policy.action(currentState));

                currentState = (GridWorldState)outcome.State;

                gw2.DrawBlock(currentState.X, currentState.Y, Color.Red, blockSize);
            }

            if (i >= maxi)
            {
                MessageBox.Show("Path not found");
            }
            ;

            return(gw2);
        }
示例#2
0
        public GridWorldMap DrawResults(GridWorldMap gw1, int blockSize, IPolicy policy, INode start, INode goal)
        {
            GridWorldMap gw2 = new GridWorldMap(gw1);


            GridWorldState currentState = (GridWorldState)start.State;
            IEnvironment   env          = new GridWorld(gw2, blockSize);

            gw2.DrawBlock(currentState.X, currentState.Y, Color.Red, blockSize);

            int i    = 0;
            int maxi = 3000;


            if (policy == null)
            {
                MessageBox.Show("Path not found");
            }

            while (policy != null && !currentState.Equals(goal.State) && i < maxi)
            {
                i++;
                IOperator op = policy.action(currentState);

                IOutcome outcome = env.act(currentState, policy.action(currentState));

                SumQ += outcome.Reward;

                currentState = (GridWorldState)outcome.State;

                gw2.DrawBlock(currentState.X, currentState.Y, Color.Red, blockSize);
            }

            if (i >= maxi)
            {
                MessageBox.Show("Path not found");
            }
            ;

            return(gw2);
        }