#r #pddl
#r #pddl
Вопрос:
Я внедряю систему в pddl, и мне приходится использовать durative-action, это мой код, но он выдает ошибку в названии.
(define (domain rooms)
(:requirements :strips :typing :durative-actions )
(:types
room
zone
robot
door
elevator
)
(:predicates
(robot_at ?r - robot ?x - room)
(robot_at_zone ?r - robot ?x - room ?z - zone)
(zone_at_room ?z - zone ?x - room)
(is_next ?x - room ?y - room)
(is_in_other_floor ?x - room ?y - room)
(door_closed ?d - door ?x - room ?y - room)
(door_opened ?d - door ?x - room ?y - room)
)
(:durative-action go_room
:parameters (?r - robot ?x - room ?y - room ?d - door)
:duration (= ?duration 5)
:condition
(and
(robot_at ?r ?x)
(is_next ?x ?y)
(door_opened ?d ?x ?y)
)
:effect
(and
(robot_at ?r ?y)
(not (robot_at ?r ?x))
)
)
Комментарии:
1. Можете ли вы правильно отформатировать свой вопрос?
Ответ №1:
вам необходимо указать, когда выполняются условия и эффекты, используя ключевые at start
слова , at end
или over all
(over all действует только для условий).
Например:
(:durative-action go_room
:parameters (?r - robot ?x - room ?y - room ?d - door)
:duration (= ?duration 5)
:condition
(and
(at start (robot_at ?r ?x))
(over all (is_next ?x ?y))
(over all (door_opened ?d ?x ?y))
)
:effect
(and
(at end (robot_at ?r ?y))
(at start (not (robot_at ?r ?x)))
)
)