@@ -68,9 +68,6 @@ def plan(grid: Grid, start_and_goals: list[StartAndGoal], single_agent_planner_c
6868
6969 # TODO: contents of this loop should probably be in a helper?
7070 for constrained_agent in constraint_tree_node .constraint .constrained_agents :
71- num_expansions = constraint_tree .expanded_node_count ()
72- if num_expansions % 50 == 0 :
73- print (f"Expanded { num_expansions } nodes so far..." )
7471 if verbose :
7572 print (f"\n Outer loop step for agent { constrained_agent } " )
7673
@@ -80,6 +77,11 @@ def plan(grid: Grid, start_and_goals: list[StartAndGoal], single_agent_planner_c
8077 all_constraints = deepcopy (ancestor_constraints ) # TODO - no deepcopy pls
8178 all_constraints .append (applied_constraint )
8279
80+ num_expansions = constraint_tree .expanded_node_count ()
81+ if num_expansions % 50 == 0 :
82+ print (f"Expanded { num_expansions } nodes so far..." )
83+ print (f"\t len of constraints { len (all_constraints )} " )
84+
8385 # Skip if we have already tried this set of constraints
8486 constraint_hash = hash (frozenset (all_constraints ))
8587 if constraint_hash in attempted_constraint_combos :
@@ -143,14 +145,26 @@ def find_by_index(start_and_goal_list: list[StartAndGoal], target_index: AgentId
143145# * SIPP stinks at 3 robots in the hallway case
144146verbose = False
145147show_animation = True
148+ np .random .seed (42 ) # For reproducibility
146149def main ():
147150 grid_side_length = 21
148151
149152 # TODO: bug somewhere where it expects agent ids to match indices
150153 # start_and_goals = [StartAndGoal(i, Position(1, i), Position(19, 19-i)) for i in range(1, 12)]
151- start_and_goals = [StartAndGoal (i , Position (1 , 8 + i ), Position (19 , 19 - i )) for i in range (6 )]
154+ # start_and_goals = [StartAndGoal(i, Position(1, 8+i), Position(19, 19-i)) for i in range(6)]
152155 # start_and_goals = [StartAndGoal(i, Position(1, 2*i), Position(19, 19-i)) for i in range(4)]
153156
157+ # generate random start and goals
158+ start_and_goals : list [StartAndGoal ] = []
159+ for i in range (40 ):
160+ start = Position (np .random .randint (0 , grid_side_length ), np .random .randint (0 , grid_side_length ))
161+ goal = Position (np .random .randint (0 , grid_side_length ), np .random .randint (0 , grid_side_length ))
162+ while any ([start_and_goal .start == start for start_and_goal in start_and_goals ]):
163+ start = Position (np .random .randint (0 , grid_side_length ), np .random .randint (0 , grid_side_length ))
164+ goal = Position (np .random .randint (0 , grid_side_length ), np .random .randint (0 , grid_side_length ))
165+
166+ start_and_goals .append (StartAndGoal (i , start , goal ))
167+
154168 # hallway cross
155169 # start_and_goals = [StartAndGoal(0, Position(6, 10), Position(13, 10)),
156170 # StartAndGoal(1, Position(11, 10), Position(6, 10)),
@@ -169,14 +183,15 @@ def main():
169183 obstacle_avoid_points = obstacle_avoid_points ,
170184 # obstacle_arrangement=ObstacleArrangement.TEMPORARY_OBSTACLE,
171185 # obstacle_arrangement=ObstacleArrangement.HALLWAY,
172- obstacle_arrangement = ObstacleArrangement .NARROW_CORRIDOR ,
186+ # obstacle_arrangement=ObstacleArrangement.NARROW_CORRIDOR,
187+ obstacle_arrangement = ObstacleArrangement .NONE ,
173188 # obstacle_arrangement=ObstacleArrangement.ARRANGEMENT1,
174189 # obstacle_arrangement=ObstacleArrangement.RANDOM,
175190 )
176191
177192 start_time = time .time ()
178- # start_and_goals, paths = ConflictBasedSearch.plan(grid, start_and_goals, SafeIntervalPathPlanner, verbose)
179- start_and_goals , paths = ConflictBasedSearch .plan (grid , start_and_goals , SpaceTimeAStar , verbose )
193+ start_and_goals , paths = ConflictBasedSearch .plan (grid , start_and_goals , SafeIntervalPathPlanner , verbose )
194+ # start_and_goals, paths = ConflictBasedSearch.plan(grid, start_and_goals, SpaceTimeAStar, verbose)
180195
181196 runtime = time .time () - start_time
182197 print (f"\n Planning took: { runtime :.5f} seconds" )
0 commit comments