Надеюсь, у вас все хорошо. У меня есть проблема, решая домен PDDL и файл проблемы. Задача состоит в следующем:
Два спортсмена A0; A1 и тренер T готовятся к соревнованию в тренировочной обстановке, показанной на рисунке. Они начинаются в P0, и они должны быть все в P3, чтобы закончить sh испытание. Связи между местами выделены двумя путями: путь спортсмена (solid) и путь тренера (пунктир). A0; A1 может использовать только путь спортсмена, и они должны перепрыгнуть через первое препятствие O0, а затем присесть и пройти под вторым O1. Т, вместо этого, может идти только путь тренера. Агенты не могут двигаться одновременно, только один агент может перемещаться на каждом шаге из одного места Pi в другое место на пути. Кроме того, тренер должен оставаться на один или несколько шагов вперед, чтобы проверить работоспособность спортсменов, поэтому A0 и A1 никогда не должны ожидать T (т. Е. Им разрешено находиться только в местах, уже посещенных T). Спортсмены и тренеры могут быть все вместе в одном месте тренировочной трассы. Например, если T находится в P2, то A0; A1 может быть в P0; P1 или P2. Спортсмены могут делать шаги в произвольном порядке (то есть они всегда могут договориться о том, кто делает следующий шаг).
Я реализовал оба домен и проблема файлов, но это не работает, как ожидалось в заявлении. Что я делаю неправильно? Любая помощь приветствуется.
Код:
1. Домен
;Header and description
(define (domain competition-domain)
(:requirements :strips )
(:predicates ;todo: define predicates here
(a1 ?x)(a2 ?x)(t ?x)(o ?x)(location ?x)(at ?x ?y))
;define actions here
(:action goto
:parameters (?athlete ?from ?to)
:precondition (and (a1 ?athlete)(a2 ?athlete)(location ?from)(location ?to)(at ?athlete ?from))
:effect (and(at ?athlete ?to)
(not(at ?athlete ?from))))
(:action jump
:parameters (?athlete ?obstacle ?from ?to)
:precondition (and (a1 ?athlete) (a2 ?athlete) (o ?obstacle)
(location ?from) (location ?to)
(at ?athlete ?from))
:effect (and(at ?athlete ?to)(not(at ?athlete ?from))))
(:action crouch
:parameters (?athlete ?obstacle ?from ?to)
:precondition (and (a1 ?athlete) (a2 ?athlete) (o ?obstacle)
(location ?from) (location ?to)
(at ?athlete ?from))
:effect (and(at ?athlete ?to)(not(at ?athlete ?from))))
)
2. Задача
(define (problem competition-problem) (:domain competition-domain)
(:objects A1 A2 T O0 O1 P0 P1 P2 P3
)
(:init
;todo: put the initial state's facts and numeric values here
(a1 A1) (a2 A2) (t T) (location P0) (location P1) (location P2) (location P3)
(at A1 P0) (at A2 P0) (at T P0)
)
(:goal (and
;todo: put the goal condition here
(at A1 P3) (at A2 P3) (at T P3)
))
)
Таким образом, моя главная проблема здесь заключается в том, чтобы применять действия и операторы для проверки препятствий .
Любая помощь приветствуется.