from stable_baselines3 import A2C from sokoban_gym.wrappers.observation import ImageObservationWrapper class Agent: """ A kötelező programként beadandó ágens leírása. """ def __init__(self, env) -> None: """ A konsztruktorban van lehetőség például a modell betöltésére vagy a környezet wrapper-ekkel való kiterjesztésére. """ self.model = A2C.load("agent/Sokoban-v1_5_8_1box_A2C") # A környezetet kiterjeszthetjük wrapper-ek segítségével. # Ha tanításkor modosítottuk a megfigyeléseket, # akkor azt a módosítást kiértékeléskor is meg kell adnunk. self.observation_wrapper = ImageObservationWrapper(env) def act(self, observation): """ A megfigyelés alapján visszaadja a következő lépést. Ez a függvény fogja megadni az ágens működését. """ # Ha tanításkor modosítottuk a megfigyeléseket, # akkor azt a módosítást kiértékeléskor is meg kell adnunk. # extended_obsetvation = self.observation_wrapper.observation(observation) return self.model.predict(extended_obsetvation, deterministic=True)