Search
V rámci týmové úlohy, která je obsahem posledních 2 cvičení RPH, je Vaším úkolem naprogramovat rozhodování pro agenta ztraceného v bludišti a generátor bludišť které má vytvářet co nejzáludnější bludiště pro cizí agenty. Odevzdání týmové úlohy není povinné, ale můžete za ni získat až 9 bodů, viz Hodnocení úlohy. Na úloze budete pracovat týmově, v každém týmu mohou být maximálně 2 studenti, kteří spolu na úloze mohou bezmezně spolupracovat.
Vaším úkolem je vytvořit dvě doplňující se součásti:
Hodnocení bude na základě toho, v kolika krocích dokáže váš agent v neznámém cizím bludišti najít svůj cíl a v kolika krocích najdou cizí agenti cíl ve vašem bludišti.
Agent se pohybuje v bludišti, což je čtvercová mřížka. Pohyb v bludišti se řídí následujícími pravidly:
NORTH
SOUTH
EAST
WEST
START
OBSTACLE
GOLD
EMPTY
step_limit
vision
Cílem agenta je dostat se ze své počáteční pozice na známou pozici zlata v co nejmenším počtu kroků. Tvurce bludište se snaží vytvořit bludiště ve kterém bude agent hledat zlato co nejdéle. Hodnoceni budete na základě toho, jak dlouho bude trvat vašemu agentovi najít zlato v cizím bludišti a jak dlouho bude cizím agentům trvat najít zlato ve vašem bludišti.
Hodnocení bude na základě automatické evaluace proti benchmark řešení (až 5 bodů) a počtu bodů získaných ve dvou turnajích (až 4 body).
Pro turnaje bude zvoleno několik velikostí bludiště (ne nutně čtvercová bludiště).
Pokud agent v bludišti nenajde zlato, bude to bráno jako že v bludišti strávil maximální možný počet kroků. Pokud vaše bludiště bude infeasible (nebude tam cesta), bude to bráno jako že v něm cizí agenti strávili hledáním zlata 0 kroků.
Turnaj bude vyhodnocen po deadline úlohy.
Vaším úkolem je vytvořit agenta v tříde Agent v souboru agent.py s následující specifikací
Agent
agent.py
__init__
maze_size
gold_position
agent_position
action
state
State
position
'NORTH', 'SOUTH', 'WEST', 'EAST
ACTIONS
maze_keeper.py
Stav předávaný agentovi je instance třídy State. Instance třídy State má 4 parametry:
(12,3)
{'NORTH': 6, 'SOUTH': 1, 'WEST': 0, 'EAST': 6}
Pokud se agent pokusí posunout směrem do překážky nebo mimo bludiště, zůstane na místě. Simulace končí po přesunu agenta na zlato (Gold). Agent si smí (a je to doporučno) držet historii stavů a z ní budovat znalost bludiště.
Vaším úkolem je vytvořit tvůrce bludiště v třídě MazeGenerator v souboru maze_generator.py s následující specifikací:
MazeGenerator
maze_generator.py
generate
layout
'EMPTY', 'OBSTACLE', 'GOLD', 'START
'GOLD
'START
'EMPTY
Máte k dispozici zdrojové kódy simulátoru a kostry implementace agenta a tvůrce bludiště: rph-maze-keeper.zip
Soubor obsahuje následující moduly:
simulation.py
visualization.py
Agent smí s bludištěm interagovat POUZE pomocí třídy MazeKeeper. Agent má zakázáno snažit se získat více informací o bludišti než je uvedeno ve specifikaci.
MazeKeeper
Do BRUTE nahrajte soubor maze_keeper.zip který musí obsahovat soubor agent.py a maze_generator.py s třídami Agent a MazeGenerator. (Samozřejmě pokud ve svém řešení využijete import z některého dalšího modulu (např. maze_keeper), musíte nahrát i tento soubor).
Kvůli problému s automatickou evaluací byl z template řešení odstraněn enum MazeObjects. Pokud vaše verze řešení obsahuje MazeObjects jako enum a ne jako dictionary, stahněte si novou verzi zadání. Pro opravu kódu pak stačí nahradit např. MazeObjects.GOLD stringem 'GOLD'
MazeObjects.GOLD