forked from neuro-mechanistic-modeling/PyDSMC
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimple_example.py
More file actions
executable file
·44 lines (34 loc) · 1.84 KB
/
Copy pathsimple_example.py
File metadata and controls
executable file
·44 lines (34 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!python3
import gymnasium as gym
from minigrid.wrappers import FlatObsWrapper
from stable_baselines3 import DQN
if __name__ == "__main__":
env = gym.make("MiniGrid-Dynamic-Obstacles-Random-6x6-v0")
env = FlatObsWrapper(env)
agent = DQN.load("example_agents/minigrid_dynamic_obstacles_6x6/dqn_agent.zip")
import pydsmc.property as prop
from pydsmc.evaluator import Evaluator
# initialize the evaluator
evaluator = Evaluator(env=env, log_dir="./example_logs")
# create and register a predefined property
return_property = prop.create_predefined_property(property_id='return',
eps=0.025,
kappa=0.05,
relative_error=True,
bounds=(-1, 1),
sound=True)
evaluator.register_property(return_property)
# Custom properties are also possible
collision_property = prop.create_custom_property(name='obstacle_collision_prob',
check_fn=lambda self, t: float(t[-1][2] == -1),
eps=0.05,
kappa=0.05,
relative_error=True,
bounds=(0, 1),
binomial=True)
evaluator.register_property(collision_property)
# evaluate the agent with respect to the registered properties
results = evaluator.eval(agent=agent,
save_every_n_episodes=1000,
time_limit=2.5,
stop_on_convergence=True)