This page focuses on the buffering mechanism of Production 2000+. The buffering mechanism has two important tasks. First of all, it ensures that the transportation system never overflows. Secondly, it balances the load of each machine. The mechanism is completely distributed and self-organizing.
Each machine agent manages two buffers, an input and an output buffer. The input buffer contains all those workpieces which have already awarded the machine, but have not been processed yet. This is the machine's work in process.
A machine's output buffer tracks all those workpieces that have already been processed by the machine, but have not yet been able to award an appropriate new machine. A workpiece thus moves from the input to the output buffer after it has been processed by the machine.
The input and output buffer together represent the virtual buffer of the machine (see figure 1).
Every machine is assigned a maximal size of its virtual buffer. This size may vary from machine to machine. It should, however, never exceed the actual capacity of the physical buffer associated with the machine; that is, the section of the transportation system located between the two shifting tables adjacent to the machine (cf. the transportation system). This includes the supply conveyor and the output conveyor of the machine, but also the forward and the backward conveyor between the two adjacent shifting tables of the machine.
A machine agent may only accept a new workpiece if its virtual buffer is smaller than its buffer limit (there is one exception to this rule which is described here; but this exception does not invalidate the following claims; cf. [Bussmann 2000]). This rule ensures that the production system is never overflowed with workpieces and thus never runs into a transportation deadlock. Since every workpiece is always in at least one buffer and since the buffer sizes are limited, the overall number of workpieces in the system never exceeds a global limit (cf. [Bussmann 2000]). If the global limit is sufficiently smaller than the overall storage capacity of the transportation system (of the forward and backward conveyors, to be precise), the system never runs into a transportation deadlock since the workpieces can always be moved in circles.
Let us begin with some simple observations. Whenever a machine breaks down, the allocation mechanism automatically diverts the material flow to other machines, thus balancing the machines' workload. This is achieved by including the current workload of a machine (i.e., its current buffer size) in a bid, and by awarding the machine with the smallest workload. In case of a machine breakdown, the buffer of this machine runs full very quickly and workpieces start to avoid this machine because its buffer size is high. As soon as the machine is available again, it starts processing and workpieces begin awarding the machine again because the buffer size is decreasing. The workload of a machine thus adjusts itself automatically to its current processing capacity. Production 2000+ has this important feature in common with other agent-based control mechanisms proposed previously in the literature (see for instance [Shaw 1985][Parunak 1986][Maley 1988][Kis 1996]).
In mass production, it is also important to enforce a material flow in the main manufacturing direction. With a high volume, an unconstrained material flow would result in a high traffic in every direction and would thus require a transportation system with a high capacity. Such a transportation system would be very costly (cf. the discussion on the transportation system). It is therefore necessary to enforce a main manufacturing direction without sacrificing the possibility of violating this flow whenever it turns out to be inevitable. This is exactly what Production 2000+ does. When awarding a machine, forward successors (in the main manufacturing direction) are always preferred in favor of backward successors. Only if there is no bid from a forward successor, a backward successor may be awarded (cf. the deadlock avoidance mechanism).
But there is even more to Production 2000+. What really is a unique feature of Production 2000+ is that it automatically adjusts itself to the current capacity bottleneck while avoiding congestion in the transportation system. The system's current capacity bottleneck is automatically propagated in the opposite direction of the actual material flow; a process which continues until it has reached the loading stations. As a result, the loading stations feed only as many workpieces into the system as the system is currently able to handle.
To see how this works, let us again consider figure 1. A workpiece which wants to be processed by a machine is first put into the input buffer of the machine. After processing, the workpiece is moved from the input buffer to the output buffer and remains in the output buffer until the workpiece has been included into the input buffer of another machine. Entering the input buffer of another machine is the only way for a workpiece to leave the virtual buffer of the current machine. A machine's virtual buffer can therefore be thought of as a funnel whose input stream is controlled by its output stream (cf. figure 2). As soon as the number of workpieces in the funnel reaches the maximal size of the virtual buffer the machine is no longer able to accept any new workpieces. This state lasts until a workpiece (which has been processed) leaves the output buffer. The input stream is thus automatically restricted to the maximal throughput of the output stream.
One might object that as soon as the buffer capacity of the transportation system is at its limit, the input stream is adjusted to the output stream anyway. However, a transportation system which is at its physical limit is jammed. Jams slow down the traffic and prevent workpieces from reaching a machine in time. Jams may even create transportation deadlocks (if the transportation system includes cycles as in the case of the P2000+ system). Jams may thus lead to a loss of performance which may be even greater than the cause of the congestion itself. The point is therefore to adjust the material flow through the machines without forcing the transport system to its physical limits.
But this is not even the end to the story. There is a whole network of funnels of the type just described. The current capacity bottleneck propagates through this network, eventually reaching the loading stations. An interesting feature of this kind of mechanism is that the topology of the network is not pre-defined; it is created dynamically by the workpieces themselves.
Take for example the production setting in figure 3. If the buffer of M5 runs full (either because the machine is broken down or the processed workpieces are not able to find a new machine), the machine no longer accepts any new workpieces in its input buffer. Any processed workpieces in machine M2 or M3 trying to award M5 are now forced to wait for the virtual buffer of M5 to decrease again. In the meantime, the virtual buffers of M2 and M3 run full also. Once full, these machines stop accepting workpieces, and the effect is propagated to the machines which supply M2 and M3 with workpieces. Machines M1, M4, and M6, on the other hand, may continue processing because none of their workpieces award any of the affected machines.
The key aspect of this mechanism is that the machines do not have any knowledge about each other and their position in the processing sequence. The backpropagation of the current capacity bottleneck is solely determined by the workpieces and their processing requirements. A machine only stops processing if the virtual buffer of this machine is full with workpieces in its output buffer which cannot award a new machine. If the processing requirements of the workpieces change, the direction of the backpropagation changes accordingly without the machines knowing about it. The backpropagation of the current capacity bottleneck in Production 2000+ is therefore a truly self-organizing mechanism.