def test_dijkstras_algo(): SIZE = 25 maze = random_maze(0.5, OneDimensionalLocalizer(SIZE, 5)) #print(maze) render_graph(maze, "temp/dijkstras_maze") distances = dijkstra(maze, 0, SIZE) print("test_dijkstras_algo calculated distance to end as %i" % distances[SIZE]) assert (len(distances) == SIZE + 1)
def test_rat_chat(): maze = MultiRatMaze(random_maze(0.5, OneDimensionalLocalizer(25, 5)), False) render_graph(maze.maze(), "temp/rat_chat") rats = [(TestChatRat(0), 2), (TestChatRat(1), 3), (TestChatRat(2), 4)] MAX_ITER = 1000 iter = maze.solve(rats, MAX_ITER, False, RatChatMazeInfo()) print("test_paired_rats solved in %i iterations" % iter) assert (iter > 0 and iter < MAX_ITER)
def test_random_1d_multimaze(): maze = MultiRatMaze(random_maze(0.5, OneDimensionalLocalizer(25, 5)), False) render_graph(maze.maze(), "temp/random_1d_multimaze") rat = RandomRat() rats = [(rat, 2), (rat, 3)] MAX_ITER = 1000 iter = maze.solve(rats, MAX_ITER) print("test_random_1d_multimaze solved in %i iterations" % iter) assert (iter > 0 and iter < MAX_ITER)
def test_paired_rats_1(): # This maze fails if the rat position is set only just before the rat moves. # This leads to the two rats going in different directions because the second # rat reverses at a different place from the first. maze = MultiRatMaze([[3, 2], [2, 3], [5, 0, 1, 3, 4], [0, 2, 1, 6], [5, 2], [2, 4]], False) render_graph(maze.maze(), "temp/paired1") MAX_ITER = 100 rats = [(PairedAlwaysLeftRat(0), 2), (PairedAlwaysLeftRat(1), 3)] iter = maze.solve(rats, MAX_ITER, False, PairedRatMazeInfo()) print("test_paired_rats_1 solved in %i iterations" % iter) assert(iter > 0 and iter < MAX_ITER)
def test_paired_rats_5(): # This maze fails for relative speeds 1 and 2 because there are # interlocking loops, and the rats settle into a repeating ping-pong # between them. maze = MultiRatMaze([[1, 2, 3], [4, 0, 2], [1, 4, 3, 0], [5, 0, 2, 4], [5, 3, 1, 6, 2], [4, 3]], False) render_graph(maze.maze(), "temp/paired5") MAX_ITER = 150 rats = [(PairedAlwaysLeftRat(0), 1), (PairedAlwaysLeftRat(1), 2)] iter = maze.solve(rats, MAX_ITER, False, PairedRatMazeInfo()) print("test_paired_rats_5 failed to solve after %i iterations" % iter) assert(iter == MAX_ITER + 1)
def test_tremaux_rat(): SIZE = 25 maze = SimpleMaze(random_maze(0.5, OneDimensionalLocalizer(SIZE, 3)), False) #print(maze) render_graph(maze.maze(), "temp/tremaux_maze") rat = TremauxRat() info = TremauxMazeInfo() MAX_ITER = 100 iter = maze.solve(rat, MAX_ITER, info) print("test_tremaux_rat solved in %i iterations" % iter) assert (iter > 0 and iter < MAX_ITER)
def test_dijkstras_rat(): SIZE = 6 maze = SimpleMaze(random_maze(0.5, OneDimensionalLocalizer(SIZE, 3)), False) #print(maze) render_graph(maze.maze(), "temp/dijkstras_maze") rat = DijkstrasRat(SIZE) info = DijkstrasMazeInfo(maze.maze()) MAX_ITER = 30 iter = maze.solve(rat, MAX_ITER, info) print("test_dijkstras_rat solved in %i iterations" % iter) print(" distance from start to end is %i" % rat.distance_to_end()) assert(iter > 0 and iter < MAX_ITER)