As described so far, the auction protocol described above is not able to handle deadlocks in the allocation process: A number of machines may find themselves in a cyclic dependency, each waiting for another machine to be ready to accept a new workpiece.
To resolve this kind of deadlocks, the control algorithm of Production 2000+ defines a forward direction of the main material flow. The basic idea is that most workpieces follow the forward direction during their processing and that in only a few cases this forward direction is violated (this observation is certainly true for high volume production). Given this forward direction, the control algorithm is able to distinguish between forward and backward successors of a machine (cf. figure 1).
The bidding procedure is now adapted as follows.
A machine always bids if it has a subtask to offer, even if the machine is currently not ready to accept a new workpiece. Such a bid, however, includes an explicit warning that the machine is currently not able to accept any new workpieces in its input buffer. When a workpiece awards a machine, it usually ignores any bid with such a warning. This rule is only violated if the following two conditions are met at the same time:
If both conditions are met, a machine with a warning may be selected in step 3 of the auction protocol. That is, a machine that is not ready to accept a new workpiece is awarded anyway (but only in this case). Such an award is always combined with a request to include the workpiece in the input buffer, irrespective of the current size of the virtual buffer. We call this an enforcement award.
Such an enforcement award may exceed the upper bound of a machine's virtual buffer. However, under certain, general conditions, this violation of the machine's upper bound never results in a violation of the sum of the upper bounds at system level. A formal proof of this claim is given in [Bussmann 2000].