From 0f0cc360d6c0d16ffb654d09e64c37bc609c2abc Mon Sep 17 00:00:00 2001 From: "Egli Adrian (IT-SCI-API-PFI)" <adrian.egli@sbb.ch> Date: Mon, 19 Aug 2019 18:40:14 +0200 Subject: [PATCH] generator realistic dead end added --- flatland/envs/generators.py | 25 +++++++++++++++++++ ...test_flatland_env_sparse_rail_generator.py | 5 +++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/flatland/envs/generators.py b/flatland/envs/generators.py index a4b627eb..29545eac 100644 --- a/flatland/envs/generators.py +++ b/flatland/envs/generators.py @@ -774,6 +774,31 @@ def realistic_rail_generator(nr_start_goal=1, seed=0): agents_targets.append(add_pos) idx_target += 1 + add_max_dead_end = 20 + for pos_y in np.random.choice(np.arange(width-7)+3,add_max_dead_end,False): + pos_x = off_set+1 + if pos_x < height - 1: + ok = True + for k in range(6): + c = (pos_x,pos_y-k+1) + ok &= grid_map.grid[c[0]][c[1]] == 0 + if ok: + if np.random.random() < 0.5: + start_track = (pos_x, pos_y) + goal_track = (pos_x, pos_y - 2) + new_path = connect_rail(rail_trans, rail_array, start_track, goal_track) + if len(new_path) > 0: + c = (pos_x-1, pos_y-1) + make_switch_e_w(width, height, grid_map, c) + else: + start_track = (pos_x, pos_y) + goal_track = (pos_x, pos_y - 2) + new_path = connect_rail(rail_trans, rail_array, start_track, goal_track) + if len(new_path) > 0: + c = (pos_x-1, pos_y+1) + make_switch_w_e(width, height, grid_map, c) + + agents_position = [] agents_target = [] agents_direction = [] diff --git a/tests/test_flatland_env_sparse_rail_generator.py b/tests/test_flatland_env_sparse_rail_generator.py index 62937213..7d1b818c 100644 --- a/tests/test_flatland_env_sparse_rail_generator.py +++ b/tests/test_flatland_env_sparse_rail_generator.py @@ -19,7 +19,7 @@ def test_realistic_rail_generator(vizualization_folder_name=None): screen_height=1200, screen_width=1600) env_renderer.render_env(show=True, show_observations=True, show_predictions=False) - + env_renderer.close_window() def test_sparse_rail_generator(): env = RailEnv(width=50, @@ -38,3 +38,6 @@ def test_sparse_rail_generator(): # reset to initialize agents_static env_renderer = RenderTool(env, gl="PILSVG", ) env_renderer.render_env(show=True, show_observations=True, show_predictions=False) + + +test_realistic_rail_generator() -- GitLab