0

我正在尝试为在 4x4 网格中移动(北、南、西、东)的代理制定一个后继状态公理。网格在 1,1 和 2,2 处有两个障碍物,agent 的初始位置是 3,3。特工应该在没有碰到任何障碍物的情况下到达位置 1,2 的传送门。这是代码:

obstacle(1,1).
obstacle(2,3).
teleportal(1,3).
agent(3,3,s0).
agent(X, Y, result(A,S)):-
   (  agent(X,Y,S), 
      (  A = north, (X=0; (obstacle(X2,Y), X2 is X-1)))
      ;
        (A = south, (X=3; (obstacle(X2,Y), X2 is X+1)));
        (A = west, (Y=0; (obstacle(X,Y2), Y2 is Y-1)));
        (A = east, (Y=3; (obstacle(X,Y2), Y2 is Y+1)))) 
        ;
        (agent(X2, Y, S), A = north, X > 0, X2 is X-1);
        (agent(X2, Y, S), A = south, X < 3, X2 is X+1);
        (agent(X, Y2, S), A = west, Y > 0, Y2 is Y-1);
        (agent(X, Y2, S), A = east, Y < 3, Y2 is Y+1).

escaped(S):- agent(X,Y,S), teleportal(X,Y).

当我运行 escape(S) 时,它给出了以下错误: Out of local stack

4

0 回答 0