From 85a46b58c9451aeacce25127a409ff909229fe18 Mon Sep 17 00:00:00 2001 From: Erik Nygren <erik.nygren@sbb.ch> Date: Tue, 16 Jul 2019 15:47:51 -0400 Subject: [PATCH] minor updates to file loading and features in observation space --- flatland/envs/observations.py | 3 ++- flatland/envs/rail_env.py | 2 +- notebooks/complex_scene.pkl | Bin 1810 -> 258467 bytes 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/flatland/envs/observations.py b/flatland/envs/observations.py index 80dc73ad..fecca331 100644 --- a/flatland/envs/observations.py +++ b/flatland/envs/observations.py @@ -397,8 +397,9 @@ class TreeObsForRailEnv(ObservationBuilder): total_transitions = bin(self.env.rail.get_full_transitions(*position)).count("1") num_transitions = np.count_nonzero(cell_transitions) exploring = False + # Detect Switches that can only be used by other agents. - if total_transitions > 2 > num_transitions: + if total_transitions > 2 > num_transitions and tot_dist < unusable_switch: unusable_switch = tot_dist if num_transitions == 1: diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py index e098160d..4c44afb7 100644 --- a/flatland/envs/rail_env.py +++ b/flatland/envs/rail_env.py @@ -446,7 +446,7 @@ class RailEnv(Environment): # agents are always reset as not moving self.agents_static = [EnvAgentStatic(d[0], d[1], d[2], moving=False) for d in data[b"agents_static"]] self.agents = [EnvAgent(d[0], d[1], d[2], d[3], d[4]) for d in data[b"agents"]] - if hasattr(self.obs_builder, 'distance_map'): + if hasattr(self.obs_builder, 'distance_map') and b"distance_maps" in data.keys(): self.obs_builder.distance_map = data[b"distance_maps"] # setup with loaded data self.height, self.width = self.rail.grid.shape diff --git a/notebooks/complex_scene.pkl b/notebooks/complex_scene.pkl index b5c272477f53794d78a896c33d7c91e5b8cb0ea3..9bad5f9674b7a7b7e792c4e4805bce51ced35f7c 100644 GIT binary patch literal 258467 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 JUp^Wq{~v9P1-t+N delta 112 zcmZ4dn12!<WAjEvG1kcitXvac$WFFnjh-yW$hLVgt1@H2lu1mCjFY%{7^X~O1TusT zfDA4c#!0+-Kn6FE!3SdS02w@5Kn5?6!3|>Yfz<E=8A1lklNgy8mL;aA=9Lsr006E2 B9a;bY -- GitLab