2
2
3
3
import numpy as np
4
4
5
- from flatland .core .grid .rail_env_grid import RailEnvTransitions
5
+ from flatland .core .grid .rail_env_grid import RailEnvTransitions , RailEnvTransitionsEnum
6
6
from flatland .core .transition_map import GridTransitionMap
7
7
8
8
@@ -42,16 +42,16 @@ def make_simple_rail() -> Tuple[GridTransitionMap, np.array, Dict]:
42
42
rail = GridTransitionMap (width = rail_map .shape [1 ],
43
43
height = rail_map .shape [0 ], transitions = transitions )
44
44
rail .grid = rail_map
45
- city_positions = [(0 , 3 ), (6 , 6 )]
45
+ city_positions = [(3 , 9 ), (6 , 2 )]
46
46
train_stations = [
47
- [( ( 0 , 3 ), 0 ) ],
48
- [( (6 , 6 ), 0 ) ],
49
- ]
47
+ [(( 3 , 9 ), 1 ) ],
48
+ [( (6 , 2 ), 2 ) ],
49
+ ]
50
50
city_orientations = [0 , 2 ]
51
51
agents_hints = {'city_positions' : city_positions ,
52
52
'train_stations' : train_stations ,
53
53
'city_orientations' : city_orientations
54
- }
54
+ }
55
55
optionals = {'agents_hints' : agents_hints }
56
56
return rail , rail_map , optionals
57
57
@@ -93,16 +93,16 @@ def make_disconnected_simple_rail() -> Tuple[GridTransitionMap, np.array, Dict]:
93
93
rail = GridTransitionMap (width = rail_map .shape [1 ],
94
94
height = rail_map .shape [0 ], transitions = transitions )
95
95
rail .grid = rail_map
96
- city_positions = [(0 ,3 ), (6 , 6 )]
96
+ city_positions = [(0 , 3 ), (6 , 6 )]
97
97
train_stations = [
98
- [( (0 , 3 ), 0 ) ],
99
- [( (6 , 6 ), 0 ) ],
100
- ]
98
+ [( (0 , 3 ), 0 ) ],
99
+ [( (6 , 6 ), 0 ) ],
100
+ ]
101
101
city_orientations = [0 , 2 ]
102
102
agents_hints = {'city_positions' : city_positions ,
103
103
'train_stations' : train_stations ,
104
104
'city_orientations' : city_orientations
105
- }
105
+ }
106
106
optionals = {'agents_hints' : agents_hints }
107
107
return rail , rail_map , optionals
108
108
@@ -141,16 +141,16 @@ def make_simple_rail2() -> Tuple[GridTransitionMap, np.array, Dict]:
141
141
rail = GridTransitionMap (width = rail_map .shape [1 ],
142
142
height = rail_map .shape [0 ], transitions = transitions )
143
143
rail .grid = rail_map
144
- city_positions = [(0 ,3 ), (6 , 6 )]
144
+ city_positions = [(0 , 3 ), (6 , 6 )]
145
145
train_stations = [
146
- [( (0 , 3 ), 0 ) ],
147
- [( (6 , 6 ), 0 ) ],
148
- ]
146
+ [( (0 , 3 ), 0 ) ],
147
+ [( (6 , 6 ), 0 ) ],
148
+ ]
149
149
city_orientations = [0 , 2 ]
150
150
agents_hints = {'city_positions' : city_positions ,
151
151
'train_stations' : train_stations ,
152
152
'city_orientations' : city_orientations
153
- }
153
+ }
154
154
optionals = {'agents_hints' : agents_hints }
155
155
return rail , rail_map , optionals
156
156
@@ -190,16 +190,16 @@ def make_simple_rail_unconnected() -> Tuple[GridTransitionMap, np.array, Dict]:
190
190
rail = GridTransitionMap (width = rail_map .shape [1 ],
191
191
height = rail_map .shape [0 ], transitions = transitions )
192
192
rail .grid = rail_map
193
- city_positions = [(0 ,3 ), (6 , 6 )]
193
+ city_positions = [(0 , 3 ), (6 , 6 )]
194
194
train_stations = [
195
- [( (0 , 3 ), 0 ) ],
196
- [( (6 , 6 ), 0 ) ],
197
- ]
195
+ [( (0 , 3 ), 0 ) ],
196
+ [( (6 , 6 ), 0 ) ],
197
+ ]
198
198
city_orientations = [0 , 2 ]
199
199
agents_hints = {'city_positions' : city_positions ,
200
200
'train_stations' : train_stations ,
201
201
'city_orientations' : city_orientations
202
- }
202
+ }
203
203
optionals = {'agents_hints' : agents_hints }
204
204
return rail , rail_map , optionals
205
205
@@ -245,16 +245,16 @@ def make_simple_rail_with_alternatives() -> Tuple[GridTransitionMap, np.array, D
245
245
rail = GridTransitionMap (width = rail_map .shape [1 ],
246
246
height = rail_map .shape [0 ], transitions = transitions )
247
247
rail .grid = rail_map
248
- city_positions = [(0 ,3 ), (6 , 6 )]
248
+ city_positions = [(0 , 3 ), (6 , 6 )]
249
249
train_stations = [
250
- [( (0 , 3 ), 0 ) ],
251
- [( (6 , 6 ), 0 ) ],
252
- ]
250
+ [( (0 , 3 ), 0 ) ],
251
+ [( (6 , 6 ), 0 ) ],
252
+ ]
253
253
city_orientations = [0 , 2 ]
254
254
agents_hints = {'city_positions' : city_positions ,
255
255
'train_stations' : train_stations ,
256
256
'city_orientations' : city_orientations
257
- }
257
+ }
258
258
optionals = {'agents_hints' : agents_hints }
259
259
return rail , rail_map , optionals
260
260
@@ -294,20 +294,21 @@ def make_invalid_simple_rail() -> Tuple[GridTransitionMap, np.array, Dict[str, A
294
294
rail = GridTransitionMap (width = rail_map .shape [1 ],
295
295
height = rail_map .shape [0 ], transitions = transitions )
296
296
rail .grid = rail_map
297
- city_positions = [(0 ,3 ), (6 , 6 )]
297
+ city_positions = [(0 , 3 ), (6 , 6 )]
298
298
train_stations = [
299
- [( (0 , 3 ), 0 ) ],
300
- [( (6 , 6 ), 0 ) ],
301
- ]
299
+ [( (0 , 3 ), 0 ) ],
300
+ [( (6 , 6 ), 0 ) ],
301
+ ]
302
302
city_orientations = [0 , 2 ]
303
303
agents_hints = {'city_positions' : city_positions ,
304
304
'train_stations' : train_stations ,
305
305
'city_orientations' : city_orientations
306
- }
306
+ }
307
307
optionals = {'agents_hints' : agents_hints }
308
308
return rail , rail_map , optionals
309
309
310
- def make_oval_rail () -> Tuple [GridTransitionMap , np .array ]:
310
+
311
+ def make_oval_rail () -> Tuple [GridTransitionMap , np .array , Any ]:
311
312
transitions = RailEnvTransitions ()
312
313
cells = transitions .transition_list
313
314
@@ -322,7 +323,7 @@ def make_oval_rail() -> Tuple[GridTransitionMap, np.array]:
322
323
rail_map = np .array (
323
324
[[empty ] * 9 ] +
324
325
[[empty ] + [right_turn_from_south ] + [horizontal_straight ] * 5 + [right_turn_from_west ] + [empty ]] +
325
- [[empty ] + [vertical_straight ] + [empty ] * 5 + [vertical_straight ] + [empty ]]+
326
+ [[empty ] + [vertical_straight ] + [empty ] * 5 + [vertical_straight ] + [empty ]] +
326
327
[[empty ] + [vertical_straight ] + [empty ] * 5 + [vertical_straight ] + [empty ]] +
327
328
[[empty ] + [right_turn_from_east ] + [horizontal_straight ] * 5 + [right_turn_from_north ] + [empty ]] +
328
329
[[empty ] * 9 ], dtype = np .uint16 )
@@ -341,4 +342,39 @@ def make_oval_rail() -> Tuple[GridTransitionMap, np.array]:
341
342
'city_orientations' : city_orientations
342
343
}
343
344
optionals = {'agents_hints' : agents_hints }
344
- return rail , rail_map , optionals
345
+ return rail , rail_map , optionals
346
+
347
+
348
+ def make_diamond_crossing_rail () -> Tuple [GridTransitionMap , np .array , Dict ]:
349
+ # We instantiate a very simple rail network on a 6x10 grid:
350
+ # Note that some cells have invalid RailEnvTransitions!
351
+ # |
352
+ # |
353
+ # _ _ | _ _ _ _ _ _ _
354
+ # |
355
+ # |
356
+ # |
357
+ transitions = RailEnvTransitions ()
358
+ rail_map = np .array (
359
+ [[RailEnvTransitionsEnum .empty ] * 2 + [RailEnvTransitionsEnum .dead_end_from_south ] + [RailEnvTransitionsEnum .empty ] * 7 ] +
360
+ [[RailEnvTransitionsEnum .empty ] * 2 + [RailEnvTransitionsEnum .vertical_straight ] + [RailEnvTransitionsEnum .empty ] * 7 ] * 2 +
361
+ [[RailEnvTransitionsEnum .dead_end_from_east ] + [RailEnvTransitionsEnum .horizontal_straight ] * 1 + [RailEnvTransitionsEnum .diamond_crossing ] * 1 + [
362
+ RailEnvTransitionsEnum .horizontal_straight ] * 6 + [RailEnvTransitionsEnum .dead_end_from_west ]] +
363
+ [[RailEnvTransitionsEnum .empty ] * 2 + [RailEnvTransitionsEnum .vertical_straight ] + [RailEnvTransitionsEnum .empty ] * 7 ] * 2 +
364
+ [[RailEnvTransitionsEnum .empty ] * 2 + [RailEnvTransitionsEnum .dead_end_from_north ] + [RailEnvTransitionsEnum .empty ] * 7 ]
365
+ , dtype = np .uint16 )
366
+ rail = GridTransitionMap (width = rail_map .shape [1 ],
367
+ height = rail_map .shape [0 ], transitions = transitions )
368
+ rail .grid = rail_map
369
+ city_positions = [(1 , 4 ), (4 , 4 )]
370
+ train_stations = [
371
+ [((1 , 4 ), 0 )],
372
+ [((4 , 4 ), 0 )],
373
+ ]
374
+ city_orientations = [1 , 3 ]
375
+ agents_hints = {'city_positions' : city_positions ,
376
+ 'train_stations' : train_stations ,
377
+ 'city_orientations' : city_orientations
378
+ }
379
+ optionals = {'agents_hints' : agents_hints }
380
+ return rail , rail_map , optionals
0 commit comments