示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)