Tuesday, January 27, 2009

Conditions in a Plan as a Tree Structure

goal -> action + condition*
condition -> action + condition*

In Crackpot, we store each attribute and all conditions on an attribute. This means it is possible to infer: a particular condition c is satisfied by which actions, and these actions have in turn what conditions.

Visualizing conditions as a Tree structure is helpful:

1) Condition: If a condition c is no longer needed due to change in situation, the whole "subtree" of c (containing actions and conditions) should be removed, unless a certain action participates in achievement of another goal.

The queries from the Tree structure in the above scenario are:
a. get all action instances needed to satisfy a condition instance
b. get condition instances of an action instance
c. get all condition instances satisfied by an action instance

2) Cases (for the case base) - which heuristic helped achieve which condition in what scenario. In scenario, we can probably store: the condition that was satisfied and the existing states of the attributed participating in the condition. In the case, we also need to store what change was produced by the heuristic.

If the case base stores the whole tree of a condition, the tree can be copied and applied in another situation.

3) Infer goodness of a heuristic - How to update the goodness of a heuristic? If a heuristic participated in satisfying a condition of an action that was executed and yielded reward R, the heuristic should be awarded its share of R. How to determine the share?

As I earlier mentioned, the Cost value of a condition should store not just the difficulty of achieving the cost, but also the priority of the goal. A heuristic is best if it reduces the difficulty of a high priority goal using quite minimal resources and time. Once a heuristic is classified as better, the difficulty of the goal reduces. So within a closed-loop, the difficulty measures should be updated as well.

4) Plan Merging - In plan merging we are interested in reducing the size of merge(A, B) from size(A) and size(B). Plan merging is useful in parallelization of planning as well as in case-based planning. If A and B share a condition c such that the plans can be moved and adjusted to need to achieve c only once, all actions needed to achieve c need not be duplicated.

No comments:

Post a Comment