Main > Reference Manual > Solver algorithm > Implementation details > Buffer solver

Standard buffer

Buffer is asked for a quantity Q at the date D For each flowplan on the buffer

If the on-hand value is positive
Set the variable ExtraInventoryDate if it is not set before. This variable stores the date when there is additional, unallocated inventory available.
Else if the on-hand value is negative
Compute the shortage as current onhand – required minimum quantity + known shortage from previous dates
If a producing operation exists
Try to get extra supply for the shorted quantity. This replenishment will update the onhand value of the current flowplan
If the onhand is still less than the required minimum quantity - the known shortage
This situation happens when the producing operation can't replenish the buffer enough, or when all supply in a buffer without producing operation has been exhausted.
Increase the variable storing the known shortage at previous dates.
Reset the ExtraInventoryDate if it was set.
If there is a shortage, a producing operation exists and the above loop didn't already do the following
Try to get more supply at the requested date.
Not only can this reduce the shortage, but also important is the next-date returned by the producing operation.
Note that if this step creates more supply to meet the demand, that supply is not positioned such that inventory is minimized. The flowplan loop does minimize the inventory by replenishing only when the inventory drops below the minimum.

The final results are now:

Returned quantity: requested quantity – shortages
Returned date:
= requested date if there is no shortage
Or = reply date of the producing operation
Or = ExtraInventoryDate if that is less than the operation reply date

todo Not up to date with the pre-op time loop...

Procurement buffer

Find the date of the latest locked procurement plan. No additional will be created before this date. Loop through all dates.

Keep track of the total consumed and produced quantities.
Calculate the current inventory as the difference between these quantities.
If this date is within the minimum timeframe from the previous purchasing operation.
If the inventory goes negative and the plan is material constrained.
Record the earliest time for an additional purchase as the next ask date.
Move to the next date.
If the inventory is above the minimum inventory level and we have not reached the maximum interval between purchases.
Move to the next date.
If we are the earliest new purchase date where a new purchase can be created and the inventory is below the minimum inventory level.
Try to increase the quantity of the previous purchase to avoid that the inventory falls below the minimum inventory level.
Record the next ask date if this resizing fails to bring the inventory above 0.
Create a new purchase to bring the inventory back to the maximum inventory level.
This is done by updating the date and the quantity of an already existing purchase or by creating a new one.
Remember the earliest and latest date for the next purchase.

Delete eventual purchases that have become redundant. Report the answer quantity and the next ask date.

Infinite buffer

Always reply for the full quantity.