Environment kuimaze2.SearchProblem
shall be used for problems of finding the shortest path in a maze. It is used in optional task 01-easy_search and the first mandatory semestral task 03-search.
After creation of the SearchProblem
instance (see Usage), you can use the following methods of the environment:
env.get_start()
returns the start State
of the problem.
env.get_goals()
returns the set of goal State
s of the problem.
env.is_goal(state)
returns True, if the state
is among the goal states.
env.get_actions(state)
returns a list of all actions available in the given state.
env.get_transition_result(state, action)
returns a pair of (new_state, transition_cost)
when choosing applying action
in state
.
env.render()
updates the graphical display of the environment. For the explanation of various parameters of this method, see help(env.render)
.
To use the environment, you need to:
>>> from kuimaze2 import SearchProblem, Map
>>> MAP = "S...G" >>> env = SearchProblem(Map.from_string(MAP))
>>> start = env.get_start() # start State >>> start State(r=0, c=0) >>> goals = env.get_goals() # set of goal States >>> goals {State(r=0, c=4)}
>>> actions = env.get_actions(start) >>> actions [<Action.UP: 0>, <Action.RIGHT: 1>, <Action.DOWN: 2>, <Action.LEFT: 3>] >>> next_state, cost = env.get_transition_result(start, actions[0]) >>> next_state State(r=0, c=0) # It is not possible to go UP from the start state, so stay in place >>> cost 1 # Although you stayed in place, the action costs you 1 unit >>> env.get_transition_result(start, actions[1]) # ... but it should be possible to go RIGHT (State(r=0, c=1), 1) # And yes, it is, we moved.
To update the graphical display of the environment (if you created it with env = SearchProblem(…, graphics=True)
), use:
env.render()Method
render()
has many arguments that can be used to display various parts of your algorithm. See help(SearchProblem.render)
.