From ad7180098c7abdbb95f445187d28f6a654724af9 Mon Sep 17 00:00:00 2001 From: MLErik <baerenjesus@gmail.com> Date: Sun, 13 Oct 2019 08:42:47 -0400 Subject: [PATCH] fixed grid mode distribution --- examples/introduction_flatland_2_1.py | 10 +- flatland/envs/rail_generators.py | 10 +- ...est_flatland_envs_sparse_rail_generator.py | 265 +++++++++--------- 3 files changed, 142 insertions(+), 143 deletions(-) diff --git a/examples/introduction_flatland_2_1.py b/examples/introduction_flatland_2_1.py index cb95a442..df7a4e2d 100644 --- a/examples/introduction_flatland_2_1.py +++ b/examples/introduction_flatland_2_1.py @@ -25,14 +25,14 @@ from flatland.utils.rendertools import RenderTool, AgentRenderVariant # The railway infrastructure can be build using any of the provided generators in env/rail_generators.py # Here we use the sparse_rail_generator with the following parameters -width = 100 # With of map -height = 100 # Height of map -nr_trains = 200 # Number of trains that have an assigned task in the env -cities_in_map = 20 # Number of cities where agents can start or end +width = 50 # With of map +height = 50 # Height of map +nr_trains = 20 # Number of trains that have an assigned task in the env +cities_in_map = 7 # Number of cities where agents can start or end seed = 14 # Random seed grid_distribution_of_cities = False # Type of city distribution, if False cities are randomly placed max_rails_between_cities = 2 # Max number of tracks allowed between cities. This is number of entry point to a city -max_rail_in_cities = 6 # Max number of parallel tracks within a city, representing a realistic trainstation +max_rail_in_cities = 3 # Max number of parallel tracks within a city, representing a realistic trainstation rail_generator = sparse_rail_generator(max_num_cities=cities_in_map, seed=seed, diff --git a/flatland/envs/rail_generators.py b/flatland/envs/rail_generators.py index ced33635..6c9ec67d 100644 --- a/flatland/envs/rail_generators.py +++ b/flatland/envs/rail_generators.py @@ -642,23 +642,21 @@ def sparse_rail_generator(max_num_cities: int = 5, grid_mode: bool = False, max_ tries += 1 if tries > 200: warnings.warn( - "Could only set {} cities after {} tries, although {} of cities required to be generated!".format( - # noqa - len(city_positions), - tries, num_cities)) + "Could not set all required cities!") break return city_positions, city_cells def _generate_evenly_distr_city_positions(num_cities: int, city_radius: int, width: int, height: int, vector_field) -> (IntVector2DArray, IntVector2DArray): aspect_ratio = height / width + cities_per_row = min(int(np.ceil(np.sqrt(num_cities * aspect_ratio))), int((height - 2) / (2 * (city_radius + 1)))) cities_per_col = min(int(np.ceil(num_cities / cities_per_row)), int((width - 2) / (2 * (city_radius + 1)))) num_build_cities = min(num_cities, cities_per_col * cities_per_row) - row_positions = np.linspace(city_radius + 1, height - 2 * (city_radius + 1), cities_per_row, dtype=int) - col_positions = np.linspace(city_radius + 1, width - 2 * (city_radius + 1), cities_per_col, dtype=int) + row_positions = np.linspace(city_radius + 2, height - (city_radius + 2), cities_per_row, dtype=int) + col_positions = np.linspace(city_radius + 2, width - (city_radius + 2), cities_per_col, dtype=int) city_positions = [] city_cells = [] for city_idx in range(num_build_cities): diff --git a/tests/test_flatland_envs_sparse_rail_generator.py b/tests/test_flatland_envs_sparse_rail_generator.py index 46556480..caf70251 100644 --- a/tests/test_flatland_envs_sparse_rail_generator.py +++ b/tests/test_flatland_envs_sparse_rail_generator.py @@ -535,12 +535,13 @@ def test_sparse_rail_generator_deterministic(): number_of_agents=1, stochastic_data=stochastic_data, # Malfunction data generator ) - # for r in range(env.height): - # for c in range(env.width): - # print("assert env.rail.get_full_transitions({}, {}) == {}, \"[{}][{}]\"".format(r, c, - # env.rail.get_full_transitions( - # r, c), r, c)) + # for r in range(env.height): + # for c in range(env.width): + # print("assert env.rail.get_full_transitions({}, {}) == {}, \"[{}][{}]\"".format(r, c, + # env.rail.get_full_transitions( + # r, c), r, c)) + assert env.rail.get_full_transitions(0, 0) == 0, "[0][0]" assert env.rail.get_full_transitions(0, 1) == 0, "[0][1]" assert env.rail.get_full_transitions(0, 2) == 0, "[0][2]" assert env.rail.get_full_transitions(0, 3) == 0, "[0][3]" @@ -690,19 +691,19 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(5, 22) == 0, "[5][22]" assert env.rail.get_full_transitions(5, 23) == 0, "[5][23]" assert env.rail.get_full_transitions(5, 24) == 0, "[5][24]" - assert env.rail.get_full_transitions(6, 0) == 16386, "[6][0]" - assert env.rail.get_full_transitions(6, 1) == 1025, "[6][1]" - assert env.rail.get_full_transitions(6, 2) == 5633, "[6][2]" - assert env.rail.get_full_transitions(6, 3) == 17411, "[6][3]" - assert env.rail.get_full_transitions(6, 4) == 1025, "[6][4]" - assert env.rail.get_full_transitions(6, 5) == 1025, "[6][5]" - assert env.rail.get_full_transitions(6, 6) == 1025, "[6][6]" - assert env.rail.get_full_transitions(6, 7) == 1025, "[6][7]" - assert env.rail.get_full_transitions(6, 8) == 1025, "[6][8]" - assert env.rail.get_full_transitions(6, 9) == 5633, "[6][9]" - assert env.rail.get_full_transitions(6, 10) == 17411, "[6][10]" - assert env.rail.get_full_transitions(6, 11) == 1025, "[6][11]" - assert env.rail.get_full_transitions(6, 12) == 4608, "[6][12]" + assert env.rail.get_full_transitions(6, 0) == 0, "[6][0]" + assert env.rail.get_full_transitions(6, 1) == 0, "[6][1]" + assert env.rail.get_full_transitions(6, 2) == 0, "[6][2]" + assert env.rail.get_full_transitions(6, 3) == 0, "[6][3]" + assert env.rail.get_full_transitions(6, 4) == 0, "[6][4]" + assert env.rail.get_full_transitions(6, 5) == 0, "[6][5]" + assert env.rail.get_full_transitions(6, 6) == 0, "[6][6]" + assert env.rail.get_full_transitions(6, 7) == 0, "[6][7]" + assert env.rail.get_full_transitions(6, 8) == 0, "[6][8]" + assert env.rail.get_full_transitions(6, 9) == 0, "[6][9]" + assert env.rail.get_full_transitions(6, 10) == 0, "[6][10]" + assert env.rail.get_full_transitions(6, 11) == 0, "[6][11]" + assert env.rail.get_full_transitions(6, 12) == 0, "[6][12]" assert env.rail.get_full_transitions(6, 13) == 0, "[6][13]" assert env.rail.get_full_transitions(6, 14) == 0, "[6][14]" assert env.rail.get_full_transitions(6, 15) == 0, "[6][15]" @@ -715,21 +716,21 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(6, 22) == 0, "[6][22]" assert env.rail.get_full_transitions(6, 23) == 0, "[6][23]" assert env.rail.get_full_transitions(6, 24) == 0, "[6][24]" - assert env.rail.get_full_transitions(7, 0) == 32800, "[7][0]" - assert env.rail.get_full_transitions(7, 1) == 0, "[7][1]" - assert env.rail.get_full_transitions(7, 2) == 72, "[7][2]" - assert env.rail.get_full_transitions(7, 3) == 3089, "[7][3]" - assert env.rail.get_full_transitions(7, 4) == 1025, "[7][4]" + assert env.rail.get_full_transitions(7, 0) == 16386, "[7][0]" + assert env.rail.get_full_transitions(7, 1) == 17411, "[7][1]" + assert env.rail.get_full_transitions(7, 2) == 1025, "[7][2]" + assert env.rail.get_full_transitions(7, 3) == 5633, "[7][3]" + assert env.rail.get_full_transitions(7, 4) == 17411, "[7][4]" assert env.rail.get_full_transitions(7, 5) == 1025, "[7][5]" assert env.rail.get_full_transitions(7, 6) == 1025, "[7][6]" assert env.rail.get_full_transitions(7, 7) == 1025, "[7][7]" assert env.rail.get_full_transitions(7, 8) == 1025, "[7][8]" - assert env.rail.get_full_transitions(7, 9) == 1097, "[7][9]" - assert env.rail.get_full_transitions(7, 10) == 2064, "[7][10]" - assert env.rail.get_full_transitions(7, 11) == 0, "[7][11]" - assert env.rail.get_full_transitions(7, 12) == 32800, "[7][12]" - assert env.rail.get_full_transitions(7, 13) == 0, "[7][13]" - assert env.rail.get_full_transitions(7, 14) == 0, "[7][14]" + assert env.rail.get_full_transitions(7, 9) == 1025, "[7][9]" + assert env.rail.get_full_transitions(7, 10) == 5633, "[7][10]" + assert env.rail.get_full_transitions(7, 11) == 17411, "[7][11]" + assert env.rail.get_full_transitions(7, 12) == 1025, "[7][12]" + assert env.rail.get_full_transitions(7, 13) == 5633, "[7][13]" + assert env.rail.get_full_transitions(7, 14) == 4608, "[7][14]" assert env.rail.get_full_transitions(7, 15) == 0, "[7][15]" assert env.rail.get_full_transitions(7, 16) == 0, "[7][16]" assert env.rail.get_full_transitions(7, 17) == 0, "[7][17]" @@ -741,20 +742,20 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(7, 23) == 0, "[7][23]" assert env.rail.get_full_transitions(7, 24) == 0, "[7][24]" assert env.rail.get_full_transitions(8, 0) == 32800, "[8][0]" - assert env.rail.get_full_transitions(8, 1) == 0, "[8][1]" + assert env.rail.get_full_transitions(8, 1) == 32800, "[8][1]" assert env.rail.get_full_transitions(8, 2) == 0, "[8][2]" - assert env.rail.get_full_transitions(8, 3) == 0, "[8][3]" - assert env.rail.get_full_transitions(8, 4) == 0, "[8][4]" - assert env.rail.get_full_transitions(8, 5) == 0, "[8][5]" - assert env.rail.get_full_transitions(8, 6) == 0, "[8][6]" - assert env.rail.get_full_transitions(8, 7) == 0, "[8][7]" - assert env.rail.get_full_transitions(8, 8) == 0, "[8][8]" - assert env.rail.get_full_transitions(8, 9) == 0, "[8][9]" - assert env.rail.get_full_transitions(8, 10) == 0, "[8][10]" - assert env.rail.get_full_transitions(8, 11) == 0, "[8][11]" - assert env.rail.get_full_transitions(8, 12) == 32800, "[8][12]" - assert env.rail.get_full_transitions(8, 13) == 0, "[8][13]" - assert env.rail.get_full_transitions(8, 14) == 0, "[8][14]" + assert env.rail.get_full_transitions(8, 3) == 72, "[8][3]" + assert env.rail.get_full_transitions(8, 4) == 3089, "[8][4]" + assert env.rail.get_full_transitions(8, 5) == 1025, "[8][5]" + assert env.rail.get_full_transitions(8, 6) == 1025, "[8][6]" + assert env.rail.get_full_transitions(8, 7) == 1025, "[8][7]" + assert env.rail.get_full_transitions(8, 8) == 1025, "[8][8]" + assert env.rail.get_full_transitions(8, 9) == 1025, "[8][9]" + assert env.rail.get_full_transitions(8, 10) == 1097, "[8][10]" + assert env.rail.get_full_transitions(8, 11) == 2064, "[8][11]" + assert env.rail.get_full_transitions(8, 12) == 0, "[8][12]" + assert env.rail.get_full_transitions(8, 13) == 32800, "[8][13]" + assert env.rail.get_full_transitions(8, 14) == 32800, "[8][14]" assert env.rail.get_full_transitions(8, 15) == 0, "[8][15]" assert env.rail.get_full_transitions(8, 16) == 0, "[8][16]" assert env.rail.get_full_transitions(8, 17) == 0, "[8][17]" @@ -766,7 +767,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(8, 23) == 0, "[8][23]" assert env.rail.get_full_transitions(8, 24) == 0, "[8][24]" assert env.rail.get_full_transitions(9, 0) == 32800, "[9][0]" - assert env.rail.get_full_transitions(9, 1) == 0, "[9][1]" + assert env.rail.get_full_transitions(9, 1) == 32800, "[9][1]" assert env.rail.get_full_transitions(9, 2) == 0, "[9][2]" assert env.rail.get_full_transitions(9, 3) == 0, "[9][3]" assert env.rail.get_full_transitions(9, 4) == 0, "[9][4]" @@ -777,9 +778,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(9, 9) == 0, "[9][9]" assert env.rail.get_full_transitions(9, 10) == 0, "[9][10]" assert env.rail.get_full_transitions(9, 11) == 0, "[9][11]" - assert env.rail.get_full_transitions(9, 12) == 32800, "[9][12]" - assert env.rail.get_full_transitions(9, 13) == 0, "[9][13]" - assert env.rail.get_full_transitions(9, 14) == 0, "[9][14]" + assert env.rail.get_full_transitions(9, 12) == 0, "[9][12]" + assert env.rail.get_full_transitions(9, 13) == 32800, "[9][13]" + assert env.rail.get_full_transitions(9, 14) == 32800, "[9][14]" assert env.rail.get_full_transitions(9, 15) == 0, "[9][15]" assert env.rail.get_full_transitions(9, 16) == 0, "[9][16]" assert env.rail.get_full_transitions(9, 17) == 0, "[9][17]" @@ -791,7 +792,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(9, 23) == 0, "[9][23]" assert env.rail.get_full_transitions(9, 24) == 0, "[9][24]" assert env.rail.get_full_transitions(10, 0) == 32800, "[10][0]" - assert env.rail.get_full_transitions(10, 1) == 0, "[10][1]" + assert env.rail.get_full_transitions(10, 1) == 32800, "[10][1]" assert env.rail.get_full_transitions(10, 2) == 0, "[10][2]" assert env.rail.get_full_transitions(10, 3) == 0, "[10][3]" assert env.rail.get_full_transitions(10, 4) == 0, "[10][4]" @@ -802,9 +803,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(10, 9) == 0, "[10][9]" assert env.rail.get_full_transitions(10, 10) == 0, "[10][10]" assert env.rail.get_full_transitions(10, 11) == 0, "[10][11]" - assert env.rail.get_full_transitions(10, 12) == 32800, "[10][12]" - assert env.rail.get_full_transitions(10, 13) == 0, "[10][13]" - assert env.rail.get_full_transitions(10, 14) == 0, "[10][14]" + assert env.rail.get_full_transitions(10, 12) == 0, "[10][12]" + assert env.rail.get_full_transitions(10, 13) == 32800, "[10][13]" + assert env.rail.get_full_transitions(10, 14) == 32800, "[10][14]" assert env.rail.get_full_transitions(10, 15) == 0, "[10][15]" assert env.rail.get_full_transitions(10, 16) == 0, "[10][16]" assert env.rail.get_full_transitions(10, 17) == 0, "[10][17]" @@ -816,7 +817,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(10, 23) == 0, "[10][23]" assert env.rail.get_full_transitions(10, 24) == 0, "[10][24]" assert env.rail.get_full_transitions(11, 0) == 32800, "[11][0]" - assert env.rail.get_full_transitions(11, 1) == 0, "[11][1]" + assert env.rail.get_full_transitions(11, 1) == 32800, "[11][1]" assert env.rail.get_full_transitions(11, 2) == 0, "[11][2]" assert env.rail.get_full_transitions(11, 3) == 0, "[11][3]" assert env.rail.get_full_transitions(11, 4) == 0, "[11][4]" @@ -827,9 +828,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(11, 9) == 0, "[11][9]" assert env.rail.get_full_transitions(11, 10) == 0, "[11][10]" assert env.rail.get_full_transitions(11, 11) == 0, "[11][11]" - assert env.rail.get_full_transitions(11, 12) == 32800, "[11][12]" - assert env.rail.get_full_transitions(11, 13) == 0, "[11][13]" - assert env.rail.get_full_transitions(11, 14) == 0, "[11][14]" + assert env.rail.get_full_transitions(11, 12) == 0, "[11][12]" + assert env.rail.get_full_transitions(11, 13) == 32800, "[11][13]" + assert env.rail.get_full_transitions(11, 14) == 32800, "[11][14]" assert env.rail.get_full_transitions(11, 15) == 0, "[11][15]" assert env.rail.get_full_transitions(11, 16) == 0, "[11][16]" assert env.rail.get_full_transitions(11, 17) == 0, "[11][17]" @@ -841,7 +842,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(11, 23) == 0, "[11][23]" assert env.rail.get_full_transitions(11, 24) == 0, "[11][24]" assert env.rail.get_full_transitions(12, 0) == 32800, "[12][0]" - assert env.rail.get_full_transitions(12, 1) == 0, "[12][1]" + assert env.rail.get_full_transitions(12, 1) == 32800, "[12][1]" assert env.rail.get_full_transitions(12, 2) == 0, "[12][2]" assert env.rail.get_full_transitions(12, 3) == 0, "[12][3]" assert env.rail.get_full_transitions(12, 4) == 0, "[12][4]" @@ -852,9 +853,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(12, 9) == 0, "[12][9]" assert env.rail.get_full_transitions(12, 10) == 0, "[12][10]" assert env.rail.get_full_transitions(12, 11) == 0, "[12][11]" - assert env.rail.get_full_transitions(12, 12) == 32800, "[12][12]" - assert env.rail.get_full_transitions(12, 13) == 0, "[12][13]" - assert env.rail.get_full_transitions(12, 14) == 0, "[12][14]" + assert env.rail.get_full_transitions(12, 12) == 0, "[12][12]" + assert env.rail.get_full_transitions(12, 13) == 32800, "[12][13]" + assert env.rail.get_full_transitions(12, 14) == 32800, "[12][14]" assert env.rail.get_full_transitions(12, 15) == 0, "[12][15]" assert env.rail.get_full_transitions(12, 16) == 0, "[12][16]" assert env.rail.get_full_transitions(12, 17) == 0, "[12][17]" @@ -866,7 +867,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(12, 23) == 0, "[12][23]" assert env.rail.get_full_transitions(12, 24) == 0, "[12][24]" assert env.rail.get_full_transitions(13, 0) == 32800, "[13][0]" - assert env.rail.get_full_transitions(13, 1) == 0, "[13][1]" + assert env.rail.get_full_transitions(13, 1) == 32800, "[13][1]" assert env.rail.get_full_transitions(13, 2) == 0, "[13][2]" assert env.rail.get_full_transitions(13, 3) == 0, "[13][3]" assert env.rail.get_full_transitions(13, 4) == 0, "[13][4]" @@ -877,9 +878,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(13, 9) == 0, "[13][9]" assert env.rail.get_full_transitions(13, 10) == 0, "[13][10]" assert env.rail.get_full_transitions(13, 11) == 0, "[13][11]" - assert env.rail.get_full_transitions(13, 12) == 32800, "[13][12]" - assert env.rail.get_full_transitions(13, 13) == 0, "[13][13]" - assert env.rail.get_full_transitions(13, 14) == 0, "[13][14]" + assert env.rail.get_full_transitions(13, 12) == 0, "[13][12]" + assert env.rail.get_full_transitions(13, 13) == 32800, "[13][13]" + assert env.rail.get_full_transitions(13, 14) == 32800, "[13][14]" assert env.rail.get_full_transitions(13, 15) == 0, "[13][15]" assert env.rail.get_full_transitions(13, 16) == 0, "[13][16]" assert env.rail.get_full_transitions(13, 17) == 0, "[13][17]" @@ -891,7 +892,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(13, 23) == 0, "[13][23]" assert env.rail.get_full_transitions(13, 24) == 0, "[13][24]" assert env.rail.get_full_transitions(14, 0) == 32800, "[14][0]" - assert env.rail.get_full_transitions(14, 1) == 0, "[14][1]" + assert env.rail.get_full_transitions(14, 1) == 32800, "[14][1]" assert env.rail.get_full_transitions(14, 2) == 0, "[14][2]" assert env.rail.get_full_transitions(14, 3) == 0, "[14][3]" assert env.rail.get_full_transitions(14, 4) == 0, "[14][4]" @@ -902,9 +903,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(14, 9) == 0, "[14][9]" assert env.rail.get_full_transitions(14, 10) == 0, "[14][10]" assert env.rail.get_full_transitions(14, 11) == 0, "[14][11]" - assert env.rail.get_full_transitions(14, 12) == 32800, "[14][12]" - assert env.rail.get_full_transitions(14, 13) == 0, "[14][13]" - assert env.rail.get_full_transitions(14, 14) == 0, "[14][14]" + assert env.rail.get_full_transitions(14, 12) == 0, "[14][12]" + assert env.rail.get_full_transitions(14, 13) == 32800, "[14][13]" + assert env.rail.get_full_transitions(14, 14) == 32800, "[14][14]" assert env.rail.get_full_transitions(14, 15) == 0, "[14][15]" assert env.rail.get_full_transitions(14, 16) == 0, "[14][16]" assert env.rail.get_full_transitions(14, 17) == 0, "[14][17]" @@ -916,7 +917,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(14, 23) == 0, "[14][23]" assert env.rail.get_full_transitions(14, 24) == 0, "[14][24]" assert env.rail.get_full_transitions(15, 0) == 32800, "[15][0]" - assert env.rail.get_full_transitions(15, 1) == 0, "[15][1]" + assert env.rail.get_full_transitions(15, 1) == 32800, "[15][1]" assert env.rail.get_full_transitions(15, 2) == 0, "[15][2]" assert env.rail.get_full_transitions(15, 3) == 0, "[15][3]" assert env.rail.get_full_transitions(15, 4) == 0, "[15][4]" @@ -927,9 +928,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(15, 9) == 0, "[15][9]" assert env.rail.get_full_transitions(15, 10) == 0, "[15][10]" assert env.rail.get_full_transitions(15, 11) == 0, "[15][11]" - assert env.rail.get_full_transitions(15, 12) == 32800, "[15][12]" - assert env.rail.get_full_transitions(15, 13) == 0, "[15][13]" - assert env.rail.get_full_transitions(15, 14) == 0, "[15][14]" + assert env.rail.get_full_transitions(15, 12) == 0, "[15][12]" + assert env.rail.get_full_transitions(15, 13) == 32800, "[15][13]" + assert env.rail.get_full_transitions(15, 14) == 32800, "[15][14]" assert env.rail.get_full_transitions(15, 15) == 0, "[15][15]" assert env.rail.get_full_transitions(15, 16) == 0, "[15][16]" assert env.rail.get_full_transitions(15, 17) == 0, "[15][17]" @@ -940,8 +941,8 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(15, 22) == 0, "[15][22]" assert env.rail.get_full_transitions(15, 23) == 0, "[15][23]" assert env.rail.get_full_transitions(15, 24) == 0, "[15][24]" - assert env.rail.get_full_transitions(16, 0) == 32800, "[16][0]" - assert env.rail.get_full_transitions(16, 1) == 0, "[16][1]" + assert env.rail.get_full_transitions(16, 0) == 72, "[16][0]" + assert env.rail.get_full_transitions(16, 1) == 37408, "[16][1]" assert env.rail.get_full_transitions(16, 2) == 0, "[16][2]" assert env.rail.get_full_transitions(16, 3) == 0, "[16][3]" assert env.rail.get_full_transitions(16, 4) == 0, "[16][4]" @@ -952,9 +953,9 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(16, 9) == 0, "[16][9]" assert env.rail.get_full_transitions(16, 10) == 0, "[16][10]" assert env.rail.get_full_transitions(16, 11) == 0, "[16][11]" - assert env.rail.get_full_transitions(16, 12) == 32800, "[16][12]" - assert env.rail.get_full_transitions(16, 13) == 0, "[16][13]" - assert env.rail.get_full_transitions(16, 14) == 0, "[16][14]" + assert env.rail.get_full_transitions(16, 12) == 0, "[16][12]" + assert env.rail.get_full_transitions(16, 13) == 49186, "[16][13]" + assert env.rail.get_full_transitions(16, 14) == 2064, "[16][14]" assert env.rail.get_full_transitions(16, 15) == 0, "[16][15]" assert env.rail.get_full_transitions(16, 16) == 0, "[16][16]" assert env.rail.get_full_transitions(16, 17) == 0, "[16][17]" @@ -965,8 +966,8 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(16, 22) == 0, "[16][22]" assert env.rail.get_full_transitions(16, 23) == 0, "[16][23]" assert env.rail.get_full_transitions(16, 24) == 0, "[16][24]" - assert env.rail.get_full_transitions(17, 0) == 32800, "[17][0]" - assert env.rail.get_full_transitions(17, 1) == 0, "[17][1]" + assert env.rail.get_full_transitions(17, 0) == 0, "[17][0]" + assert env.rail.get_full_transitions(17, 1) == 32800, "[17][1]" assert env.rail.get_full_transitions(17, 2) == 0, "[17][2]" assert env.rail.get_full_transitions(17, 3) == 0, "[17][3]" assert env.rail.get_full_transitions(17, 4) == 0, "[17][4]" @@ -977,8 +978,8 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(17, 9) == 0, "[17][9]" assert env.rail.get_full_transitions(17, 10) == 0, "[17][10]" assert env.rail.get_full_transitions(17, 11) == 0, "[17][11]" - assert env.rail.get_full_transitions(17, 12) == 32800, "[17][12]" - assert env.rail.get_full_transitions(17, 13) == 0, "[17][13]" + assert env.rail.get_full_transitions(17, 12) == 0, "[17][12]" + assert env.rail.get_full_transitions(17, 13) == 32800, "[17][13]" assert env.rail.get_full_transitions(17, 14) == 0, "[17][14]" assert env.rail.get_full_transitions(17, 15) == 0, "[17][15]" assert env.rail.get_full_transitions(17, 16) == 0, "[17][16]" @@ -990,20 +991,20 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(17, 22) == 0, "[17][22]" assert env.rail.get_full_transitions(17, 23) == 0, "[17][23]" assert env.rail.get_full_transitions(17, 24) == 0, "[17][24]" - assert env.rail.get_full_transitions(18, 0) == 72, "[18][0]" - assert env.rail.get_full_transitions(18, 1) == 1025, "[18][1]" - assert env.rail.get_full_transitions(18, 2) == 5633, "[18][2]" - assert env.rail.get_full_transitions(18, 3) == 17411, "[18][3]" - assert env.rail.get_full_transitions(18, 4) == 1025, "[18][4]" - assert env.rail.get_full_transitions(18, 5) == 1025, "[18][5]" - assert env.rail.get_full_transitions(18, 6) == 1025, "[18][6]" - assert env.rail.get_full_transitions(18, 7) == 1025, "[18][7]" - assert env.rail.get_full_transitions(18, 8) == 1025, "[18][8]" - assert env.rail.get_full_transitions(18, 9) == 5633, "[18][9]" - assert env.rail.get_full_transitions(18, 10) == 17411, "[18][10]" - assert env.rail.get_full_transitions(18, 11) == 1025, "[18][11]" - assert env.rail.get_full_transitions(18, 12) == 2064, "[18][12]" - assert env.rail.get_full_transitions(18, 13) == 0, "[18][13]" + assert env.rail.get_full_transitions(18, 0) == 0, "[18][0]" + assert env.rail.get_full_transitions(18, 1) == 32800, "[18][1]" + assert env.rail.get_full_transitions(18, 2) == 0, "[18][2]" + assert env.rail.get_full_transitions(18, 3) == 0, "[18][3]" + assert env.rail.get_full_transitions(18, 4) == 0, "[18][4]" + assert env.rail.get_full_transitions(18, 5) == 0, "[18][5]" + assert env.rail.get_full_transitions(18, 6) == 0, "[18][6]" + assert env.rail.get_full_transitions(18, 7) == 0, "[18][7]" + assert env.rail.get_full_transitions(18, 8) == 0, "[18][8]" + assert env.rail.get_full_transitions(18, 9) == 0, "[18][9]" + assert env.rail.get_full_transitions(18, 10) == 0, "[18][10]" + assert env.rail.get_full_transitions(18, 11) == 0, "[18][11]" + assert env.rail.get_full_transitions(18, 12) == 0, "[18][12]" + assert env.rail.get_full_transitions(18, 13) == 32800, "[18][13]" assert env.rail.get_full_transitions(18, 14) == 0, "[18][14]" assert env.rail.get_full_transitions(18, 15) == 0, "[18][15]" assert env.rail.get_full_transitions(18, 16) == 0, "[18][16]" @@ -1016,19 +1017,19 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(18, 23) == 0, "[18][23]" assert env.rail.get_full_transitions(18, 24) == 0, "[18][24]" assert env.rail.get_full_transitions(19, 0) == 0, "[19][0]" - assert env.rail.get_full_transitions(19, 1) == 0, "[19][1]" - assert env.rail.get_full_transitions(19, 2) == 72, "[19][2]" - assert env.rail.get_full_transitions(19, 3) == 3089, "[19][3]" - assert env.rail.get_full_transitions(19, 4) == 1025, "[19][4]" - assert env.rail.get_full_transitions(19, 5) == 1025, "[19][5]" - assert env.rail.get_full_transitions(19, 6) == 1025, "[19][6]" - assert env.rail.get_full_transitions(19, 7) == 1025, "[19][7]" - assert env.rail.get_full_transitions(19, 8) == 1025, "[19][8]" - assert env.rail.get_full_transitions(19, 9) == 1097, "[19][9]" - assert env.rail.get_full_transitions(19, 10) == 2064, "[19][10]" + assert env.rail.get_full_transitions(19, 1) == 32800, "[19][1]" + assert env.rail.get_full_transitions(19, 2) == 0, "[19][2]" + assert env.rail.get_full_transitions(19, 3) == 0, "[19][3]" + assert env.rail.get_full_transitions(19, 4) == 0, "[19][4]" + assert env.rail.get_full_transitions(19, 5) == 0, "[19][5]" + assert env.rail.get_full_transitions(19, 6) == 0, "[19][6]" + assert env.rail.get_full_transitions(19, 7) == 0, "[19][7]" + assert env.rail.get_full_transitions(19, 8) == 0, "[19][8]" + assert env.rail.get_full_transitions(19, 9) == 0, "[19][9]" + assert env.rail.get_full_transitions(19, 10) == 0, "[19][10]" assert env.rail.get_full_transitions(19, 11) == 0, "[19][11]" assert env.rail.get_full_transitions(19, 12) == 0, "[19][12]" - assert env.rail.get_full_transitions(19, 13) == 0, "[19][13]" + assert env.rail.get_full_transitions(19, 13) == 32800, "[19][13]" assert env.rail.get_full_transitions(19, 14) == 0, "[19][14]" assert env.rail.get_full_transitions(19, 15) == 0, "[19][15]" assert env.rail.get_full_transitions(19, 16) == 0, "[19][16]" @@ -1041,7 +1042,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(19, 23) == 0, "[19][23]" assert env.rail.get_full_transitions(19, 24) == 0, "[19][24]" assert env.rail.get_full_transitions(20, 0) == 0, "[20][0]" - assert env.rail.get_full_transitions(20, 1) == 0, "[20][1]" + assert env.rail.get_full_transitions(20, 1) == 32800, "[20][1]" assert env.rail.get_full_transitions(20, 2) == 0, "[20][2]" assert env.rail.get_full_transitions(20, 3) == 0, "[20][3]" assert env.rail.get_full_transitions(20, 4) == 0, "[20][4]" @@ -1053,7 +1054,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(20, 10) == 0, "[20][10]" assert env.rail.get_full_transitions(20, 11) == 0, "[20][11]" assert env.rail.get_full_transitions(20, 12) == 0, "[20][12]" - assert env.rail.get_full_transitions(20, 13) == 0, "[20][13]" + assert env.rail.get_full_transitions(20, 13) == 32800, "[20][13]" assert env.rail.get_full_transitions(20, 14) == 0, "[20][14]" assert env.rail.get_full_transitions(20, 15) == 0, "[20][15]" assert env.rail.get_full_transitions(20, 16) == 0, "[20][16]" @@ -1066,7 +1067,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(20, 23) == 0, "[20][23]" assert env.rail.get_full_transitions(20, 24) == 0, "[20][24]" assert env.rail.get_full_transitions(21, 0) == 0, "[21][0]" - assert env.rail.get_full_transitions(21, 1) == 0, "[21][1]" + assert env.rail.get_full_transitions(21, 1) == 32800, "[21][1]" assert env.rail.get_full_transitions(21, 2) == 0, "[21][2]" assert env.rail.get_full_transitions(21, 3) == 0, "[21][3]" assert env.rail.get_full_transitions(21, 4) == 0, "[21][4]" @@ -1078,7 +1079,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(21, 10) == 0, "[21][10]" assert env.rail.get_full_transitions(21, 11) == 0, "[21][11]" assert env.rail.get_full_transitions(21, 12) == 0, "[21][12]" - assert env.rail.get_full_transitions(21, 13) == 0, "[21][13]" + assert env.rail.get_full_transitions(21, 13) == 32800, "[21][13]" assert env.rail.get_full_transitions(21, 14) == 0, "[21][14]" assert env.rail.get_full_transitions(21, 15) == 0, "[21][15]" assert env.rail.get_full_transitions(21, 16) == 0, "[21][16]" @@ -1091,7 +1092,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(21, 23) == 0, "[21][23]" assert env.rail.get_full_transitions(21, 24) == 0, "[21][24]" assert env.rail.get_full_transitions(22, 0) == 0, "[22][0]" - assert env.rail.get_full_transitions(22, 1) == 0, "[22][1]" + assert env.rail.get_full_transitions(22, 1) == 32800, "[22][1]" assert env.rail.get_full_transitions(22, 2) == 0, "[22][2]" assert env.rail.get_full_transitions(22, 3) == 0, "[22][3]" assert env.rail.get_full_transitions(22, 4) == 0, "[22][4]" @@ -1103,7 +1104,7 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(22, 10) == 0, "[22][10]" assert env.rail.get_full_transitions(22, 11) == 0, "[22][11]" assert env.rail.get_full_transitions(22, 12) == 0, "[22][12]" - assert env.rail.get_full_transitions(22, 13) == 0, "[22][13]" + assert env.rail.get_full_transitions(22, 13) == 32800, "[22][13]" assert env.rail.get_full_transitions(22, 14) == 0, "[22][14]" assert env.rail.get_full_transitions(22, 15) == 0, "[22][15]" assert env.rail.get_full_transitions(22, 16) == 0, "[22][16]" @@ -1116,19 +1117,19 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(22, 23) == 0, "[22][23]" assert env.rail.get_full_transitions(22, 24) == 0, "[22][24]" assert env.rail.get_full_transitions(23, 0) == 0, "[23][0]" - assert env.rail.get_full_transitions(23, 1) == 0, "[23][1]" - assert env.rail.get_full_transitions(23, 2) == 0, "[23][2]" - assert env.rail.get_full_transitions(23, 3) == 0, "[23][3]" - assert env.rail.get_full_transitions(23, 4) == 0, "[23][4]" - assert env.rail.get_full_transitions(23, 5) == 0, "[23][5]" - assert env.rail.get_full_transitions(23, 6) == 0, "[23][6]" - assert env.rail.get_full_transitions(23, 7) == 0, "[23][7]" - assert env.rail.get_full_transitions(23, 8) == 0, "[23][8]" - assert env.rail.get_full_transitions(23, 9) == 0, "[23][9]" - assert env.rail.get_full_transitions(23, 10) == 0, "[23][10]" - assert env.rail.get_full_transitions(23, 11) == 0, "[23][11]" - assert env.rail.get_full_transitions(23, 12) == 0, "[23][12]" - assert env.rail.get_full_transitions(23, 13) == 0, "[23][13]" + assert env.rail.get_full_transitions(23, 1) == 72, "[23][1]" + assert env.rail.get_full_transitions(23, 2) == 1025, "[23][2]" + assert env.rail.get_full_transitions(23, 3) == 5633, "[23][3]" + assert env.rail.get_full_transitions(23, 4) == 17411, "[23][4]" + assert env.rail.get_full_transitions(23, 5) == 1025, "[23][5]" + assert env.rail.get_full_transitions(23, 6) == 1025, "[23][6]" + assert env.rail.get_full_transitions(23, 7) == 1025, "[23][7]" + assert env.rail.get_full_transitions(23, 8) == 1025, "[23][8]" + assert env.rail.get_full_transitions(23, 9) == 1025, "[23][9]" + assert env.rail.get_full_transitions(23, 10) == 5633, "[23][10]" + assert env.rail.get_full_transitions(23, 11) == 17411, "[23][11]" + assert env.rail.get_full_transitions(23, 12) == 1025, "[23][12]" + assert env.rail.get_full_transitions(23, 13) == 2064, "[23][13]" assert env.rail.get_full_transitions(23, 14) == 0, "[23][14]" assert env.rail.get_full_transitions(23, 15) == 0, "[23][15]" assert env.rail.get_full_transitions(23, 16) == 0, "[23][16]" @@ -1143,15 +1144,15 @@ def test_sparse_rail_generator_deterministic(): assert env.rail.get_full_transitions(24, 0) == 0, "[24][0]" assert env.rail.get_full_transitions(24, 1) == 0, "[24][1]" assert env.rail.get_full_transitions(24, 2) == 0, "[24][2]" - assert env.rail.get_full_transitions(24, 3) == 0, "[24][3]" - assert env.rail.get_full_transitions(24, 4) == 0, "[24][4]" - assert env.rail.get_full_transitions(24, 5) == 0, "[24][5]" - assert env.rail.get_full_transitions(24, 6) == 0, "[24][6]" - assert env.rail.get_full_transitions(24, 7) == 0, "[24][7]" - assert env.rail.get_full_transitions(24, 8) == 0, "[24][8]" - assert env.rail.get_full_transitions(24, 9) == 0, "[24][9]" - assert env.rail.get_full_transitions(24, 10) == 0, "[24][10]" - assert env.rail.get_full_transitions(24, 11) == 0, "[24][11]" + assert env.rail.get_full_transitions(24, 3) == 72, "[24][3]" + assert env.rail.get_full_transitions(24, 4) == 3089, "[24][4]" + assert env.rail.get_full_transitions(24, 5) == 1025, "[24][5]" + assert env.rail.get_full_transitions(24, 6) == 1025, "[24][6]" + assert env.rail.get_full_transitions(24, 7) == 1025, "[24][7]" + assert env.rail.get_full_transitions(24, 8) == 1025, "[24][8]" + assert env.rail.get_full_transitions(24, 9) == 1025, "[24][9]" + assert env.rail.get_full_transitions(24, 10) == 1097, "[24][10]" + assert env.rail.get_full_transitions(24, 11) == 2064, "[24][11]" assert env.rail.get_full_transitions(24, 12) == 0, "[24][12]" assert env.rail.get_full_transitions(24, 13) == 0, "[24][13]" assert env.rail.get_full_transitions(24, 14) == 0, "[24][14]" -- GitLab