I was creating a setup for processing ore and encountered an interesting behaviour.
Lets first discusss the unloading.
I have following setup:
As you can see I have waiting stations which are also used to load the trains with iron ore for testing (All named Load) and 3 unload stations (All named Unload). Unload stations have disabled train limit.
All trains have a schedule to go to fully load at Load and then unload at Unload.
When I left this setup going i noticed at first trains prefer to go to empty stations, then to those with no train waiting and then they stay before the
chain signal. This is interesting, because that means the train at chan signal wants to go to the left most station (red 1).
Now the question is why did it choose the left one and not any other.
I had these ideas:
1) Every station has its internal ID and red 1 is first in some list
2) It is the closest one to the train
3) It is decided by position of the station in world, so maybe it depends on some ID of the chunk it is placed in
1) is not true, because when I delete the stations and rebuild them in any order it doesn't change the behaviour.
Now this is my loading setup at the end of the pocessing:
Which means that 2) is also not true, because here it also prefers station on the left.
Only remaining idea is 3), but I somehow doubt that trains would decide by that. Yet it sems to corelate with the behaviour.
So does anybody know, how do trains choose to which station they'll go if there are multiple with the same name and all of them have the same number of trains going to them?
Maybe it can be somehow managed using circuits network?
Anyway what I would like to achieve is this:
Train queuing and station preference
Train queuing and station preference
Hm.... so we have a mystery donor... intriguing.
Re: Train queuing and station preference
https://wiki.factorio.com/Railway/Train_path_finding
"When the rail block contains a train currently waiting at a rail signal -> Add a penalty of 100 + 0.1 for every tick the train has already waited."
You can manipulate the decision by setting red lights by circuit network but I recommend: Don't go down this road
"When the rail block contains a train currently waiting at a rail signal -> Add a penalty of 100 + 0.1 for every tick the train has already waited."
You can manipulate the decision by setting red lights by circuit network but I recommend: Don't go down this road
-
- Smart Inserter
- Posts: 2768
- Joined: Tue Apr 25, 2017 2:01 pm
- Contact:
Re: Train queuing and station preference
I'm sure there are better and more elegant ways, but personally, I'd just create a stacker that could output to any of the stations.
My Mods: Classic Factorio Basic Oil Processing | Sulfur Production from Oils | Wood to Oil Processing | Infinite Resources - Normal Yield | Tree Saplings (Redux) | Alien Biomes Tweaked | Restrictions on Artificial Tiles | New Gear Girl & HR Graphics
Re: Train queuing and station preference
As far as I researched this, I found out that to maximize train throughput at loading/unloading stations, you have to combine 3 different techniques.
1. as few crossings and junctions as possible in the accesses and exits area (you did this)
2. space for a queue of length 1 (1 train) directly in front of a station (you did this)
3. a larger stacker with one depot station in front of it on the lane that goes to a number of loading/unloading stations (this would be where you placed your testing loaders)
If you use this for a bunch of unloading stations, use circuits to set the train limit of an unloading station to 1 if the station chests are full and 2 if the station chests can receive at least 1 full train. This way one train is unloading if there is buffer space and 1 train is waiting for unload.
The other trains are waiting in the stacker in front of the depot station and start as soon as one of the unloading stations get an available slot. Give the depot station a proper limit so if you have other unloading station facilities like this, trains evenly distribute over both unloading station facilities. If you only have one, don't use a limit.
The tracks between the depot station and the queue in front of the unloading station is not for trains to wait, only for driving. This avoids congesting the lane with a train waiting for the nearest station, while a station more far away is starving (this is what you encountered).
Usually, Factorio directs trains into empty stacker lanes, however sometimes it also directs a train into a lane that's about to empty but only after a short waiting time, which congests the stacker entry. This is not fatal, since it only happens if the stacker is almost full, and if the stacker is almost full it has enough trains to feed the stations even with a congestion at the entry.
If it helps, this is my lab setup where I developed a minimum crossing mine-to-smelter and smelter-to-consumer setup with 1-8 (slow acceleration) trains for ore and 1-4 trains for steel.
Blueprint: https://factoriobin.com/post/vD1zq2Ai
1. as few crossings and junctions as possible in the accesses and exits area (you did this)
2. space for a queue of length 1 (1 train) directly in front of a station (you did this)
3. a larger stacker with one depot station in front of it on the lane that goes to a number of loading/unloading stations (this would be where you placed your testing loaders)
If you use this for a bunch of unloading stations, use circuits to set the train limit of an unloading station to 1 if the station chests are full and 2 if the station chests can receive at least 1 full train. This way one train is unloading if there is buffer space and 1 train is waiting for unload.
The other trains are waiting in the stacker in front of the depot station and start as soon as one of the unloading stations get an available slot. Give the depot station a proper limit so if you have other unloading station facilities like this, trains evenly distribute over both unloading station facilities. If you only have one, don't use a limit.
The tracks between the depot station and the queue in front of the unloading station is not for trains to wait, only for driving. This avoids congesting the lane with a train waiting for the nearest station, while a station more far away is starving (this is what you encountered).
Usually, Factorio directs trains into empty stacker lanes, however sometimes it also directs a train into a lane that's about to empty but only after a short waiting time, which congests the stacker entry. This is not fatal, since it only happens if the stacker is almost full, and if the stacker is almost full it has enough trains to feed the stations even with a congestion at the entry.
If it helps, this is my lab setup where I developed a minimum crossing mine-to-smelter and smelter-to-consumer setup with 1-8 (slow acceleration) trains for ore and 1-4 trains for steel.
Blueprint: https://factoriobin.com/post/vD1zq2Ai
Re: Train queuing and station preference
4. signals in between the wagons inside the station so that the next train can start entering the station before the previous one has completely cleared it.Tertius wrote: ↑Wed Nov 16, 2022 10:12 pm As far as I researched this, I found out that to maximize train throughput at loading/unloading stations, you have to combine 3 different techniques.
1. as few crossings and junctions as possible in the accesses and exits area (you did this)
2. space for a queue of length 1 (1 train) directly in front of a station (you did this)
3. a larger stacker with one depot station in front of it on the lane that goes to a number of loading/unloading stations (this would be where you placed your testing loaders)
Re: Train queuing and station preference
As it was pointed the pathfinder penalty makes the "closer" station more desirable than the "further"Mango wrote: ↑Wed Nov 16, 2022 3:42 pm So does anybody know, how do trains choose to which station they'll go if there are multiple with the same name and all of them have the same number of trains going to them?
Maybe it can be somehow managed using circuits network?
Anyway what I would like to achieve is this:
You can use dummy train station on the "closer" branch to change that, those a a very strong penalty associated to it, for example in the vertical area where the 2nd train is queued, place 2 train stop on the closer lane, and 1 on the middle one. If the limit is 3 on the unloading station that should do the trick, it would make the furthest lane "prefered" so the first one to get 3 trains but no more, then the middle one, then the close one.
Re: Train queuing and station preference
Thanks for the explanation.
I added number of dummy stations increasing from far to close to the waiting places before unload stations and it does what I wanted.
You were right!
I added number of dummy stations increasing from far to close to the waiting places before unload stations and it does what I wanted.
You were right!
Hm.... so we have a mystery donor... intriguing.