Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Making sure all destinations of a same name get serviced, even if there's only 1 train, would be helpful, and it should easily scale up, unlike the current system.
So, that leaves adjusting the options.
Train Stop Limits work well, provided that you have sufficient trains for the demands of all the stations. A 70 second round trip to pick material up, combined with a 15 second drop off, means that you have one train servicing the station every 85 seconds. If the station needs materials faster than that, it may require many more trains to meet the demands of this station alone. If you need too many trains (at your discretion) changing the station from a shared name to a unique name may be the better option.
The other alternative, especially if you are trying to use only a limited number of trains, may be to use circuit logic to enable the drop off stations in order, keeping them disabled otherwise. This will result in a thundering herd (depending on the number of trains looking for the next Enabled station) which is what the Train Stop Limits were meant to counter, but that's something you'd have to deal with here. However, by selectively Enabling stations you would ensure that the far stations would receive equal attention by the trains. You could even set it up to be that round robin you want.
All that round robin does:
It depletes resource field with lowest resources first - no matter how far away.
If you just activate & deactivate train stations based on how full their buffer chest are, you can have a quite good balance already.
Train station has enough material to fully load a train: weight goes from 0 to 1
Train station has enough space to fully unload a train: weight goes from 0 to 1
It has not: 1 to 0
All that math about some weird defined efficiency improves little to nothing if your goal is to feed your factory. Even a relative simple fuzzy logic based on buffer chest filling is already a waste of brain & computing time. Not to mention train running inefficiency if they make partial deliveries.
The only thing where you want to improve this on/off-system is the train limit because there is no need for multiple trains to go to 1 station.
It's all a pyramid with your final product at top - and if some lower products are overproduced it only means your pyramid widens (a bit).
Yes, in a perfect world you could create a perfect pyramid but the moment a resource field runs low your world becomes imperfect.
A full belt with a backup is not a problem but an insurance for worse times.
The really neat thing about same named train station is that you do not (need to) care about even out because your trains can work as a balancer (towards output) if you make sure that you've got enough resources put into your train network and you feature enough trains to transport them.
As long as your belts into your factory are fed who cares where that stuff comes from..?
If the answer is "Me." then go ahead and build yourself a system with balanced inputs...but please don't try to make up a thing where this is a 'must have'.
Where you could focus only at one problem, the output, you make yourself an unnecessary second problem by overthinking input in my opinion...
If the goal is always a full load upon arrival(no idle time), the answer is disable the station with circuits based on buffer chest content AND train limits so that 2 trains do not que for 1 load.
If the goal is literally take turns(not seeing a real benifit to it but nevertheless), you need to have individual names and set a really boring train schedule like, a-smelt-b-smelt-c-smelt. Or an even more elaborate curcuit system spanning all your network.
If the goal is to monitor the content of the mines,you CAN wire a miner up to see the available resources.(i dont think this is the answer but it might get you thinking)
With any of those options, if more trains is part of the answer and you are concerned it "can lead to deadlocks" you just need a more stable train network. Like an inline stacker at each station so a waiting train isnt waiting on the main rails,or a stacker before your smelter, again so a waiting train isnt blocking any path. Perhaps you are using roundabouts and not full intersections and that is slowing things down. Better rail signal practices,or maybe alternative routes. Dont be afraid of more trains.
You're not using them correctly at the moment. You shouldn't have any stop that will allow a train to show up and drop nothing with a train limit above 0. It should not be possible for the train to decide to go there, if you're using train limits correctly.
Unfortunately I don't think that this is a good use for circuits either because finding the minimum/maximum signals is going to require huge banks of combinators in addition to requiring one wire per resource to transmit all the penalties. I guess you could try multiplexing but that is going to use even more circuits and be even slower.
Every other stop gets the information whether it offers material (item signals > 0) or requests material (item signals < 0).
In addition, you can specify from which quantity a train should run at all - whether already at the first missing iron plate, or only at 4000 that fit into a wagon.
Before I set the train boundary by signals to zero, if the buffers at this stop were full - and there my stops were called 'load coal' and 'unload coal' and the coal train had 'only' the task to drive back and forth between load and unload - and stopped at the stop, if the next load/unload was not possible, because 'no train allowed'.
Translated with www.DeepL.com/Translator (free version)
Setup your train schedules as:
And build requester stations and priority requester stations together, such that the priority requester station is directly in front of the regular requester station.
Use the regular wiring for train limits based on remaining station chest buffer for the regular requester station. But read the active number of trains going to the priority requester paired with it, and subtract that from the normal station's limit.
For the priority requester station's train limit set it to 1 minus the active amount of trains going to the regular station. Additionally, disable the station when the chest buffer has more than whatever threshold you define as constituting 'needs priority delivery'.
Now, how it works is trains must first consider the priority requester stations that are enabled and where a train is not already en-route to the regular stop paired with it (as that would lower the priority's limit to zero or lower, though effectively it can't go lower than zero and is capped there by the game engine.)
If all reachable priority stations sharing the same name are disabled, the train skips over that entry in the schedule and will then try to deliver its full load to the normal requesters.
If a priority station was reachable; enabled; and open - i.e. not at its limit; then it will first visit that station and then immediately path to the normal station directly behind it. Because the normal station will lower its limit by 1 when a train is at the priority requester station just in front of it. And as soon as that train departs, the limit is raised and the departing train schedules for the station that just opened up and wouldn't you know it: it's the closest station, so it gets picked.
99/100 times it'll work like that and the train will hitch forward; break and stop; and then immediately continue because its cargo is already empty. Only in some cases where things are evaluated 'the wrong way around' might the train departing the priority requester head for a more distant normal requester. Too bad; and that's where the sub-optimal part comes in.
But other than that; it works. 100%.
Also; for those of you playing modded games that are heavy in by-products that need priority consumption. You can apply the same pattern to provider stations as well, making the by-products be considered with priority when their chest buffer is nearing full.
You can also vary on the two-stations-in-a-row pattern by having dedicated waste-disposal trains that kick in once the chest buffer is nearing full and have a trash-disposal location linked into their schedule that is guaranteed to void the byproducts delivered as rapidly as possible.
(I've been using variants of this pattern with the Nullius mod.)
Turn off stations destinations that are full. Works pretty well. It was necessary then to massively reduce the total number of trains, and sometimes they temporarily full-system-deadlock, when a train stops on the main throughway. But it's not horrible.
As far as weights, and responding to some counter-comments: One of the things I mentioned is that idle station weights increase over time. So eventually a low-service, low efficiency station WOULD get serviced again, because the weight would rise over time, based on time alone. Then it would drop again when the stop was inefficient. Plus, it's still random weights, so even at a low chance, it'll hit sometimes. But as far as the random selection picking high-efficiency stations a lot: YES. That's the point. If that station empties a train quickly, and then going forward continues to empty many trains quickly, that means it needs a lot of trains to stop there. With weights, it just dynamically adjusts how often it's randomly picked, and high throughput stations would want a lot of stops, moreso than a low efficiency station, which didn't transfer much, and timed out, and/or took forever to fully empty. :D
I am using mods, but I'm limiting myself to small mods, and mods that don't require big collections of libraries and dependencies. I want to mod it a little to solve a critical problem, but I still want it to be fairly vanilla. I also don't want to bring in a million changes all at once that I don't intuitively understand. So, warehouses, black cargo wagons, upgraded solar panels, etc. At about 40,000 vanilla solar panels, my computer couldn't really run my base anymore, so.... Now I have 500 "1000x-efficiency" solar panels. :D
Rio, your train script is interesting to me. I may try it. I was definitely torn about how to "design" separate resource channels of the same type if I were to separate them, without necessarily just doing 1 train between precisely 2 spots. I like your idea. As my factory is growing again, I may try it when I need it again.
For now, the circuits were the best solution. It reduced my number of trains by about 80%, so I'm much less congested, and my "full" stations don't get serviced. The threshold numbers are fairly easy to hook up and set since I have warehouses. I just had to stop and understand the circuit network first, as it's the first time I've successfully used it.
I still think my "station weight" idea has merit for vanilla, as it would remove the need for my circuits, but I can actually move forward again without it.
Thanks everybody!