Problem:
Stockpiles are not utilized to their max potential (if at all), rendering them ineffective for balancing supply lines, necessary for improving the utilization rate of production processes (especially those that require multiple supplies per stage and are starving now).
Example:
Example: A supply stockpile dedicated to servo components, to supply nearby processes. At most 1 item will queue up in the buffer.
Diagnosis:
It appears that supply orders are generated when either:
- A production station does not have (sufficient) resources for the current production step;
- Regularly when a production station has spare room in its included stockpile, or when a stockpile has spare room.
In the first case, an immediate order will be generated and supplied as soon as possible. In the second case, it appears there is an internal timer that regularly checks for this condition. For a production station, sufficient goods are sent to its inventory for its full production step (ergo, if the station requires per step 4x A and 2x B, it will send 4x A and 2x B). The supply process is then based on FIFO-ordering, when demand is really high.
However, for a supply stockpile, no urgent demand exists and it will only generate requests (/ be supplied) at regular intervals with 1 unit at a time, even when the supply line itself has a low utilization rate and should be more than capable to resupply more units to the supply stockpile
Potential Solution:
(I) When a Resource Importer does not have immediate requests of starving production processes (= not at max. capacity), it should attempt to fill up all stockpiles with its slack capacity by whatever these stockpiles request, while obeying its max capacity of spawned supplied per time unit.
(II) In addition to the first fix, users can even be given control over the priority of items within the supply line, as this would also ensure that critical processes (i.e. bottlenecks) can be preferred to resupply first before other processes. For example, a priority queuing system with 4 steps can do:
- Essential*: highest priority before all else, these processes will be resupplied first (for bottlenecks / critical processes);
- High: default for production processes currently out of inventory and waiting for supply (starving);
- Normal: default for all production processes with spare room in their stockpiles;
- Low: default for supply stockpiles, will only be filled up when no higher priority orders exist.
For each production step and supply stockpile, its priority can be selected. When an unimportant production process is out of goods, it has a high priority, since critical processes (bottlenecks) should be resupplied first before anything else, hence the differentiation between essential and high. By default, stockpiles have a low priority. By adjusting the priority for certain stockpiles, important supplies can be buffered in the supply line reducing time to restock and improving the utilization rate of the production processes associated with it.
Meanwhile the resource importer can only spawn supplies at a fixed rate, for which it will attempt to fill up the demand based on the priority system. So if it spawns 10 supplies per time unit, first the essential demand will be filled (lets say 3 units), and if there are sufficient items available, it will attempt to fill up all demand until all its resources for the time unit are utilized (distribute the remaining 7 in order of priority). When the demand for supply goods is higher than the spawn rate per time unit, it will only supply the most important processes and neglect the less important ones.
Although this last solution sounds a lot more complicated, it will also provide additional tools to ensure the resupply of processes deemed critical in the production process. This should encourage players to analyse their bottlenecks and balance the supply line accordingly, and would enable them to improve the utilization rate of processes of their choosing, when these are starving of supplies.
Other thoughts
Effectively, this would also reduce the necessity to separate supply lines as much as possible (and consequently the desire to remove the auto-connect feature of supply lines). The resource importers and supply lines themselves often have plenty of capacity left, while the production processes down the line are starving nevertheless. Most people attempt to fix this by separating the supply lines as much as possible and running dozens of supply lines separated by 1 tile across the place, while each line itself is hardly utilized.