Search code examples
artificial-intelligenceplanningpddl

How to store mathematical values in PDDL?


I need to create a plan in PDDL to visit a subset of n places, each of which has a score. I need to maximize the utility, which is defined as the sum of each individual score. How do I represent this domain in PDDL? Specifically, how do I store score for each place?


Solution

  • I assume that you are familiar with action costs and plan metrics. If not, please state so in the comments.

    The easiest way would be, I guess, via action costs. The problem to solve is that in your case the quality of a plan is associated with the places that you have visited after the execution of a plan, so it is not directly associated with the costs of the actions you perform, but with the state variables that you produce. So, let's say you would increase the plan's quality each time an action is performed that causes the agent to visit a location, then you can get wrong plan qualities, because you can visit the same location multiple times. However, you can fix this problem as follows:

    You simply add an action increase-plan-quality(?location) of the following form: (1) in each location it is executable exactly once (2) in each location, it is only executable if the agent is currently at that location (3) the effects increase the quality of the plan by the score of that location

    Then, you only need to set the plan metric to maximize and you are done.

    Why does this work? (A) If your agent is at a location, the maximize-metric will cause the planner to apply the action that increases the quality (due to (2) that action is applicable) (B) These additional actions cannot procude wrong plan qualities, as, due to (1), each such action is only applicable once per location. The only thing that can happen is that you have visited a location but the planner does not apply the action that increases the plan's quality (although it could do so). But that's the planner's choice and pretty unlikely, I guess.

    Another possibility would be to rely on so-called state-dependent action costs. But that concept is quite new (about 2 years if I remember correctly), so I guess there are only a limited number of planners that can handle them and I am also assuming that one needs a specialized syntax that is not part of the standard PDDL specification.