2

嗨,我正在尝试使用 Golog 建立一个搜索计划,我已经写出了必要的原始操作,但我坚持弥合在 golog 中编写复杂操作的差距。

例如,我希望能够写出代理人必须做出的一系列动作。

目前我正在对这些动作进行硬编码,如下所示:

proc(goToLoc(dest),
   go(start,next1) :
   go(next1,next2) :
   go(next2,dest)
).

作为设计师,我知道这些动作是有效的,因此do(goToLoc(dest),s0,S)会通过。我想要做的是重写这个复杂的动作以能够接受任何变量,我已经尝试过,我认为它需要以某种方式递归,但我坚持如何从递归调用中分配值?

proc(goToLoc(L),
   if(some(a, location(a) & -(a=L)),
      pi(a, ?(location(a) & -(a=L) : go(a, L)) : goToLoc(a)),
      ?(true)
   )
).

我可能会走得很远,但是当我递归调用proc时状态似乎没有改变,而且我什至不确定我是否提供了足够的信息......因为我有一堆公理用于建立start next1...之间的关系,dest但本质上我只是在寻找一些关于如何在 Golog 中表示一系列动作的概念。

4

0 回答 0