Возможно ли сравнение типов в PDDL?
Например, если я объявлю типы как таковые:
:types
bag
light heavy - bag
То есть есть два типа сумок, легкие и тяжелые. Возможно ли в рамках действия проверить, имеет ли переменная типа bag тип light, не имея экземпляра light для сравнения?
Я знаю, что возможно иметь сравнение равенства как таковое:
(when ( = ?light ?bag))
но при этом проверяется, имеют ли две переменные одинаковое значение, а не один и тот же тип.
Я старался (when ( = light ?bag))
и хотя планировщик не выбрасывает ошибки, он, похоже, не работает.
1 ответ
В ответ на комментарий профессора Хаоса, в котором говорится, что это невозможно, я нашел обходной путь, когда мы создаем предикат (is_light ?x - light)
и использовать (when (is_light ?lightobj) (dosomething))
в действии. Предикат используется в файле задачи при инициализации легких объектов.