Как устранить ошибку «Необъявленный предикат: <» в файле домена pddl? - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь решить простую проблему pddl, используя Fast Downward Planner. Всякий раз, когда я использую числовые выражения, такие как >, <, >=, decrease и т. П., Возникает следующая ошибка:

Undeclared predicate: < 

файл проблемы:

(define (problem prob-gift)
  (:domain gift)
  (:objects
   chocolate hairband hairclip gift

  )
  (:init

     (=(amount_c chocolate)5)
     (=(amount_hb hairband)5)
     (=(amount_hr hairclip)5)

     (=(made gift)0)


  )
  (:goal
    (and
    (=(made gift)5)
    )
  )
)

файл домена:

(define (domain gift) 

(:types chocolate hairband hairclip gift )

(:predicates      
  )
(:functions
   (made ?x ) 
         (amount_hb ?y ) 
         (amount_hr ?z ) 
         (amount_c ?a ) 

)



(:action make
     :parameters (?x ?y  ?z ?a)
     :precondition (and 
     (<(made ?x)5)
         (>=(amount_hb ?y)1)
         (>=(amount_hr ?z)1)
         (>=(amount_c ?a)1)


     )
     :effect (and
          (increase(made ?x)1)
                  (decrease(amount_hb ?y)1)
                  (decrease(amount_hr ?z)1)
                  (decrease(amount_c ?a)1)

           ))

)

Вывод:

Parsing...
Undeclared predicate: <

translate exit code: 30

Driver aborting after translate

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

К сожалению, версия popf, которую я упаковал в https://gitlab.com/graphs4IB/ai-planning, не так подкована ADL и задыхается от типичной

Constructing lookup tables:
Post filtering unreachable actions: 
A problem has been encountered, and the planner has to terminate.
-----------------------------------------------------------------
Unfortunately, at present, the planner does not fully support ADL
unless in the rules for derived predicates.  Only two aspects of
ADL can be used in action definitions:
- forall conditions, containing a simple conjunct of propositional and
  numeric facts;
- Conditional (when... ) effects, and then only with numeric conditions
  and numeric consequences on values which do not appear in the
  preconditions of actions.

To use this planner with your problem, you will have to reformulate it to
avoid ADL.  Alternatively, if you have a particularly compelling case
for them, please contact the authors to discuss it with them, who may be able to
extend the planner to meet your needs.

Я получаю эту версию popf от https://github.com/LCAS/popf.git, в отличие от сообщения, опубликованного на Sourceforge со значительными различиями в коде.

Вы можете быстро проверить это на сеансе Яна , установив URL этого пользовательского планировщика:https://young -spire-39208.herokuapp.com

В качестве альтернативы, вы также можете запустить образ Docker локально, предполагая, что ваши domain.pddl и problem.pddl находятся в текущем каталоге:

docker run --rm -v $PWD:/tmp registry.gitlab.com/graphs4ib/ai-planning:latest popf /tmp/domain.pddl /tmp/problem.pddl
1 голос
/ 08 ноября 2019

Jonaki, я думаю, что есть проблема с использованием типов в вашей модели PDDL. Кроме того, как правило, когда планировщик по вашему выбору не принимает вашу модель (или не может решить вашу проблему), вы должны сократить ее и пересоздать из самой простой версии, в то же время непрерывно проверяя ее на планировщике. Таким образом, вы бы точно увидели, что его оскорбляет. Иногда напечатанное сообщение не является репрезентативным.

Вы используете числовые жидкости , и поэтому вы должны включить (:requirements :fluents) в свой domain. Планировщик, который не поддерживает :fluents, захлебнется операциями <, = или decrease.

Кстати: вам не нужно использовать типы в этой модели. Вы объявили свои функции как заземленные для различных подарочных объектов. Поэтому вы можете удалить типы и посмотреть, работает ли модель. Версия этой модели с удаленными типами доступна здесь: http://editor.planning.domains/#read_session=jugsVFKksh Вы можете проверить ее, нажав на кнопки Solve > Plan . Планировщик терпит неудачу с ошибкой сегментации. Это не дает какой-либо конкретной ошибки. Однако я попытался решить ее с помощью планировщика POPF , и он работает. Как вы можете видеть на этом скриншоте.

POPF solution

У меня нет под рукой Fast-downward, но я думал, что это двигатель позади http://solver.planning.domains/solve, хотя ваши сообщения об ошибках не соответствуют тем, которые я вижу. Вы используете последнюю версию Fast-downward?

Кроме того, если бы вы могли описать, что вы пытаетесь смоделировать, возможно, мы могли бы помочь вам найти подход, подходящий для режима, для его моделирования в PDDL.

...