diff --git a/examples/training_navigation.py b/examples/training_navigation.py index 3566a3b33874b3fb615b428377102a5bb0f623ab..0c35fb14e4d911f8434071bdeaecae9b400b13e2 100644 --- a/examples/training_navigation.py +++ b/examples/training_navigation.py @@ -25,6 +25,11 @@ env = RailEnv(width=10, rail_generator=random_rail_generator(cell_type_relative_proportion=transition_probability), number_of_agents=1) +env = RailEnv(width=20, + height=20, + rail_generator=complex_rail_generator(nr_start_goal=20, min_dist=10, max_dist=99999, seed=0), + number_of_agents=5) + """ env = RailEnv(width=20, height=20, diff --git a/flatland/core/env_observation_builder.py b/flatland/core/env_observation_builder.py index 8737862b60d9c330cb95e7679b3e39c2ad897da6..848b184f7c99b991ebda3a62aad607ca1b718d86 100644 --- a/flatland/core/env_observation_builder.py +++ b/flatland/core/env_observation_builder.py @@ -242,6 +242,7 @@ class TreeObsForRailEnv(ObservationBuilder): # Start from the current orientation, and see which transitions are available; # organize them as [left, forward, right, back], relative to the current orientation for branch_direction in [(orientation + 4 + i) % 4 for i in range(-1, 3)]: + #TODO: check if cell is a curve, then keep branch direction forward instead of left or right if self.env.rail.get_transition((position[0], position[1], orientation), branch_direction): new_cell = self._new_position(position, branch_direction) diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py index de952d311f300ddef8a2b7716d183fc8de2f3437..30e474d615fafbc29792345b43f92a1f28bb6a80 100644 --- a/flatland/envs/rail_env.py +++ b/flatland/envs/rail_env.py @@ -905,6 +905,7 @@ class RailEnv(Environment): def reset(self, regen_rail=True, replace_agents=True): if regen_rail or self.rail is None: + #TODO: Import not only rail information but also start and goal positions self.rail = self.rail_generator(self.width, self.height, self.num_resets) self.fill_valid_positions() @@ -916,7 +917,7 @@ class RailEnv(Environment): # Use a TreeObsForRailEnv to compute distance maps to each agent's target, to sample initial # agent's orientations that allow a valid solution. - + # TODO: Possibility ot fill valid positions from list of goals and start self.fill_valid_positions() if replace_agents: @@ -1023,6 +1024,7 @@ class RailEnv(Environment): is_deadend = False if action == 2: + # TODO: Check if cell is curve --> Compute correct transition and change in orientation # compute number of possible transitions in the current # cell nbits = 0