From ca8dcd654bb29a04de2a419330a1ec111374cfb7 Mon Sep 17 00:00:00 2001 From: u214892 <u214892@sbb.ch> Date: Thu, 21 Nov 2019 09:45:37 -0500 Subject: [PATCH] Trainrun and Waypoint instead of WayPoint and TrainRun for readability --- flatland/action_plan/action_plan.py | 44 ++-- flatland/envs/rail_env_shortest_paths.py | 20 +- .../envs/rail_train_run_data_structures.py | 8 +- tests/test_action_plan.py | 50 ++-- tests/test_flatland_envs_predictions.py | 14 +- ...t_flatland_envs_rail_env_shortest_paths.py | 228 +++++++++--------- 6 files changed, 182 insertions(+), 182 deletions(-) diff --git a/flatland/action_plan/action_plan.py b/flatland/action_plan/action_plan.py index 209ef0e2..cc83a6ea 100644 --- a/flatland/action_plan/action_plan.py +++ b/flatland/action_plan/action_plan.py @@ -6,7 +6,7 @@ import numpy as np from flatland.core.grid.grid_utils import Vec2dOperations as Vec2d from flatland.envs.rail_env import RailEnv, RailEnvActions from flatland.envs.rail_env_shortest_paths import get_action_for_move -from flatland.envs.rail_train_run_data_structures import WayPoint, TrainRun, TrainRunWayPoint +from flatland.envs.rail_train_run_data_structures import Wayoint, Trainrun, TrainrunWaypoint from flatland.utils.rendertools import RenderTool, AgentRenderVariant # ---- ActionPlan --------------- @@ -22,20 +22,20 @@ ActionPlan = List[ActionPlanElement] ActionPlanDict = Dict[int, ActionPlan] -class ControllerFromTrainRuns(): +class ControllerFromTrainruns(): """Takes train runs, derives the actions from it and re-acts them.""" pp = pprint.PrettyPrinter(indent=4) def __init__(self, env: RailEnv, - train_run_dict: Dict[int, TrainRun]): + train_run_dict: Dict[int, Trainrun]): self.env: RailEnv = env - self.train_run_dict: Dict[int, TrainRun] = train_run_dict + self.train_run_dict: Dict[int, Trainrun] = train_run_dict self.action_plan: ActionPlanDict = [self._create_action_plan_for_agent(agent_id, chosen_path) for agent_id, chosen_path in train_run_dict.items()] - def get_way_point_before_or_at_step(self, agent_id: int, step: int) -> WayPoint: + def get_way_point_before_or_at_step(self, agent_id: int, step: int) -> Wayoint: """ Get the way point point from which the current position can be extracted. @@ -53,13 +53,13 @@ class ControllerFromTrainRuns(): entry_time_step = train_run[0].scheduled_at # the agent has no position before and at choosing to enter the grid (one tick elapses before the agent enters the grid) if step <= entry_time_step: - return WayPoint(position=None, direction=self.env.agents[agent_id].initial_direction) + return Wayoint(position=None, direction=self.env.agents[agent_id].initial_direction) # the agent has no position as soon as the target is reached exit_time_step = train_run[-1].scheduled_at if step >= exit_time_step: # agent loses position as soon as target cell is reached - return WayPoint(position=None, direction=train_run[-1].way_point.direction) + return Wayoint(position=None, direction=train_run[-1].way_point.direction) way_point = None for train_run_way_point in train_run: @@ -130,15 +130,15 @@ class ControllerFromTrainRuns(): "len for agent {} should be the same.\n\n expected ({}) = {}\n\n actual ({}) = {}".format( k, len(expected_action_plan[k]), - ControllerFromTrainRuns.pp.pformat(expected_action_plan[k]), + ControllerFromTrainruns.pp.pformat(expected_action_plan[k]), len(actual_action_plan[k]), - ControllerFromTrainRuns.pp.pformat(actual_action_plan[k])) + ControllerFromTrainruns.pp.pformat(actual_action_plan[k])) for i in range(len(expected_action_plan[k])): assert expected_action_plan[k][i] == actual_action_plan[k][i], \ "not the same at agent {} at step {}\n\n expected = {}\n\n actual = {}".format( k, i, - ControllerFromTrainRuns.pp.pformat(expected_action_plan[k][i]), - ControllerFromTrainRuns.pp.pformat(actual_action_plan[k][i])) + ControllerFromTrainruns.pp.pformat(expected_action_plan[k][i]), + ControllerFromTrainruns.pp.pformat(actual_action_plan[k][i])) assert expected_action_plan == actual_action_plan, \ "expected {}, found {}".format(expected_action_plan, actual_action_plan) @@ -147,14 +147,14 @@ class ControllerFromTrainRuns(): agent = self.env.agents[agent_id] minimum_cell_time = int(np.ceil(1.0 / agent.speed_data['speed'])) for path_loop, train_run_way_point in enumerate(train_run): - train_run_way_point: TrainRunWayPoint = train_run_way_point + train_run_way_point: TrainrunWaypoint = train_run_way_point position = train_run_way_point.way_point.position if Vec2d.is_equal(agent.target, position): break - next_train_run_way_point: TrainRunWayPoint = train_run[path_loop + 1] + next_train_run_way_point: TrainrunWaypoint = train_run[path_loop + 1] next_position = next_train_run_way_point.way_point.position if path_loop == 0: @@ -186,8 +186,8 @@ class ControllerFromTrainRuns(): def _add_action_plan_elements_for_current_path_element(self, action_plan: ActionPlan, minimum_cell_time: int, - train_run_way_point: TrainRunWayPoint, - next_train_run_way_point: TrainRunWayPoint): + train_run_way_point: TrainrunWaypoint, + next_train_run_way_point: TrainrunWaypoint): scheduled_at = train_run_way_point.scheduled_at next_entry_value = next_train_run_way_point.scheduled_at @@ -217,8 +217,8 @@ class ControllerFromTrainRuns(): def _add_action_plan_elements_for_target_at_path_element_just_before_target(self, action_plan: ActionPlan, minimum_cell_time: int, - train_run_way_point: TrainRunWayPoint, - next_train_run_way_point: TrainRunWayPoint): + train_run_way_point: TrainrunWaypoint, + next_train_run_way_point: TrainrunWaypoint): scheduled_at = train_run_way_point.scheduled_at action = ActionPlanElement(scheduled_at + minimum_cell_time, RailEnvActions.STOP_MOVING) @@ -226,8 +226,8 @@ class ControllerFromTrainRuns(): def _add_action_plan_elements_for_first_path_element_of_agent(self, action_plan: ActionPlan, - train_run_way_point: TrainRunWayPoint, - next_train_run_way_point: TrainRunWayPoint, + train_run_way_point: TrainrunWaypoint, + next_train_run_way_point: TrainrunWaypoint, minimum_cell_time: int): scheduled_at = train_run_way_point.scheduled_at position = train_run_way_point.way_point.position @@ -260,11 +260,11 @@ class ControllerFromTrainRuns(): action_plan.append(action) -class ControllerFromTrainRunsReplayer(): +class ControllerFromTrainrunsReplayer(): """Allows to verify a `DeterministicController` by replaying it against a FLATland env without malfunction.""" @staticmethod - def replay_verify(max_episode_steps: int, ctl: ControllerFromTrainRuns, env: RailEnv, rendering: bool): + def replay_verify(max_episode_steps: int, ctl: ControllerFromTrainruns, env: RailEnv, rendering: bool): """Replays this deterministic `ActionPlan` and verifies whether it is feasible.""" if rendering: renderer = RenderTool(env, gl="PILSVG", @@ -277,7 +277,7 @@ class ControllerFromTrainRunsReplayer(): i = 0 while not env.dones['__all__'] and i <= max_episode_steps: for agent_id, agent in enumerate(env.agents): - way_point: WayPoint = ctl.get_way_point_before_or_at_step(agent_id, i) + way_point: Wayoint = ctl.get_way_point_before_or_at_step(agent_id, i) assert agent.position == way_point.position, \ "before {}, agent {} at {}, expected {}".format(i, agent_id, agent.position, way_point.position) diff --git a/flatland/envs/rail_env_shortest_paths.py b/flatland/envs/rail_env_shortest_paths.py index 0423b539..0037fb3c 100644 --- a/flatland/envs/rail_env_shortest_paths.py +++ b/flatland/envs/rail_env_shortest_paths.py @@ -10,7 +10,7 @@ from flatland.core.transition_map import GridTransitionMap from flatland.envs.agent_utils import RailAgentStatus from flatland.envs.distance_map import DistanceMap from flatland.envs.rail_env import RailEnvNextAction, RailEnvActions, RailEnv -from flatland.envs.rail_train_run_data_structures import WayPoint +from flatland.envs.rail_train_run_data_structures import Wayoint from flatland.utils.ordered_set import OrderedSet @@ -201,7 +201,7 @@ def get_action_for_move( # N.B. get_shortest_paths is not part of distance_map since it refers to RailEnvActions (would lead to circularity!) def get_shortest_paths(distance_map: DistanceMap, max_depth: Optional[int] = None, agent_handle: Optional[int] = None) \ - -> Dict[int, Optional[List[WayPoint]]]: + -> Dict[int, Optional[List[Wayoint]]]: """ Computes the shortest path for each agent to its target and the action to be taken to do so. The paths are derived from a `DistanceMap`. @@ -251,7 +251,7 @@ def get_shortest_paths(distance_map: DistanceMap, max_depth: Optional[int] = Non best_next_action = next_action distance = next_action_distance - shortest_paths[agent.handle].append(WayPoint(position, direction)) + shortest_paths[agent.handle].append(Wayoint(position, direction)) depth += 1 # if there is no way to continue, the rail must be disconnected! @@ -263,7 +263,7 @@ def get_shortest_paths(distance_map: DistanceMap, max_depth: Optional[int] = Non position = best_next_action.next_position direction = best_next_action.next_direction if max_depth is None or depth < max_depth: - shortest_paths[agent.handle].append(WayPoint(position, direction)) + shortest_paths[agent.handle].append(Wayoint(position, direction)) if agent_handle is not None: _shortest_path_for_agent(distance_map.agents[agent_handle]) @@ -278,7 +278,7 @@ def get_k_shortest_paths(env: RailEnv, source_position: Tuple[int, int], source_direction: int, target_position=Tuple[int, int], - k: int = 1, debug=False) -> List[Tuple[WayPoint]]: + k: int = 1, debug=False) -> List[Tuple[Wayoint]]: """ Computes the k shortest paths using modified Dijkstra following pseudo-code https://en.wikipedia.org/wiki/K_shortest_path_routing @@ -304,7 +304,7 @@ def get_k_shortest_paths(env: RailEnv, # P: set of shortest paths from s to t # P =empty, - shortest_paths: List[Tuple[WayPoint]] = [] + shortest_paths: List[Tuple[Wayoint]] = [] # countu: number of shortest paths found to node u # countu = 0, for all u in V @@ -312,10 +312,10 @@ def get_k_shortest_paths(env: RailEnv, # B is a heap data structure containing paths # N.B. use OrderedSet to make result deterministic! - heap: OrderedSet[Tuple[WayPoint]] = OrderedSet() + heap: OrderedSet[Tuple[Wayoint]] = OrderedSet() # insert path Ps = {s} into B with cost 0 - heap.add((WayPoint(source_position, source_direction),)) + heap.add((Wayoint(source_position, source_direction),)) # while B is not empty and countt < K: while len(heap) > 0 and len(shortest_paths) < k: @@ -328,7 +328,7 @@ def get_k_shortest_paths(env: RailEnv, if len(path) < cost: pu = path cost = len(path) - u: WayPoint = pu[-1] + u: Wayoint = pu[-1] if debug: print(" looking at pu={}".format(pu)) @@ -360,7 +360,7 @@ def get_k_shortest_paths(env: RailEnv, if debug: print(" looking at neighbor v={}".format((*new_position, new_direction))) - v = WayPoint(position=new_position, direction=new_direction) + v = Wayoint(position=new_position, direction=new_direction) # CAVEAT: do not allow for loopy paths if v in pu: continue diff --git a/flatland/envs/rail_train_run_data_structures.py b/flatland/envs/rail_train_run_data_structures.py index 016862f1..1b253c07 100644 --- a/flatland/envs/rail_train_run_data_structures.py +++ b/flatland/envs/rail_train_run_data_structures.py @@ -6,13 +6,13 @@ from typing import NamedTuple, Tuple, List # This induces a graph on top of the FLATland cells: # - four possible way points per cell # - edges are the possible transitions in the cell. -WayPoint = NamedTuple('WayPoint', [('position', Tuple[int, int]), ('direction', int)]) +Wayoint = NamedTuple('Wayoint', [('position', Tuple[int, int]), ('direction', int)]) # A train run is represented by the waypoints traversed and the times of traversal # The terminology follows https://github.com/crowdAI/train-schedule-optimisation-challenge-starter-kit/blob/master/documentation/output_data_model.md -TrainRunWayPoint = NamedTuple('TrainRunWayPoint', [ +TrainrunWaypoint = NamedTuple('TrainrunWaypoint', [ ('scheduled_at', int), - ('way_point', WayPoint) + ('way_point', Wayoint) ]) # A train run is the list of an agent's way points and their scheduled time -TrainRun = List[TrainRunWayPoint] +Trainrun = List[TrainrunWaypoint] diff --git a/tests/test_action_plan.py b/tests/test_action_plan.py index 2bd175fb..6bccb007 100644 --- a/tests/test_action_plan.py +++ b/tests/test_action_plan.py @@ -1,10 +1,10 @@ -from flatland.action_plan.action_plan import TrainRunWayPoint, ControllerFromTrainRunsReplayer, ActionPlanElement, \ - ControllerFromTrainRuns +from flatland.action_plan.action_plan import TrainrunWaypoint, ControllerFromTrainrunsReplayer, ActionPlanElement, \ + ControllerFromTrainruns from flatland.core.grid.grid4 import Grid4TransitionsEnum from flatland.envs.observations import GlobalObsForRailEnv from flatland.envs.rail_env import RailEnv, RailEnvActions from flatland.envs.rail_generators import rail_from_grid_transition_map -from flatland.envs.rail_train_run_data_structures import WayPoint +from flatland.envs.rail_train_run_data_structures import Wayoint from flatland.envs.schedule_generators import random_schedule_generator from flatland.utils.simple_rail import make_simple_rail @@ -32,25 +32,25 @@ def test_action_plan(rendering: bool = False): for handle, agent in enumerate(env.agents): print("[{}] {} -> {}".format(handle, agent.initial_position, agent.target)) - chosen_path_dict = {0: [TrainRunWayPoint(scheduled_at=0, way_point=WayPoint(position=(3, 0), direction=3)), - TrainRunWayPoint(scheduled_at=2, way_point=WayPoint(position=(3, 1), direction=1)), - TrainRunWayPoint(scheduled_at=3, way_point=WayPoint(position=(3, 2), direction=1)), - TrainRunWayPoint(scheduled_at=14, way_point=WayPoint(position=(3, 3), direction=1)), - TrainRunWayPoint(scheduled_at=15, way_point=WayPoint(position=(3, 4), direction=1)), - TrainRunWayPoint(scheduled_at=16, way_point=WayPoint(position=(3, 5), direction=1)), - TrainRunWayPoint(scheduled_at=17, way_point=WayPoint(position=(3, 6), direction=1)), - TrainRunWayPoint(scheduled_at=18, way_point=WayPoint(position=(3, 7), direction=1)), - TrainRunWayPoint(scheduled_at=19, way_point=WayPoint(position=(3, 8), direction=1)), - TrainRunWayPoint(scheduled_at=20, way_point=WayPoint(position=(3, 8), direction=5))], - 1: [TrainRunWayPoint(scheduled_at=0, way_point=WayPoint(position=(3, 8), direction=3)), - TrainRunWayPoint(scheduled_at=3, way_point=WayPoint(position=(3, 7), direction=3)), - TrainRunWayPoint(scheduled_at=5, way_point=WayPoint(position=(3, 6), direction=3)), - TrainRunWayPoint(scheduled_at=7, way_point=WayPoint(position=(3, 5), direction=3)), - TrainRunWayPoint(scheduled_at=9, way_point=WayPoint(position=(3, 4), direction=3)), - TrainRunWayPoint(scheduled_at=11, way_point=WayPoint(position=(3, 3), direction=3)), - TrainRunWayPoint(scheduled_at=13, way_point=WayPoint(position=(2, 3), direction=0)), - TrainRunWayPoint(scheduled_at=15, way_point=WayPoint(position=(1, 3), direction=0)), - TrainRunWayPoint(scheduled_at=17, way_point=WayPoint(position=(0, 3), direction=0))]} + chosen_path_dict = {0: [TrainrunWaypoint(scheduled_at=0, way_point=Wayoint(position=(3, 0), direction=3)), + TrainrunWaypoint(scheduled_at=2, way_point=Wayoint(position=(3, 1), direction=1)), + TrainrunWaypoint(scheduled_at=3, way_point=Wayoint(position=(3, 2), direction=1)), + TrainrunWaypoint(scheduled_at=14, way_point=Wayoint(position=(3, 3), direction=1)), + TrainrunWaypoint(scheduled_at=15, way_point=Wayoint(position=(3, 4), direction=1)), + TrainrunWaypoint(scheduled_at=16, way_point=Wayoint(position=(3, 5), direction=1)), + TrainrunWaypoint(scheduled_at=17, way_point=Wayoint(position=(3, 6), direction=1)), + TrainrunWaypoint(scheduled_at=18, way_point=Wayoint(position=(3, 7), direction=1)), + TrainrunWaypoint(scheduled_at=19, way_point=Wayoint(position=(3, 8), direction=1)), + TrainrunWaypoint(scheduled_at=20, way_point=Wayoint(position=(3, 8), direction=5))], + 1: [TrainrunWaypoint(scheduled_at=0, way_point=Wayoint(position=(3, 8), direction=3)), + TrainrunWaypoint(scheduled_at=3, way_point=Wayoint(position=(3, 7), direction=3)), + TrainrunWaypoint(scheduled_at=5, way_point=Wayoint(position=(3, 6), direction=3)), + TrainrunWaypoint(scheduled_at=7, way_point=Wayoint(position=(3, 5), direction=3)), + TrainrunWaypoint(scheduled_at=9, way_point=Wayoint(position=(3, 4), direction=3)), + TrainrunWaypoint(scheduled_at=11, way_point=Wayoint(position=(3, 3), direction=3)), + TrainrunWaypoint(scheduled_at=13, way_point=Wayoint(position=(2, 3), direction=0)), + TrainrunWaypoint(scheduled_at=15, way_point=Wayoint(position=(1, 3), direction=0)), + TrainrunWaypoint(scheduled_at=17, way_point=Wayoint(position=(0, 3), direction=0))]} expected_action_plan = [[ # take action to enter the grid ActionPlanElement(0, RailEnvActions.MOVE_FORWARD), @@ -82,7 +82,7 @@ def test_action_plan(rendering: bool = False): MAX_EPISODE_STEPS = 50 - deterministic_controller = ControllerFromTrainRuns(env, chosen_path_dict) + deterministic_controller = ControllerFromTrainruns(env, chosen_path_dict) deterministic_controller.print_action_plan() - ControllerFromTrainRuns.assert_actions_plans_equal(expected_action_plan, deterministic_controller.action_plan) - ControllerFromTrainRunsReplayer.replay_verify(MAX_EPISODE_STEPS, deterministic_controller, env, rendering) + ControllerFromTrainruns.assert_actions_plans_equal(expected_action_plan, deterministic_controller.action_plan) + ControllerFromTrainrunsReplayer.replay_verify(MAX_EPISODE_STEPS, deterministic_controller, env, rendering) diff --git a/tests/test_flatland_envs_predictions.py b/tests/test_flatland_envs_predictions.py index 5b8c385e..941575e0 100644 --- a/tests/test_flatland_envs_predictions.py +++ b/tests/test_flatland_envs_predictions.py @@ -11,7 +11,7 @@ from flatland.envs.predictions import DummyPredictorForRailEnv, ShortestPathPred from flatland.envs.rail_env import RailEnv, RailEnvActions from flatland.envs.rail_env_shortest_paths import get_shortest_paths from flatland.envs.rail_generators import rail_from_grid_transition_map -from flatland.envs.rail_train_run_data_structures import WayPoint +from flatland.envs.rail_train_run_data_structures import Wayoint from flatland.envs.schedule_generators import random_schedule_generator from flatland.utils.rendertools import RenderTool from flatland.utils.simple_rail import make_simple_rail, make_simple_rail2, make_invalid_simple_rail @@ -147,12 +147,12 @@ def test_shortest_path_predictor(rendering=False): paths = get_shortest_paths(env.distance_map)[0] assert paths == [ - WayPoint((5, 6), 0), - WayPoint((4, 6), 0), - WayPoint((3, 6), 0), - WayPoint((3, 7), 1), - WayPoint((3, 8), 1), - WayPoint((3, 9), 1) + Wayoint((5, 6), 0), + Wayoint((4, 6), 0), + Wayoint((3, 6), 0), + Wayoint((3, 7), 1), + Wayoint((3, 8), 1), + Wayoint((3, 9), 1) ] # extract the data diff --git a/tests/test_flatland_envs_rail_env_shortest_paths.py b/tests/test_flatland_envs_rail_env_shortest_paths.py index ffd26cfb..9313d959 100644 --- a/tests/test_flatland_envs_rail_env_shortest_paths.py +++ b/tests/test_flatland_envs_rail_env_shortest_paths.py @@ -8,7 +8,7 @@ from flatland.envs.rail_env import RailEnv from flatland.envs.rail_env_shortest_paths import get_shortest_paths, get_k_shortest_paths from flatland.envs.rail_env_utils import load_flatland_environment_from_file from flatland.envs.rail_generators import rail_from_grid_transition_map -from flatland.envs.rail_train_run_data_structures import WayPoint +from flatland.envs.rail_train_run_data_structures import Wayoint from flatland.envs.schedule_generators import random_schedule_generator from flatland.utils.rendertools import RenderTool from flatland.utils.simple_rail import make_disconnected_simple_rail, make_simple_rail_with_alternatives @@ -47,45 +47,45 @@ def test_get_shortest_paths(): expected = { 0: [ - WayPoint(position=(1, 1), direction=1), - WayPoint(position=(1, 2), direction=1), - WayPoint(position=(1, 3), direction=1), - WayPoint(position=(2, 3), direction=2), - WayPoint(position=(2, 4), direction=1), - WayPoint(position=(2, 5), direction=1), - WayPoint(position=(2, 6), direction=1), - WayPoint(position=(2, 7), direction=1), - WayPoint(position=(2, 8), direction=1), - WayPoint(position=(2, 9), direction=1), - WayPoint(position=(2, 10), direction=1), - WayPoint(position=(2, 11), direction=1), - WayPoint(position=(2, 12), direction=1), - WayPoint(position=(2, 13), direction=1), - WayPoint(position=(2, 14), direction=1), - WayPoint(position=(2, 15), direction=1), - WayPoint(position=(2, 16), direction=1), - WayPoint(position=(2, 17), direction=1), - WayPoint(position=(2, 18), direction=1)], + Wayoint(position=(1, 1), direction=1), + Wayoint(position=(1, 2), direction=1), + Wayoint(position=(1, 3), direction=1), + Wayoint(position=(2, 3), direction=2), + Wayoint(position=(2, 4), direction=1), + Wayoint(position=(2, 5), direction=1), + Wayoint(position=(2, 6), direction=1), + Wayoint(position=(2, 7), direction=1), + Wayoint(position=(2, 8), direction=1), + Wayoint(position=(2, 9), direction=1), + Wayoint(position=(2, 10), direction=1), + Wayoint(position=(2, 11), direction=1), + Wayoint(position=(2, 12), direction=1), + Wayoint(position=(2, 13), direction=1), + Wayoint(position=(2, 14), direction=1), + Wayoint(position=(2, 15), direction=1), + Wayoint(position=(2, 16), direction=1), + Wayoint(position=(2, 17), direction=1), + Wayoint(position=(2, 18), direction=1)], 1: [ - WayPoint(position=(3, 18), direction=3), - WayPoint(position=(3, 17), direction=3), - WayPoint(position=(3, 16), direction=3), - WayPoint(position=(2, 16), direction=0), - WayPoint(position=(2, 15), direction=3), - WayPoint(position=(2, 14), direction=3), - WayPoint(position=(2, 13), direction=3), - WayPoint(position=(2, 12), direction=3), - WayPoint(position=(2, 11), direction=3), - WayPoint(position=(2, 10), direction=3), - WayPoint(position=(2, 9), direction=3), - WayPoint(position=(2, 8), direction=3), - WayPoint(position=(2, 7), direction=3), - WayPoint(position=(2, 6), direction=3), - WayPoint(position=(2, 5), direction=3), - WayPoint(position=(2, 4), direction=3), - WayPoint(position=(2, 3), direction=3), - WayPoint(position=(2, 2), direction=3), - WayPoint(position=(2, 1), direction=3)] + Wayoint(position=(3, 18), direction=3), + Wayoint(position=(3, 17), direction=3), + Wayoint(position=(3, 16), direction=3), + Wayoint(position=(2, 16), direction=0), + Wayoint(position=(2, 15), direction=3), + Wayoint(position=(2, 14), direction=3), + Wayoint(position=(2, 13), direction=3), + Wayoint(position=(2, 12), direction=3), + Wayoint(position=(2, 11), direction=3), + Wayoint(position=(2, 10), direction=3), + Wayoint(position=(2, 9), direction=3), + Wayoint(position=(2, 8), direction=3), + Wayoint(position=(2, 7), direction=3), + Wayoint(position=(2, 6), direction=3), + Wayoint(position=(2, 5), direction=3), + Wayoint(position=(2, 4), direction=3), + Wayoint(position=(2, 3), direction=3), + Wayoint(position=(2, 2), direction=3), + Wayoint(position=(2, 1), direction=3)] } for agent_handle in expected: @@ -102,12 +102,12 @@ def test_get_shortest_paths_max_depth(): expected = { 0: [ - WayPoint(position=(1, 1), direction=1), - WayPoint(position=(1, 2), direction=1) + Wayoint(position=(1, 1), direction=1), + Wayoint(position=(1, 2), direction=1) ], 1: [ - WayPoint(position=(3, 18), direction=3), - WayPoint(position=(3, 17), direction=3), + Wayoint(position=(3, 18), direction=3), + Wayoint(position=(3, 17), direction=3), ] } @@ -126,78 +126,78 @@ def test_get_shortest_paths_agent_handle(): print(actual, file=sys.stderr) expected = {6: - [WayPoint(position=(5, 5), + [Wayoint(position=(5, 5), direction=0), - WayPoint(position=(4, 5), + Wayoint(position=(4, 5), direction=0), - WayPoint(position=(3, 5), + Wayoint(position=(3, 5), direction=0), - WayPoint(position=(2, 5), + Wayoint(position=(2, 5), direction=0), - WayPoint(position=(1, 5), + Wayoint(position=(1, 5), direction=0), - WayPoint(position=(0, 5), + Wayoint(position=(0, 5), direction=0), - WayPoint(position=(0, 6), + Wayoint(position=(0, 6), direction=1), - WayPoint(position=(0, 7), direction=1), - WayPoint(position=(0, 8), + Wayoint(position=(0, 7), direction=1), + Wayoint(position=(0, 8), direction=1), - WayPoint(position=(0, 9), + Wayoint(position=(0, 9), direction=1), - WayPoint(position=(0, 10), + Wayoint(position=(0, 10), direction=1), - WayPoint(position=(1, 10), + Wayoint(position=(1, 10), direction=2), - WayPoint(position=(2, 10), + Wayoint(position=(2, 10), direction=2), - WayPoint(position=(3, 10), + Wayoint(position=(3, 10), direction=2), - WayPoint(position=(4, 10), + Wayoint(position=(4, 10), direction=2), - WayPoint(position=(5, 10), + Wayoint(position=(5, 10), direction=2), - WayPoint(position=(6, 10), + Wayoint(position=(6, 10), direction=2), - WayPoint(position=(7, 10), + Wayoint(position=(7, 10), direction=2), - WayPoint(position=(8, 10), + Wayoint(position=(8, 10), direction=2), - WayPoint(position=(9, 10), + Wayoint(position=(9, 10), direction=2), - WayPoint(position=(10, 10), + Wayoint(position=(10, 10), direction=2), - WayPoint(position=(11, 10), + Wayoint(position=(11, 10), direction=2), - WayPoint(position=(12, 10), + Wayoint(position=(12, 10), direction=2), - WayPoint(position=(13, 10), + Wayoint(position=(13, 10), direction=2), - WayPoint(position=(14, 10), + Wayoint(position=(14, 10), direction=2), - WayPoint(position=(15, 10), + Wayoint(position=(15, 10), direction=2), - WayPoint(position=(16, 10), + Wayoint(position=(16, 10), direction=2), - WayPoint(position=(17, 10), + Wayoint(position=(17, 10), direction=2), - WayPoint(position=(18, 10), + Wayoint(position=(18, 10), direction=2), - WayPoint(position=(19, 10), + Wayoint(position=(19, 10), direction=2), - WayPoint(position=(20, 10), + Wayoint(position=(20, 10), direction=2), - WayPoint(position=(20, 9), + Wayoint(position=(20, 9), direction=3), - WayPoint(position=(20, 8), + Wayoint(position=(20, 8), direction=3), - WayPoint(position=(21, 8), + Wayoint(position=(21, 8), direction=2), - WayPoint(position=(21, 7), + Wayoint(position=(21, 7), direction=3), - WayPoint(position=(21, 6), + Wayoint(position=(21, 6), direction=3), - WayPoint(position=(21, 5), + Wayoint(position=(21, 5), direction=3) ]} @@ -246,41 +246,41 @@ def test_get_k_shortest_paths(rendering=False): expected = set([ ( - WayPoint(position=(3, 1), direction=3), - WayPoint(position=(3, 0), direction=3), - WayPoint(position=(3, 1), direction=1), - WayPoint(position=(3, 2), direction=1), - WayPoint(position=(3, 3), direction=1), - WayPoint(position=(2, 3), direction=0), - WayPoint(position=(1, 3), direction=0), - WayPoint(position=(0, 3), direction=0), - WayPoint(position=(0, 4), direction=1), - WayPoint(position=(0, 5), direction=1), - WayPoint(position=(0, 6), direction=1), - WayPoint(position=(0, 7), direction=1), - WayPoint(position=(0, 8), direction=1), - WayPoint(position=(0, 9), direction=1), - WayPoint(position=(1, 9), direction=2), - WayPoint(position=(2, 9), direction=2), - WayPoint(position=(3, 9), direction=2)), + Wayoint(position=(3, 1), direction=3), + Wayoint(position=(3, 0), direction=3), + Wayoint(position=(3, 1), direction=1), + Wayoint(position=(3, 2), direction=1), + Wayoint(position=(3, 3), direction=1), + Wayoint(position=(2, 3), direction=0), + Wayoint(position=(1, 3), direction=0), + Wayoint(position=(0, 3), direction=0), + Wayoint(position=(0, 4), direction=1), + Wayoint(position=(0, 5), direction=1), + Wayoint(position=(0, 6), direction=1), + Wayoint(position=(0, 7), direction=1), + Wayoint(position=(0, 8), direction=1), + Wayoint(position=(0, 9), direction=1), + Wayoint(position=(1, 9), direction=2), + Wayoint(position=(2, 9), direction=2), + Wayoint(position=(3, 9), direction=2)), ( - WayPoint(position=(3, 1), direction=3), - WayPoint(position=(3, 0), direction=3), - WayPoint(position=(3, 1), direction=1), - WayPoint(position=(3, 2), direction=1), - WayPoint(position=(3, 3), direction=1), - WayPoint(position=(3, 4), direction=1), - WayPoint(position=(3, 5), direction=1), - WayPoint(position=(3, 6), direction=1), - WayPoint(position=(4, 6), direction=2), - WayPoint(position=(5, 6), direction=2), - WayPoint(position=(6, 6), direction=2), - WayPoint(position=(5, 6), direction=0), - WayPoint(position=(4, 6), direction=0), - WayPoint(position=(4, 7), direction=1), - WayPoint(position=(4, 8), direction=1), - WayPoint(position=(4, 9), direction=1), - WayPoint(position=(3, 9), direction=0)) + Wayoint(position=(3, 1), direction=3), + Wayoint(position=(3, 0), direction=3), + Wayoint(position=(3, 1), direction=1), + Wayoint(position=(3, 2), direction=1), + Wayoint(position=(3, 3), direction=1), + Wayoint(position=(3, 4), direction=1), + Wayoint(position=(3, 5), direction=1), + Wayoint(position=(3, 6), direction=1), + Wayoint(position=(4, 6), direction=2), + Wayoint(position=(5, 6), direction=2), + Wayoint(position=(6, 6), direction=2), + Wayoint(position=(5, 6), direction=0), + Wayoint(position=(4, 6), direction=0), + Wayoint(position=(4, 7), direction=1), + Wayoint(position=(4, 8), direction=1), + Wayoint(position=(4, 9), direction=1), + Wayoint(position=(3, 9), direction=0)) ]) assert actual == expected, "actual={},expected={}".format(actual, expected) -- GitLab