Next: MODIFY-PKCB. Up: From Summary To Memory Previous: SPLIT-TRACE.

PREPARE-CHUNK.

The operators of a chunk may need to be modified to make them better suited for future re-use. PREPARE-CHUNK makes purely representational preparations as well as more substantial changes designed to improve cooperative plans, such as the formation of macrops [Fikes, Hart, & Nilsson1972]. In other words, when possible, the chunk is made more general and more readily adapted in the future.

The representational preparations are straightforward. Obviously, the operator literals must be replaced by new variables. Also, a WAIT-FOR operator is introduced whenever an agent agreed to a request. WAIT-FOR operators are functionally equivalent to the coordinating operator WAIT already discussed, but there is a semantic difference that is relevant during communication. WAIT implies an agreement already exists but WAIT-FOR only implies an agent expects an agreement to be established.

The third pass of SUMMARIZE-TRACE provides the benefit of making the incoming chunks more general and should be considered a means of improving the cooperative plans. It improves them because removing operators that achieve subordinate goals makes the chunk more easily adapted in the future (at the cost of regenerating the original operator if it is needed again).

The most complicated portion of the preparation phase involves potentially augmenting operators to macro-operators by including additional binding information, in the form of new roles and preconditions. This additional information is identified via an annotation process, similar to that of [Kambhampati & Hendler1992], which records the reasons why operator variables took on their final ground value.

Operator augmentation is better understood with a simple motivating example than with a long explanation. HTO's execution trace from the previous example is:

(<asked L1 to (ON MBOX3 HANDTR2)>
 <waited for (ON MBOX3 HANDTR2)>
 <waited for (ON MBOX3 HANDTR2)>
 <executed (TILT-HANDTR HANDTR2)>
 <executed (PUSH-HANDTR HANDTR2 STREET)>
 <executed (STAND-HANDTR HANDTR2 STREET)>
 <asked L1 to (ON MBOX3 TRUCK1)>
 <waited for (ON MBOX3 TRUCK1)>
 <waited for (ON MBOX3 TRUCK1)>
 <waited for (ON MBOX3 TRUCK1)>
 <waited for (ON MBOX3 TRUCK1)>)
And after summarization and literal replacement:

((SIGN ?AGENT (ON ?BOX ?HANDTR))
 (STAND-HANDTR ?HANDTR ?FINAL-LOCATION)
 (SIGN ?AGENT (ON ?BOX ?TRUCK)))

The SIGN operator (which triggers communication) does not normally contain a ?HANDTR role or binding information regarding it. Nonetheless, HTO needs some way to determine an appropriate instantiation for ?HANDTR before the first SIGN operator can be re-used. This can be accomplished if the operator is augmented with the pair of preconditions (AT ?HANDTR ?STARTING-LOCATION) and (AT ?BOX ?STARTING-LOCATION).


Next: MODIFY-PKCB. Up: From Summary To Memory Previous: SPLIT-TRACE.
Andrew Garland
1998-05-22