diff --git a/examples/flatland_2_0_example.py b/examples/flatland_2_0_example.py index a5a5946b0889ef4175aaefe32c8428a06419d960..3ad3a7ec5ca30556272f9ad66ecf203a50808914 100644 --- a/examples/flatland_2_0_example.py +++ b/examples/flatland_2_0_example.py @@ -30,17 +30,17 @@ speed_ration_map = {1.: 0.25, # Fast passenger train 1. / 3.: 0.25, # Slow commuter train 1. / 4.: 0.25} # Slow freight train -env = RailEnv(width=50, - height=50, - rail_generator=sparse_rail_generator(max_num_cities=10, +env = RailEnv(width=100, + height=100, + rail_generator=sparse_rail_generator(max_num_cities=20, # Number of cities in map (where train stations are) seed=1, # Random seed grid_mode=False, max_rails_between_cities=3, - max_rails_in_city=2, + max_rails_in_city=8, ), schedule_generator=sparse_schedule_generator(speed_ration_map), - number_of_agents=10, + number_of_agents=100, stochastic_data=stochastic_data, # Malfunction data generator obs_builder_object=TreeObservation, remove_agents_at_target=True diff --git a/flatland/envs/rail_generators.py b/flatland/envs/rail_generators.py index 2f974ae962400f5c131aebe9d9b8f12419e568bc..6ec016161c8bb72eb4b1608eac5a8c471d5c25dc 100644 --- a/flatland/envs/rail_generators.py +++ b/flatland/envs/rail_generators.py @@ -822,22 +822,24 @@ def sparse_rail_generator(max_num_cities: int = 5, grid_mode: bool = False, max_ source = inner_connection_points[current_city][boarder][track_id] target = inner_connection_points[current_city][opposite_boarder][track_id] current_track = connect_straight_line_in_grid_map(grid_map, source, target, rail_trans) - + free_rails[current_city].append(current_track) for track_id in range(nr_of_connection_points): source = inner_connection_points[current_city][boarder][track_id] target = inner_connection_points[current_city][opposite_boarder][track_id] + + # Connect parallel tracks with each other fix_inner_nodes( grid_map, source, rail_trans) fix_inner_nodes( grid_map, target, rail_trans) + + # Connect outer tracks to inner tracks if start_idx <= track_id < start_idx + number_of_out_rails: source_outer = outer_connection_points[current_city][boarder][track_id - start_idx] target_outer = outer_connection_points[current_city][opposite_boarder][track_id - start_idx] connect_straight_line_in_grid_map(grid_map, source, source_outer, rail_trans) connect_straight_line_in_grid_map(grid_map, target, target_outer, rail_trans) - - free_rails[current_city].append(current_track) return free_rails def _set_trainstation_positions(city_positions: IntVector2DArray, city_radius: int, diff --git a/flatland/envs/schedule_generators.py b/flatland/envs/schedule_generators.py index 5cd44cf0cf66b0f991b87e78fc464fc153704c6f..07f10cec7235eb027e00ea33b283c555a05b6dbe 100644 --- a/flatland/envs/schedule_generators.py +++ b/flatland/envs/schedule_generators.py @@ -78,11 +78,11 @@ def sparse_schedule_generator(speed_ratio_map: Mapping[float, float] = None) -> target_city = agent_start_targets_cities[agent_idx][1] start = random.choice(train_stations[start_city]) target = random.choice(train_stations[target_city]) + while start[1] % 2 != 0: start = random.choice(train_stations[start_city]) while target[1] % 2 != 1: target = random.choice(train_stations[target_city]) - agent_orientation = (agent_start_targets_cities[agent_idx][2] + 2 * start[1]) % 4 if not rail.check_path_exists(start[0], agent_orientation, target[0]): agent_orientation = (agent_orientation + 2) % 4