Search
This is an old revision of the document!
V prostředí Prohledávání stavového prostoru naprogramujte nalezení nejlevnější cesty. Nezapomeňte, že cena přechodu mezi pozicemi nemusí být nutně všude stejná.
SearchProblem
kuimaze2.SearchProblem
maps/easy_intro/easy_intro_1.png
>>> from kuimaze2 import SearchProblem, State >>> from kuimaze2.map_image import map_from_image >>> map_path = 'maps/easy_intro/easy_intro_1.png' >>> env = SearchProblem(map_from_image(map_path), graphics=True)
render()
>>> env.render()
>>> start = env.get_start() >>> start State(r=0, c=1) >>> env.get_goals() # Notice the different return type, this returns a Set {State(r=2, c=4)} >>> actions = env.get_actions(start) >>> actions [<Action.UP: 0>, <Action.RIGHT: 1>, <Action.DOWN: 2>, <Action.LEFT: 3>] >>> new_state, trans_cost = env.get_transition_result(start, actions[1]) >>> new_state State(r=0, c=2)
env.render()
>>> texts = {State(0,0): "S", State(0,1): "1"} >>> env.render(texts = texts, current_state=State(0,0), next_states=[State(1,0)])
example_search.py
Agent.find_path()
01-easy_search
Ačkoli mnozí jste již netrpěliví skočit na implementaci algoritmu A*, zkuste napřed hledání cesty v jednoduchém bludišti. Je to menší problém, bude se vám snáz krokovat a debugovat, ověříte si správné zacházení s prostředím na jednodušším problému. Základní komunikační rozhraní je stejné, tedy
Odevzdávat budete také modul agent.py, přesně podle specifikace. Vyzkoušejte různé strategie prohledávání. Pokud napíšete dostatečně obecně, stejný kód bude fungovat i pro případ algoritmu A*. Odevzdávat budete do Upload systému.
agent.py
Rozmyslete si trochu nad papírem datové struktury, které budete potřebovat.