====== SearchProblem ====== Prostředí ''kuimaze2.SearchProblem'' budete využívat v úlohách, kde jde o nalezení nejkratší cesty v bludišti. Je použito v nepovinné úloze ''01-easy_search'' a v první povinné úloze ''03-search''. ===== Dostupné metody ===== Po vytvoření instance třídy ''SearchProblem'' (viz [[.:10_SearchProblem#pouziti|Použití]]) můžete využívat následující metody: * ''env.get_start()'' vrací startovní stav (''State'') prohledávacího problému. * ''env.get_goals()'' vrací množinu cílových stavů prohledávacího problému. * ''env.is_goal(state)'' vrací ''True'', pokud je ''state'' mezi cílovými stavy. * ''env.get_actions(state)'' vrací seznam akcí (''Action'') dostupných v daném stavu (''state''). * ''env.get_transition_result(state, action)'' vrací nový stav a cenu přechodu (tj. dvojici ''(new_state, transition_cost)'') pro situaci, kdy ve stavu ''state'' zvolíte akci ''action''. * ''env.render()'' aktualizuje grafické zobrazení prostředí. (Pokud jste grafické zobrazení při vytváření prostředí nezapnuli, nedělá nic.) Vysvětlení jednotlivých parametrů této metody najdete v helpu (''help(env.render)''). ===== Použití ===== Prostředí se typicky používá následujícím způsobem: * Import it: >>> from kuimaze2 import SearchProblem, Map * Create an instance of the environment with the chosen [[.:05_map|map]]: >>> MAP = "S...G" >>> env = SearchProblem(Map.from_string(MAP)) nebo (pokud chcete grafické zobrazení) >>> env = SearchProblem(Map.from_string(MAP), graphics=True) * Dotaz na startovní (a cílové, pokud jsou třeba) stavy: >>> 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)} * Komunikace s prostředím: >>> actions = env.get_actions(start) >>> actions [, , , ] >>> 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. K aktualizaci grafického znázornění prostředí (pokud bylo vytvořeno pomocí ''env = SearchProblem(..., graphics=True)''), použijte: env.render() Metoda ''render()'' má několik nepovinných argumentů, které vám mohou pomoct vizualizovat různé aspekty vašeho algoritmu; detaily zjistíte pomocí ''help(SearchProblem.render)''.