我目前正在做一个pddl项目,我在语法方面有一些困难。现在,我正试着让电梯里所有的工人都在一层楼里。我不确定这是否是正确的实现,但以下是我的代码。提前谢谢你!
(define (domain company)
(:requirements
:strips
:negative-preconditions
:equality
)
(:predicates
(worker ?x)
(floor ?x)
(elevator ?x)
(controller ?x)
(goes ?x )
(at ?x ?y)
(in ?x ?y)
(free ?x)
(call ?x ?y)
)
****
(:action insert_elevator
:parameters (?w ?el ?f)
:precondition (and (worker ?w) (floor ?f) (elevator ?el) (at ?w ?f) (at ?el ?f) (free ?el))
:effect (and(not (free ?el))(forall (?w)(in ?w ?el)))
)
****
)
(define (problem pb)
(:domain company)
(:objects floorg floor1 floor2
elevator1
elevator2
worker1 worker2
controller1)
(:init
(floor floorg)
(floor floor1)
(floor floor2)
(worker worker1)
(worker worker2)
(elevator elevator1)
(elevator elevator2)
(controller controller1)
(at elevator1 floor1)
(at elevator2 floor2)
(at worker1 floorg)
(at worker2 floorg)
(free elevator1)
(free elevator2)
)
(:goal
(and(at worker1 floor1)
(at worker2 floor2))
)
)发布于 2020-05-14 08:03:17
显然,你在here too...the上发布了仍然有效的评论:
insert_elevator操作有点混乱:forall可能需要包含一个条件效果,该效果建议“如果一个工人在场上,那么他们在elevator".中的forall子句中使用相同的变量
https://stackoverflow.com/questions/61786747
复制相似问题