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); }
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); }