-2

这段代码有问题。运行规划器时我们没有得到解决方案。我们不知道问题是什么。调试控制台上没有错误。

域.PDDL

(define (domain pacientes4)

(:requirements :typing :negative-preconditions)

(:types paciente localizacion)


(:predicates 
    (vacia-ambulancia)
    (llena-ambulancia)
    (ambulancia ?l - localizacion)
    (ubicacion ?p - paciente ?l - localizacion)
    (hospital ?l - localizacion)
    (hospitalp ?p - paciente)
    (adjacent ?l1 - localizacion  ?l2 - localizacion)
)


(:action mover
    :parameters (?x - localizacion ?y - localizacion ?p - paciente)
    :precondition 
       ( and (ambulancia ?x) 
             (adjacent ?x ?y)
             (not (hospitalp ?p)) )
    :effect
     (and (not (ambulancia ?x))   
          (ambulancia ?y))

)


(:action subir
    :parameters (?p - paciente ?l - localizacion)
    :precondition 
        (and (vacia-ambulancia)
             (ambulancia ?l) 
             (ubicacion ?p ?l))
    :effect 
       (and (not (vacia-ambulancia))  
            (not (ambulancia ?l))  
            (not (ubicacion ?p ?l))
            (llena-ambulancia)) 
)


(:action bajar
    :parameters (?p - paciente  ?l - localizacion)
    :precondition 
         (and (llena-ambulancia) 
              (ambulancia ?l)
              (not (hospitalp ?p) ))    
         
    :effect 
        (and  (vacia-ambulancia) 
              (not (llena-ambulancia)) 
              (ubicacion ?p ?l) 
              (hospitalp ?p) 
              (hospital ?l) )
)
)

问题是:

(define (problem Trasladopacientes) 
(:domain pacientes4)
(:objects  p1  p2 - paciente    l1  l2  l3  l4 - localizacion)

(:init  
        (hospital l1)  
        (ambulancia l1) 
        (not(llena-ambulancia))
        (vacia-ambulancia)
        (ubicacion p1 l3)  (ubicacion p2 l4)
        (not(hospitalp p1))  (not(hospitalp p2))
        (adjacent l1 l2)  (adjacent l2 l1)
        (adjacent l2 l4)  (adjacent l4 l2)
        (adjacent l3 l4)  (adjacent l4 l3)
)

(:goal 
   (and (ubicacion p1 l1)  (ubicacion p2 l1)
        (vacia-ambulancia)  
        (ambulancia l1)
        (hospitalp p1)   (hospitalp p2)  (hospital l1))
)


)
4

1 回答 1

1

在http://editor.planning.domains上测试,它说目标状态不可到达。也许它可能是因为您的操作的效果subir使ambulancia语句消失((not (ambulancia ?l)))。一旦救护车消失,您就无法再移动人们了。

于 2021-10-19T14:35:27.063 回答