Page 1 of 1

train loading question

Posted: Wed Dec 14, 2016 10:19 am
by vanatteveldt
I know the topic of balanced train loading has been discussed to death, but I'm not happy with what I thought was a "standard" design, i.e. one express belt per wagon, loaded with 6 stack inserters via chests, and a circuit network with [* / -24] and each inserter connected to the circuit output (via green) and to its own chest (via red) set to insert when [*<1], making sure the buffer chests are balanced.

However, I'm not happy with the throughput to the buffer chests. Since 4 stack inserters can empty an express belt, 6 inserters per belt should get close to 2400/min per belt, right?

If a train is at the station (i.e. the buffering is not actually used) this throughput is made, but when I remove the train (i.e. inserters are loading into the buffer chests) throughput drops to 1900-2000.

Am I doing something wrong? Is there a better (and hopefully somewhat compact) design for balanced buffering train loading that makes at least one express belt per wagon?
throughput with train
throughput without train
blueprint of the whole setup
(note that none of the chests was full when the screenshot was made :))

Re: train loading question

Posted: Wed Dec 14, 2016 1:46 pm
by Frightning
I suspect the answer to your question has to do w/ the Stack inserters preferring taking items from the near side of the belt, together with the fact that time per swing is not precisely the same depending on which side of the belt the inserter is grabbing from. Add to that the Stack size and how that interacts with belts and I'm not surprised loading proves less efficient than unloading.

Edit: Come to think of it, I am pretty sure I know the answer: When the train is there, items are being offloaded from the buffer chests into the train as well, so what I suspect is happening is that this resulting in the inserters loading the buffer chests being able to drop all their contents in 1 tick instead of over 13 ticks (due to the circuit condition).

Re: train loading question

Posted: Wed Dec 14, 2016 2:06 pm
by vanatteveldt
The difference between the two is not loading vs unloading, it is indeed whether the chests fill up, i.e. whether the circuit condition comes into play.

So I guess my question really should be: is there a way to do balanced loading without slowing down the inserters too much? (not too much meaning: 6 stacks can still empty a blue belt)

Re: train loading question

Posted: Wed Dec 14, 2016 3:47 pm
by Deadly-Bagel
This worked perfectly when each inserter was only capable of moving one item to or from a belt. Now that multiple items can be transferred, things start getting a bit dodgy. The first five inserters might pick up 4 items, but the last one only has 3. Now that all the others are above average, only the last inserter is allowed to work. When it finally inserts something, THEN all the others are allowed to work but that last one now is above average so stops. This isn't a problem when the train is there because as soon as anything is put into any of the chests it's taken straight back out so they're all always 0.

I work around it by setting the inserters to ([*] < (stack size)), where (stack size) refers to the stack each inserter taking from the belt is capable of moving. For example for a Fast Inserter I would set it to 4, or maybe 8. This gives it a bit of a buffer to work with and ensures that while no chest ends up WAY out, they all load much more quickly.

Re: train loading question

Posted: Thu Dec 15, 2016 9:46 am
by vanatteveldt
Good idea, I was thinking of adding some sort of constant to the combinator output but this is much simpler!

I'll test throughput and balancing, 1 sec :)

Edit: works like a charm, thank you! Throughput with <12 is around 2397, good enough for me :)