Возможно ли сравнение типов в 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)) в действии. Предикат используется в файле задачи при инициализации легких объектов.

Другие вопросы по тегам