PDDL forall语法

问题描述 投票:0回答:1

我目前正在处理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))
   )
 )
syntax pddl
1个回答
0
投票

所以您显然也张贴在here上...这些评论仍然有效:

  • 您可以使用editor.planning.domains和保存的“会话”来更好地共享您的代码。 (使用只读链接)
  • 您确实应该为这样的域使用类型。
  • insert_elevator操作有点混乱:
    • forall可能需要包含一个条件效应,表明“如果一个工人在地板上,那么他们在电梯里”。
    • 您不应该在forall子句中使用与参数中相同的变量。]​​>
© www.soinside.com 2019 - 2024. All rights reserved.