I'm trying to figure out how many items an inserter can put onto a belt at different qualities, the system I'm using is just a inserter going onto a long belt, then running it for 3600 ticks (1 minute), then dividing the total items on the belt by 60 to get items per second. The total is being recorded by a combinator attached to a belt set to read all belt contents, the combinator is so I can see the exact number when it is above 1k.
My issue is that in some cases I got more than what the belt can actually handle. For example at capacity bonus level 2, a legendary fast inserter put down 451 items on half a yellow belt in 1 minute. 451 / 60 = 7.516666...
7.5166 > 7.5, half a yellow belt should only handle 7.5 exactly. How is it putting more on the belt than it can handle? I'm sure it's not and there's something I'm missing but I don't know what.
This is an example setup, should result in the combinator reading 451 steel chests.
Finding inserter chest to belt throughput
-
- Manual Inserter
- Posts: 4
- Joined: Thu Oct 17, 2024 4:25 am
- Contact:
-
- Fast Inserter
- Posts: 145
- Joined: Sat Nov 28, 2020 5:27 pm
- Contact:
Re: Finding inserter chest to belt throughput
The blueprint doesn't contain your timing circuit, and it's crucial to the measurement. For example, simply disabling the inserter will not stop it from dropping items it has already picked up, after the 3600 ticks have elapsed. So you will count too many items afterwards. If instead you stop the belt, the inserter can still drop one more item in the open space, which is probably the 451st in your count.
A more exact measurement would probably be to measure the number of ticks between two distinct fill levels of a (non-infinity) chest, e.g. start the timer when the level drops below 2000 and stop when it drops below 1000 so that start and stop are at the exact same swing state of the inserter.
That said, the wiki already has all the throughput measurements, including quality: https://wiki.factorio.com/Inserters#Inserter_Throughput
A more exact measurement would probably be to measure the number of ticks between two distinct fill levels of a (non-infinity) chest, e.g. start the timer when the level drops below 2000 and stop when it drops below 1000 so that start and stop are at the exact same swing state of the inserter.
That said, the wiki already has all the throughput measurements, including quality: https://wiki.factorio.com/Inserters#Inserter_Throughput
-
- Manual Inserter
- Posts: 4
- Joined: Thu Oct 17, 2024 4:25 am
- Contact:
Re: Finding inserter chest to belt throughput
I made the throughput measurements lol. I noticed this error after I uploaded the table to the wiki. In the editor mode, you can run the game for an exact amount of ticks using the tick custom button on the clock menu. To my knowledge this should prevent any extra items from being placed on the belt as the game freezes after the set ticks have passed, not the inserter or belt but the whole game.
-
- Fast Inserter
- Posts: 145
- Joined: Sat Nov 28, 2020 5:27 pm
- Contact:
Re: Finding inserter chest to belt throughput
Ah, I see. Then there is another error I can think of: if you start with an empty belt then the start and end state are different. Meaning that it can put the first item on the target belt tile very fast when it's empty, and only after that it's limited by the belt speed providing a new drop spot. So that would also explain the one extra item you measured.
Basically to get the actual "steady state" throughput you would need to start the timing after the inserter has been filling the belt a bit (for example in the tick when it picks up its next load), and then subtract the items already there from the final count. This way it starts in a "loopable" state, instead of having some startup states which differ from the repeating inserter loop.
Or like suggested in my earlier reply, you might also consider not going by a fixed number of ticks (which will most likely end up in a different state than the start), but continue a few ticks longer until you have the same state as the tick before the timing starts. Basically, try to avoid any errors from startup or end state being different by only measuring whole inserter rotations. Then you probably don't need 10 minutes to average out this error, you could compare results after 30 secs, 60 secs and 2 minutes (plus the state matching ticks) and if they all match exactly then you can be sure there's no start/end error from a fractional rotation being included.
Basically to get the actual "steady state" throughput you would need to start the timing after the inserter has been filling the belt a bit (for example in the tick when it picks up its next load), and then subtract the items already there from the final count. This way it starts in a "loopable" state, instead of having some startup states which differ from the repeating inserter loop.
Or like suggested in my earlier reply, you might also consider not going by a fixed number of ticks (which will most likely end up in a different state than the start), but continue a few ticks longer until you have the same state as the tick before the timing starts. Basically, try to avoid any errors from startup or end state being different by only measuring whole inserter rotations. Then you probably don't need 10 minutes to average out this error, you could compare results after 30 secs, 60 secs and 2 minutes (plus the state matching ticks) and if they all match exactly then you can be sure there's no start/end error from a fractional rotation being included.