Проблема с кодом PDDL с использованием условных эффектов - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь решить проблему PDDL в стиле Pacman, и есть определенный сценарий, в котором я застрял уже несколько дней. Я получаю класс c

ff: цель может быть упрощена до ЛОЖЬ. Ни один план не решит ее

, что означает, что проблема тривиальна и логична c. Тем не менее, я новичок в PDDL и не могу понять, что его вызывает.

Проблема проста: Пакман (P) должен съесть Пищу (F), но два агента-призрака (G) блокируют ее. Чтобы пройти мимо них, Пакману нужно съесть Капсулу (C), делающую его невидимым.

(Изменить: я удалил вопрос, поскольку он был частью задания. Мне удалось решить проблему, и я опубликую решение, как только назначение будет оценено).

1 Ответ

0 голосов
/ 04 мая 2020

В этой теме: О PDDL в планировании ИИ @haz упомянул хорошую методологию для отладки вашей модели PDDL, когда бой недоступен из исходного состояния.

Лучший Чтобы проверить это, следуйте следующей стратегии: (1) запишите план, который, как вы знаете, решит его; (2) начиная с первого действия, поставьте цель в качестве предварительного условия; (3) повторить до конца. Если это не помогло, начните изменять начальное состояние на то, что, как вы ожидаете, будет полным состоянием во время выполнения плана. - haz 1 мая в 2:04

Я загрузил новую версию, которая может найти решение (если призраки не на пути к продуктам):

http://editor.planning.domains/#read_session = c7Vez9nrti

Две основные проблемы:

  • вы никогда не удаляете GhostPos, но это появляется в формуле цели
  • Если GhostPos находится на путь к FoodPos, то вы никогда не сможете добраться до еды, так как действие перемещения требует не быть призраком.
...