Warning
This page is located in archive.

1. Prohledávání stavového prostoru

Vaším úkolem je naprogramovat algoritmus A* k prohledávání stavového prostoru State_space_search.

Formulace úlohy

Naprogramujte algoritmus A*, který najde optimální cestu do cílového stavu. Pokud cesta neexistuje, výsledné řešení je None. K dispozici máte prostředí-bludiště kuimaze2.SearchProblem.

Pro správnou funkčnost algoritmu je zapotřebí zvolit takzvanou heuristickou funkci. Popis jaký dopad mají různé návrhy této funkce na výsledné řešení je velice pěkně zpracován zde. Cena přechodu mezi dvěma sousedními políčky je vždy větší nebo rovna euklidovské vzdálenosti souřadnic těchto políček.

Jak na to

  1. Zprovozněte si balíček kuimaze2, pokud jste to ještě neudělali.
  2. Seznamte se s prostředím SearchProblem. (V balíčku kuimaze2 byste také měli najít skript example_search.py, který také ukazuje, jak se s prostředím dá pracovat.)
  3. Vytvořte modul agent.py podle specifikací.

Třída Agent a její metody

V modulu (souboru) agent.py implementujte třídu Agent, která bude poskytovat tyto metody:

metoda vstupní parametry výstupní parametry vysvětlení
__init__ environmnent: SearchProblem žádné Inicializace agenta.
find_path žádné cesta Vrací nalezenou cestu nebo None, pokud cestu nenajde. Cestou je myšlen seznam (list) vzájemně sousedících stavů (State) začínající počátečním stavem a končící cílovým stavem.

Tipy

Následující moduly Pythonu mohou být užitečné při implementaci jistých částí A* algoritmu: queue, heapq.

Odevzdání

  • Termín odevzdání úlohy najdete v BRUTE, úloha 03-search.
  • Odevzdejte ZIP archív s vaším modulem agent.py a případně se všemi moduly, které jste vytvořili a které váš agent importuje. Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře! Neodevzdávejte žádné moduly, které jste dostali od nás!

Hodnocení

Bodové ohodnocení za rešení úlohy lze vidět v hodnoceni.

Vizualizace

Když úlohu úspěšně vyřešíte, měli byste v závislosti na zvolené mapě být schopni vygenerovat obrázek podobný následujícímu. (Tento konkrétní obrázek pochází z předchozí verze balíčku kuimaze. Aktuální verze generuje obrázky mírně jiné.)

courses/b3b33kui/semestralni_ulohy/1_prohledavani_stavoveho_prostoru/start.txt · Last modified: 2024/05/03 12:28 by xposik