Я новичок в PDDL и пытаюсь решить проблему с роботом-уборщиком, но я не понимаю, почему я это получаю.
чтение ввода ... [t = 0s ] Упрощение переходов ... сделано! закончил чтение ввода! [t = 0s] построение причинного графа ... готово! [t = 0s] упаковка переменных состояния ... готово! [t = 0s] Переменные: 1 Факты: 2 байта на состояние: 4 выполнено инициализация глобальных данных [t = 0s] Выполнение наилучшего первого поиска с повторным открытием закрытых узлов, (реальное) ограничение = 2147483647 Инициализация FF heuristi c ... Инициализация аддитивная эвристика c ... Упрощение 0 унарных операторов ... готово! [0 унарные операторы] Начальное состояние тупик. Полностью исследованное пространство состояний - нет решения! Фактическое время поиска: 0 с [t = 0 с] Расширенное состояние 0 (с). Открыто 0 состояний. Оценивается 1 состояние (я). Оценки: 1 Сгенерировано 0 состояний. Тупики: 0 состояний. Количество зарегистрированных состояний: 1 Время поиска: 0 с Общее время: 0 с Поиск остановлен, не найдя решения. Пиковая память: 2936 КБ
(define (domain floor-tile)
(:requirements :typing)
;; We have two types: robots and the tiles, both are objects
(:types robot tile - object)
;; define all the predicates as they are used in the probem files
(:predicates
;; described what tile a robot is at
(robot-at ?r - robot ?x - tile)
;; indicates that tile ?x is above tile ?y
(up ?x - tile ?y - tile)
;; indicates that tile ?x is below tile ?y
(down ?x - tile ?y - tile)
;; indicates that tile ?x is right of tile ?y
(right ?x - tile ?y - tile)
;; indicates that tile ?x is left of tile ?y
(left ?x - tile ?y - tile)
;; indicates that a tile is clear (robot can move there)
(clear ?x - tile)
;; indicates that a tile is cleaned
(cleaned ?x - tile)
)
(:action clear
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (robot-at ?r ?x) (clear ?x))
:effect (when (cleaned ?x) (not(clear ?x)))
)
(:action clean-up
:parameters (?r - robot ?x - tile ?y - tile)
:precondition (and (up ?y ?x) (robot-at ?r ?x) (clear ?y))
:effect (and (robot-at ?r ?y) (not(robot-at ?r ?x)))
)
(:action clean-down
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (down ?y ?x) (robot-at ?r ?x) (clear ?y))
:effect (and (robot-at ?r ?y) (not(robot-at ?r ?x)))
)
(:action up
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (up ?y ?x) (robot-at ?r ?x) (clear ?y))
:effect (and (robot-at ?r ?y) (not(robot-at ?r ?x)))
)
(:action down
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (down ?y ?x) (robot-at ?r ?x)(clear ?y))
:effect (and (robot-at ?r ?y) (not(robot-at ?r ?x)))
)
(:action right
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (right ?y ?x) (robot-at ?r ?x) (clear ?y))
:effect (and (robot-at ?r ?y) (not(robot-at ?r ?x)))
)
(:action left
:parameters (?r - robot?x - tile ?y - tile)
:precondition (and (left ?y ?x) (robot-at ?r ?x) (clear ?y))
:effect (and (robot-at ?r ?y ) (not(robot-at ?r ?x)))
)
)
Проблема:
(define (problem prob001)
(:domain floor-tile)
(:objects tile_0-1 tile_0-2
tile_1-1 tile_1-2
tile_2-1 tile_2-2 - tile
robot1 - robot
)
(:init
(robot-at robot1 tile_1-1)
(clear tile_0-1)
(clear tile_0-2)
(clear tile_1-2)
(clear tile_2-1)
(clear tile_2-2)
(up tile_1-1 tile_0-1)
(up tile_1-2 tile_0-2)
(up tile_2-1 tile_1-1)
(up tile_2-2 tile_1-2)
(down tile_0-1 tile_1-1)
(down tile_0-2 tile_1-2)
(down tile_1-1 tile_2-1)
(down tile_1-2 tile_2-2)
(right tile_0-2 tile_0-1)
(right tile_1-2 tile_1-1)
(right tile_2-2 tile_2-1)
(left tile_0-1 tile_0-2)
(left tile_1-1 tile_1-2)
(left tile_2-1 tile_2-2)
)
(:goal (and
(cleaned tile_0-1)
(cleaned tile_0-2)
(cleaned tile_1-1)
(cleaned tile_2-2)
))
)