求解器说此pddl问题的语法错误,但我找不到任何错误这里出了什么问题?

问题描述

我试图解决这个问题。求解器一直在说第36行存在语法错误。我已经检查了很多次。我没有看到任何语法错误。我尝试引入类型,但是仍然产生了相同的错误。现在我完全不知道了。我对PDDL非常陌生。请让我知道是否有人在这里看到问题。

谢谢。

这是domain.pddl:

(define (domain domain4)
(:requirements
    :strips 
    :equality
)

(:predicates
    (robot ?r)
    (alarm ?a)
    (trap ?t)
    (location ?x ?l)
    (alarmOn ?a)
    (trapSet ?t)
    (path ?x ?y)
)

(:action move_robot
    :parameters
        (?r ?l1 ?l2)
    :precondition
        (and
            (robot ?r)
            (path ?l1,?l2)
            (location ?r ?l1)
        )
    :effect
        (and
            (not (location ?r ?l1))
            (location ?r ?l2)
        )
)


(:action turn_on_alarm
    :parameters
        (?r ?a ?l)
    :precondition
        (and
            (alarm ?a)
            (robot ?r)
            (location ?a ?l)
            (location ?r ?l)
        )
    :effect
        (alarmOn ?a)
)


(:action set_trap
    :parameters
        (?r1 ?r2 ?t ?l)
    :precondition
        (and
            (not (= ?r1 ?r2))
            (trap ?t)
            (robot ?r1)
            (robot ?r2)
            (location ?t ?l)
            (location ?r1 ?l)
            (location ?r2 ?l)
        )
    :effect
        (trapSet ?t)
)
)

这就是问题。pddl:

(define (problem problem4)
(:domain domain4)

(:objects
    room1
    room2
    room3

    robot1
    robot2
  
    alarm1
    alarm2

    trap1
    trap2
)

(:init
    (robot robot1)
    (robot robot2)

    (alarm alarm1)
    (alarm alarm2)

    (trap trap1)
    (trap trap2)

    (location robot1 room1)
    (location robot2 room1)

    (location alarm1 room1)
    (location alarm2 room2)
    (location trap1  room2)
    (location trap2  room3)

    (path room1 room2)
    (path room2 room3)
    (path room3 room1)
)

(:goal
    (and
        (alarmOn alarm1)
        (alarmOn alarm2)
        (trapSet trap1)
        (trapSet trap2)
    )
)
)

解决方法

域中的问题。尽管解析器告诉您它位于第36行,但实际上并非如此-解析器只是由于较早的错误而卡在了那里。

真正的问题在第19行:

(path ?l1,?l2)

逗号是错误的。如果将其删除,一切正常。