Corresponding to span ?A 1 ,A 1/6, holding_R_blockF?can be freed at level 2 and re-allocated
at level 5. The number of robots needed at levels 3 and 4 will then reduce by 1. Problem
instances solvable by this method are in the class FIX.
If resource scarcity persists, an unallocated action is moved to a subsequent level where
it can be potentially allocated. But the move may force the consumers of its effects and any
other actions whose effects can be clobbered by the potential move, to be moved too. Since
unrestricted movement of actions can be as complex as planning itself, Solve SAMELEN
is not allowed to increase the plan length and is required to maintain the relative action
positions. See Fig. 22 for an example. Shuffle problem with 2 robots can be handled by
this method. In the shuffle problem in Fig. 15, the action A 2/5 can move down to level 6 to
ease the scarcity. Since A 2/6 needs the clear() effect of A 2/5 , it then needs to move to level 8.
Note that the length of the plan still remains the same. Problem instances solvable by this
method are in the class SAMELEN in Fig. 18.
If the two above approaches fail, the allocation problem is in Class INCRLEN where
the length of the abstract plan must be increased during scheduling (i.e., plan serialization
affects plan length). Shuffle problem with 1 robot belongs to this class. Problems in this
class are given either to the full declarative scheduler or back to the original planner for
solving it without any resource reasoning in the normal way. Class UNSOLV occurs when
the number of resources are too small for any resource allocation to be feasible at all. If
there are no resources, one can identify this class at the start of scheduling; otherwise it
cannot be determined until after Class INCRLEN.
Classes INFRES, FIX and SAMELEN are handled without backtracking in time
polynomial in the length of the abstract plan (since the plan is traversed only once).
For Class INCRLEN, resource abstraction is a penalty because the method goes back to