Search
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 jste mnozí již netrpěliví se rovnou vrhnout na implementaci algoritmu A*, zkuste napřed jednodušší algoritmy (BFS, UCS) a jednoduchá bludiště. 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.
Rozmyslete si trochu nad papírem datové struktury, které budete potřebovat. Zkuste implementovat různé strategie/algoritmy. Pokud je implementujete dostatečně obecným způsobem, většina vašeho kódu půjde použít i pro algoritmus A* (což je první povinná úloha).
Zkuste svůj algoritmus v modulu agent.py odevzdat do BRUTE a prozkoumejte, jakou zpětnou vazbu vám hodnoticí skript poskytl.
agent.py
V první povinné úloze je vaším úkolem naimplementovat algoritmus A*, který vám bude představen nejpozději na druhé přednášce. Pokud jste ale “Prohledávací rozcvičku” zvládli rychle a nedělá vám potíže programovat v Pythonu, můžete začít pracovat na první povinné úloze.
Nezapomeňte, že cena za přechod z jednoho stavu do druhého nemusí být stále stejná.