问题描述
为了激发我的问题,考虑一个网格世界,它有一个可以推动石头的可移动代理。到现在为止还挺好。我们可能有一个看起来像这样的推送操作(从推箱子 pddl 借来):
(:action push
:parameters (?p - thing ?s - thing ?ppos - location ?from - location ?to - location ?dir - direction)
:precondition (and (move ?dir)
(is-player ?p)
(is-stone ?s)
(at ?p ?ppos)
(at ?s ?from)
(clear ?to)
(move-dir ?ppos ?from ?dir)
(move-dir ?from ?to ?dir)
(is-nongoal ?to))
:effect (and
(not (at ?p ?ppos))
(not (at ?s ?from))
(not (clear ?to))
(at ?p ?from)
(at ?s ?to)
(clear ?ppos)
(not (at-goal ?s)))
)
现在假设我们要允许代理推动一块石头,即使它后面有任意数量块石头。效果是所有这些石头都会在推动方向上移动 1 个位置(前提是它们不会从网格上掉下来或占据与墙壁相同的位置)。
你会如何建模?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)