flatland.envs.agent_utils module#

class flatland.envs.agent_utils.Agent(initial_position, initial_direction, direction, targets, moving, earliest_departure, latest_arrival, handle, position, arrival_time, old_direction, old_position, speed_counter, action_saver, state_machine, malfunction_handler, waypoints, waypoints_earliest_departure, waypoints_latest_arrival, target_position, target_direction)[source]#

Bases: NamedTuple

action_saver: ActionSaver#

Alias for field number 13

arrival_time: int#

Alias for field number 9

direction: Grid4TransitionsEnum#

Alias for field number 2

earliest_departure: int#

Alias for field number 5

handle: int#

Alias for field number 7

initial_direction: Grid4TransitionsEnum#

Alias for field number 1

initial_position: Tuple[int, int]#

Alias for field number 0

latest_arrival: int#

Alias for field number 6

malfunction_handler: MalfunctionHandler#

Alias for field number 15

moving: bool#

Alias for field number 4

old_direction: Grid4TransitionsEnum#

Alias for field number 10

old_position: Tuple[int, int]#

Alias for field number 11

position: Tuple[int, int]#

Alias for field number 8

speed_counter: SpeedCounter#

Alias for field number 12

state_machine: TrainStateMachine#

Alias for field number 14

target_direction: Grid4TransitionsEnum#

Alias for field number 20

target_position: Tuple[int, int]#

Alias for field number 19

targets: Set[Tuple[Tuple[int, int], Grid4TransitionsEnum]]#

Alias for field number 3

waypoints: List[List[Waypoint]]#

Alias for field number 16

waypoints_earliest_departure: List[int]#

Alias for field number 17

waypoints_latest_arrival: List[int]#

Alias for field number 18

class flatland.envs.agent_utils.EnvAgent(initial_configuration, current_configuration=NOTHING, targets: Set[ConfigurationType] = NOTHING, target_configuration=NOTHING, moving: bool = False, earliest_departure: int = 0, latest_arrival: int = 9223372036854775807, waypoints: List[List[Waypoint]] = NOTHING, waypoints_earliest_departure: List[int] = NOTHING, waypoints_latest_arrival: List[int] = NOTHING, handle=None, speed_counter: SpeedCounter = NOTHING, action_saver: ActionSaver = NOTHING, state_machine: TrainStateMachine = NOTHING, malfunction_handler: MalfunctionHandler = NOTHING, arrival_time: int | None = None, old_configuration=NOTHING)[source]#

Bases: Generic[ConfigurationType]

classmethod apply_timetable(agents: List[EnvAgent], timetable: Timetable) List[EnvAgent][source]#
classmethod from_line(line: Line)[source]#

Create a list of EnvAgent from lists of positions, directions and targets

get_current_delay(elapsed_steps: int, distance_map) int[source]#

+ve if arrival time is projected before latest arrival -ve if arrival time is projected after latest arrival

get_shortest_path(distance_map) List[Waypoint][source]#
get_time_remaining_until_latest_arrival(elapsed_steps: int) int[source]#
get_travel_time_on_shortest_path(distance_map) int[source]#
classmethod load_legacy_static_agent(static_agents_data: Tuple, rail: TransitionMap | None = None)[source]#
property malfunction_data#
reset()[source]#

Resets the agents to their initial values of the episode. Called after ScheduleTime generation.

property speed_data#
property state#
to_agent() Agent[source]#
static to_line(agents: List[EnvAgent])[source]#
flatland.envs.agent_utils.load_env_agent(agent_tuple: Agent, rail: TransitionMap)[source]#
flatland.envs.agent_utils.virtual_configuration(agent: EnvAgent) Tuple[Tuple[int, int], int] | None[source]#

Returns the effective grid (position, direction) for agent, regardless of whether it is currently on the map - used by observations/predictions that need a configuration to compute against even for off-map or arrived agents: - off map: initial_configuration. - on map: current_configuration. - done (arrived, possibly already removed from the map): agent.target_configuration - the

specific configuration actually reached, so a real, rail-valid direction is returned instead of the None direction that current_configuration would give once the agent is removed from the map.

  • any other state (e.g. malfunctioning while still off map): None.

flatland.envs.agent_utils.with_direction(configuration: Tuple[Tuple[int, int], int] | None, direction: int) Tuple[Tuple[int, int], int][source]#

Returns a grid (position, direction) configuration with direction replaced, preserving configuration’s position - or (None, direction) if configuration is None (e.g. the agent is currently off map).