Per-item production rates and bottleneck detection

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

Post Reply
Harkonnen604
Filter Inserter
Filter Inserter
Posts: 285
Joined: Thu Jun 09, 2016 5:56 am
Contact:

Per-item production rates and bottleneck detection

Post by Harkonnen604 »

Although I proposed that stuff as reply in some other thread and posted as separate offer for pipes only, I'd like to summarize it for all entities in a separate thread. It's an important addition to factorio that will make it more of a plan-ahead game than trial-and-error bottlenecking.


Preamble:

Running a factory is all about balancing and finding resource bottlenecks. Belts and fluid tanks store a lot of material on them so if you are low on production of some ingredient, it will take long time before you know it - that is when some belt runs dry at assembly machine while others are saturated. It gets even more unobvious with trains for they have long times travelling here and there.

It is good to know the correct proportions. Like "3 copper wire machines per 2 green circuit machines and 2 fast inserters from each copper output", but there's more to it - like number of red circuit machines per green circuit machine. or number of iron drills to saturate what factory needs in total. or number of fast inserters you need to saturate a blue belt at train station output. So far you either read wiki, forum or just experiment to find these proportions, but it would be very handy to have all of it in NUMBERS in game, so you don't have to calculate it all on your own from recipe timings. With this proposal you'll have just a few approximate multiplications/divisions in your head.

So far all we have is 'P' screen with total production rates, but they give no clue about bottlenecks because desired proportions still need to be researched manually.


Proposal:

Every entity in its right panel (or in a separate window shown when mouse-hovering with shift held) gets two sets of numbers and icons:

1. Average actual input for last 10 minutes (items/min, for each item consumed)
2. Theoretical maximal input (items/min, for each item to be consumed)
3. Average actual output for last 10 minutes (items/min, for each item produced)
4. Theoretical maximal output (items/min, for each item to be produced)

Transport items (inserters, belts and pipes) will not have inputs/outputs separated - i.e. same value for both, just a rate of transfer.

Technically it can be implemented as per-minute 10-slot ring-buffer counting number of items on every item type that passed through machine, belt or pipe.

Details for every item type:

1. Assembly machine / refinery / chemical plant / pumpjack / furnaces / labs
Here everything is obvious. For actual values - once item is added to input slot (via inserter or a pipe), input counter for that item increases. Once item is produced, the output counter for that item increases. Player actions do not count. For theoretical maximum values - for output this will be number of items producable on a recipe divided by time it takes on a recipe. same logics for inputs. Assembly machine type and furnace type should be accounted of course. Currently placed speed/productivity modules and beacons should be accounted as well. Power supply should be considered 100%. Labs should account for lab efficiency bonus research.
For fueled furnaces show theoretical fuel consumption based on fuel type currently consumed. If fuel slot is empty, consider it coal by default.
Pumpjacks theoretical maximum is what's currently shown for them in the game (plus modules/beacons). Actual output of pumpjack may become lower if attached pipe system is fully saturated.

2. Inserters
Actual rate - whenever inserter picks an item, the counter increases. Theoretical maximum - rate that an inserter would give if source is always saturated and target is always empty. Theoretical maximum should account for stack bonus possibility. When pointing towards empty ground or belt, stack bonus does not apply (except for rapid inserter coming 0.13). When pointing towards ground with rails, a wagon is assumed there (stack bonus applies).

3. Belts
Belts should track this information for left and right lane individually.
Actual rate - number of items that entered belt lane from another belt or from an inserter. Theoretical rate - maximum througput of a belt, depends on its color.
Player actions (dropping/collecting items on a belt) sould not account.
It is possible to detect two-sided belts (actual counters for both lanes are non-zero and carry same item type). Dispalying info for such two-sided belts can be simplified by displaying sum for both lanes.
Splitters behave like belts. Actual values for left and right lanes are summed from both inputs. Theoretical throughput is doubled (it's possible not to double it if only one input is connected, but it is also possible that this loose end will be filled by some inserter).

4. Pipes / fluid tanks / electric pumps
Since pipes can be connected to four other pipes and the fuild may "bounce" when deployed in big chunks to the network, internally a pipe should remember total fluid delta received/sent for each direction individually. Directions from which pipe got more fluid than it threw back are considered inputs and summed up for actual input rate. Other non-zero directions are considered outputs and summed up for actual output rate. For theoretical maximum - it should be calculated from a case of always fully saturated input on one side and always fully empty output on the other side. Pipes and pumps show only input rate like belts. Fluid tanks show both input and output rate.

5. Crates
Actual inputs - total amount of items dropped by inserters/logistic-bots. Actual outputs - total amount of items extracted by inserters/logistic-bots. Player actions do not account for actual inputs and outputs. Crates do not have theoretical maximum values for you can't predict how many inserters and of what type you put around them and how many logistic bots touch them.

6. Wagons
Wagons behave like crates, but they do have theoretical maximum input/output by being considered fully surrounded by fastest inserters researched so far with currently researched stack bonus applied.

7. Locomotives
Locomotives show total sum over wagons in a train. Fuel consumption is ignored because it's miserable and can be seen as output rate on nearby inserter.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12888
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Per-item production rates and bottleneck detection

Post by ssilk »

Looks interesting.
Added to viewtopic.php?f=80&t=19987 More Game Information (Statistics, Monitoring, Graphs)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

Post Reply

Return to “Ideas and Suggestions”