old LTN discussion thread
Moderator: Optera
Re: [Mod 0.14] Logistic Train Network 0.4.6
Hey,
Just wanted to say, that this is a great mod, I have been thoroughly enjoying it, and it's definitively something I've been waiting a long time for.
That said, there are still a few minor issues with it. Specifically, I'm talking about least effort, which is something others have touched on. I appreciate the idea behind best effort, but, as others have mentioned, what ends up happening is you get consecutive orders for deliveries of minute quantities of items. Every train that doesn't have something better to do gets roped in, and even some trains that do have better things to do. On top of that, they end up clogging your rail infrastructure, because you've now got 10 trains which are waiting to each pick up 50 iron plates. One train would've sufficed, but instead there are 10, plus the other 10 that came before, and those that will come after. To an extent it is possible to get around this, by using a decider combinator that only outputs once there is a certain amount of items stored in the output station chests, but even this isn't perfect. In the time it takes a train to get there and take the items, the system will have time to call other trains to pick up marginal amounts of items.
You are doubtlessly aware of all this, so I'm not going to post all this without offering a solution. Perhaps you can think of a better solution, perhaps there's some reason why my solution won't work, but since I haven't seen it mentioned, here it is.
When using least effort, have a minimum time between deliveries for each item/resource. This could be a config-able option, with a default of say, 5 minutes. Essentially once the system sends out a delivery using least effort, it will create a 'timer' for that resource, and won't create a delivery for that resource based on least effort until the timer has expired (5 minutes in my example). This will give time for the output station(s) to buffer up a sizeable amount of items - possibly enough for least effort to not have to be used, and should overall be more efficient in train usage. Better to have one half full train than 50 1/100th full trains.
Like I said, perhaps this isn't feasible or you have another solution in mind. You would be right to say that I could turn least effort off. But, I like the idea behind least effort, and would like to see it improved. You might also say that if your inputs match your outputs, none of this should be a problem. I would counter that, this is an unsound argument. To expect to always have inputs matching your outputs is a flawed expectation in a game like factorio where you are constantly trying to expand, and where trying to increase your red circuit output (for example - this happened to me) might mean having to increase several different production chains, which can take a lot of time. Time during which your trains are now running amock, delivering 20 red circuits at a time.
Still, love the mod, great work, I appreciate what you've done.
Just wanted to say, that this is a great mod, I have been thoroughly enjoying it, and it's definitively something I've been waiting a long time for.
That said, there are still a few minor issues with it. Specifically, I'm talking about least effort, which is something others have touched on. I appreciate the idea behind best effort, but, as others have mentioned, what ends up happening is you get consecutive orders for deliveries of minute quantities of items. Every train that doesn't have something better to do gets roped in, and even some trains that do have better things to do. On top of that, they end up clogging your rail infrastructure, because you've now got 10 trains which are waiting to each pick up 50 iron plates. One train would've sufficed, but instead there are 10, plus the other 10 that came before, and those that will come after. To an extent it is possible to get around this, by using a decider combinator that only outputs once there is a certain amount of items stored in the output station chests, but even this isn't perfect. In the time it takes a train to get there and take the items, the system will have time to call other trains to pick up marginal amounts of items.
You are doubtlessly aware of all this, so I'm not going to post all this without offering a solution. Perhaps you can think of a better solution, perhaps there's some reason why my solution won't work, but since I haven't seen it mentioned, here it is.
When using least effort, have a minimum time between deliveries for each item/resource. This could be a config-able option, with a default of say, 5 minutes. Essentially once the system sends out a delivery using least effort, it will create a 'timer' for that resource, and won't create a delivery for that resource based on least effort until the timer has expired (5 minutes in my example). This will give time for the output station(s) to buffer up a sizeable amount of items - possibly enough for least effort to not have to be used, and should overall be more efficient in train usage. Better to have one half full train than 50 1/100th full trains.
Like I said, perhaps this isn't feasible or you have another solution in mind. You would be right to say that I could turn least effort off. But, I like the idea behind least effort, and would like to see it improved. You might also say that if your inputs match your outputs, none of this should be a problem. I would counter that, this is an unsound argument. To expect to always have inputs matching your outputs is a flawed expectation in a game like factorio where you are constantly trying to expand, and where trying to increase your red circuit output (for example - this happened to me) might mean having to increase several different production chains, which can take a lot of time. Time during which your trains are now running amock, delivering 20 red circuits at a time.
Still, love the mod, great work, I appreciate what you've done.
Re: [Mod 0.14] Logistic Train Network 0.4.6
least effort, i use that mode in daily life
Jokes aside, I know best effort is far from where it should be. A few posts ago round robin came up as possible solution. I'm still working it.
Jokes aside, I know best effort is far from where it should be. A few posts ago round robin came up as possible solution. I'm still working it.
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.4.6
I really like the idea of this mod but on a tiny test setup I've come across a few issues.
The more serious issue I found is that it doesn't appear the provider stations care about a 'Maximum Train Length' signal, which can easily break a system unless all of your trains are the same length. Especially for double headed trains with dead end stations. If a provider station only has the capacity to load one carriage but 2 arrive then its probably blocking another rail line and / or hasn't come far enough into the station to have a path out again and gets stuck. The other issue is solvable with a decider combinator but just like train length it would be nice if the provider stations used the 'Minimum Delivery Size' variable so trains don't get assigned a pickup job of 50 items in an attempt to fill a 5k request.
I haven't used it yet but judging by the name I'm guessing 'Provider Priority' only applies to providers... Have you thought about implementing requester priority?
Other than that I love it. I'll just have to build a system around these limitations for now, but once you have things ironed out a little in the future I'd quite like to see a train being able to plan a route involving multiple pickups in order to fill a request.
The more serious issue I found is that it doesn't appear the provider stations care about a 'Maximum Train Length' signal, which can easily break a system unless all of your trains are the same length. Especially for double headed trains with dead end stations. If a provider station only has the capacity to load one carriage but 2 arrive then its probably blocking another rail line and / or hasn't come far enough into the station to have a path out again and gets stuck. The other issue is solvable with a decider combinator but just like train length it would be nice if the provider stations used the 'Minimum Delivery Size' variable so trains don't get assigned a pickup job of 50 items in an attempt to fill a 5k request.
I haven't used it yet but judging by the name I'm guessing 'Provider Priority' only applies to providers... Have you thought about implementing requester priority?
Other than that I love it. I'll just have to build a system around these limitations for now, but once you have things ironed out a little in the future I'd quite like to see a train being able to plan a route involving multiple pickups in order to fill a request.
Re: [Mod 0.14] Logistic Train Network 0.4.6
max Train Length works on Provider and Requester in any combination for me.The_Sane wrote:I really like the idea of this mod but on a tiny test setup I've come across a few issues.
The more serious issue I found is that it doesn't appear the provider stations care about a 'Maximum Train Length' signal, which can easily break a system unless all of your trains are the same length. Especially for double headed trains with dead end stations. If a provider station only has the capacity to load one carriage but 2 arrive then its probably blocking another rail line and / or hasn't come far enough into the station to have a path out again and gets stuck.
Set Use_Best_effort to false in config.The other issue is solvable with a decider combinator but just like train length it would be nice if the provider stations used the 'Minimum Delivery Size' variable so trains don't get assigned a pickup job of 50 items in an attempt to fill a 5k request.
Yes, Provider Priority mimics active provider chest in Logistic Network with much more granularity.I haven't used it yet but judging by the name I'm guessing 'Provider Priority' only applies to providers... Have you thought about implementing requester priority?
LTN's goal is to evenly distribute provided items. Requester Priority would break the current and planned logic for round robin.
Multi stop routes are not planned. They offer little value for exponential increase in complexity.Other than that I love it. I'll just have to build a system around these limitations for now, but once you have things ironed out a little in the future I'd quite like to see a train being able to plan a route involving multiple pickups in order to fill a request.
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.4.6
It works now... Earlier I tried several times in case I was doing something wrong, deleting the station and starting again in case I messed up the wiring, and I could get it to work on the requester fine. Combinator hooked up to the lamp with max length defined. Requester has a max length of 4, and provider a max length of 3 but if I put a 4 length train down it still sent it. I have no idea what changed since then, but I'm happy.Optera wrote:max Train Length works on Provider and Requester in any combination for me.
Oh, I missed that. Thanks.Optera wrote:Set Use_Best_effort to false in config.
Fair enough.Optera wrote:Multi stop routes are not planned. They offer little value for exponential increase in complexity.
Re: [Mod 0.14] Logistic Train Network 0.5.0
Hi, I finally finished combining the last 2 pages of feedback into version 0.5.0
- provided items are split evenly among requesters with Best Effort enabled
- added round robin handling, sending a train moves the request to the bottom of order list
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.5.0
Thank you for your endeavours, adding the "leave on inactivity" has thrown some issues, no longer am i aware of there being a problem, apart from trains arriving in the depot full of ore, and may be sent to a depot they shouldn't be.Optera wrote:Hi, I finally finished combining the last 2 pages of feedback into version 0.5.0Hopefully this will make Best Effort more useful and get rid of congestions.
- provided items are split evenly among requesters with Best Effort enabled
- added round robin handling, sending a train moves the request to the bottom of order list
this is why i asked if was possible to add a signal instead, then it can highlight the issue by a train being sat in the offending station and the player can figure out a work around, otherwise i am liking your latest update.
Re: [Mod 0.14] Logistic Train Network 0.5.0
Unless you use a mod to raise alerts on circuit conditions, having a signal for "stuck" trains seems pointless.nosferato wrote: Thank you for your endeavours, adding the "leave on inactivity" has thrown some issues, no longer am i aware of there being a problem, apart from trains arriving in the depot full of ore, and may be sent to a depot they shouldn't be.
this is why i asked if was possible to add a signal instead, then it can highlight the issue by a train being sat in the offending station and the player can figure out a work around, otherwise i am liking your latest update.
You can see train arrival/departures messages if you set log level to 3. It can be a bit spammy but helps finding problems a lot faster than a signal.
Trains will go to the same depot regardless if they are forced out by inactivity or un-loaded normally. They will always go to the "nearest" (passing the least amount of signals) free stop named "Depot.
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.5.0
You have my apologies, I guess it would be better just staying and blocking the station, then it'll highlight a problem, i guess there is no real fix for that problem except better rail designOptera wrote:Unless you use a mod to raise alerts on circuit conditions, having a signal for "stuck" trains seems pointless.nosferato wrote: Thank you for your endeavours, adding the "leave on inactivity" has thrown some issues, no longer am i aware of there being a problem, apart from trains arriving in the depot full of ore, and may be sent to a depot they shouldn't be.
this is why i asked if was possible to add a signal instead, then it can highlight the issue by a train being sat in the offending station and the player can figure out a work around, otherwise i am liking your latest update.
You can see train arrival/departures messages if you set log level to 3. It can be a bit spammy but helps finding problems a lot faster than a signal.
Trains will go to the same depot regardless if they are forced out by inactivity or un-loaded normally. They will always go to the "nearest" (passing the least amount of signals) free stop named "Depot.
Re: [Mod 0.14] Logistic Train Network 0.5.0
Blocking a station until player intervention just to highlight a possible problem feels like a bad design choice.nosferato wrote: You have my apologies, I guess it would be better just staying and blocking the station, then it'll highlight a problem, i guess there is no real fix for that problem except better rail design
If players don't fix it in time the delivery will time out, another train is sent to that station, that delivery will also time out, and so on until all trains wait at that bugged station.
Having trains move on if a station is bugged makes detecting bugged stations a bit harder, but in general is more tolerant to player errors.
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.5.0
It's a hard decision, right now i am not sure, i will play with it more and figure out what i would prefer. more input would be better, as everyone's play style is differentOptera wrote: Blocking a station until player intervention just to highlight a possible problem feels like a bad design choice.
If players don't fix it in time the delivery will time out, another train is sent to that station, that delivery will also time out, and so on until all trains wait at that bugged station.
Having trains move on if a station is bugged makes detecting bugged stations a bit harder, but in general is more tolerant to player errors.
- JackTheHat
- Burner Inserter
- Posts: 14
- Joined: Sat Mar 02, 2013 5:55 pm
- Contact:
Re: [Mod 0.14] Logistic Train Network 0.5.0
It seems like there is a need for minimum train size at the stations/depots?
Right now if I set a depot up to fuel and unload excess for a 8 wagon train, which wont work for a 3 wagon train the 3 wagon trains will still use that depot. Also my smaller trains will attempt the to get the big deliveries that I only want to use the bigger trains for.
Does this make sense?
Right now if I set a depot up to fuel and unload excess for a 8 wagon train, which wont work for a 3 wagon train the 3 wagon trains will still use that depot. Also my smaller trains will attempt the to get the big deliveries that I only want to use the bigger trains for.
Does this make sense?
Re: [Mod 0.14] Logistic Train Network 0.5.0
Stupid question:
I know some of the code. And a lot of code is just handling the train sizes, liquid trains etc.
I think, that could be simplified a lot if the whole pseudointelligence is removed from code and instead put into enabling different "train networks".
Let's say we need 3 networks, one for supply, one for liquids and one for really long trains.
So we would need (minimum) 3 train-stops: Depot, Depot #2 and Depot #3.
The same goes with any other logistic train stop: an added "#2" or "#3" means: this belongs to logistic network 2 or 3 and only trains from Depot 2 or 3 will be ordered.
Forget about wrong trains at stops, forget about complicated refueling, forget about setting constants to limit the length of train....
PS: possible improvement is that instead of adding a number you could add also a name after the #. "Depot #Fuel" would then be also a valid name for a logistic network.
I know some of the code. And a lot of code is just handling the train sizes, liquid trains etc.
I think, that could be simplified a lot if the whole pseudointelligence is removed from code and instead put into enabling different "train networks".
Let's say we need 3 networks, one for supply, one for liquids and one for really long trains.
So we would need (minimum) 3 train-stops: Depot, Depot #2 and Depot #3.
The same goes with any other logistic train stop: an added "#2" or "#3" means: this belongs to logistic network 2 or 3 and only trains from Depot 2 or 3 will be ordered.
Forget about wrong trains at stops, forget about complicated refueling, forget about setting constants to limit the length of train....
PS: possible improvement is that instead of adding a number you could add also a name after the #. "Depot #Fuel" would then be also a valid name for a logistic network.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: [Mod 0.14] Logistic Train Network 0.5.0
To clarify, you want a way to set up depots for certain train lengths for easier refueling?JackTheHat wrote:It seems like there is a need for minimum train size at the stations/depots?
Right now if I set a depot up to fuel and unload excess for a 8 wagon train, which wont work for a 3 wagon train the 3 wagon trains will still use that depot. Also my smaller trains will attempt the to get the big deliveries that I only want to use the bigger trains for.
Does this make sense?
Making Depots accept names like "Depot #L-CCC" would be simple enough. What bothers me about this solution is how it's forcing players to use certain names instead of sending a signal to depots. For this same reason setting train length for stations is done with a signal instead of a tag in the station name.
I know the logic needed to calculate where inserters need to work to refuel a random train from the Logistic Train Stop's train composition signals is very complex.
The only alternative way of outputting train composition that comes to my mind would be to use binary encoded signals, but apart from myself and a few developers no one would be able to utilize such an encoding. Also it'd only work up to 31 carriages
L-CCC: Loco = b1 = 1, Wagon = b1110 = 14
2L-6C-2L: Loco = b11 0000 0011 = 771, Wagon = b00 1111 1100 = 252
demo of binary encoding according to this thread viewtopic.php?f=8&t=20118 Please let me know if you have an idea how to output train composition in a way that allows for a simplistic refuel, un-/loading logic.
I'm using my Inventory Sensor in my test scenario with multiple train sizes. The most simplistic version would switch the fuel inserter on when it detects a locomotive. I've added a check so it wont load fuel above 140 coal so the inserter wont hold coal in its hand.
No idea how you count "a lot".ssilk wrote:Stupid question:
I know some of the code. And a lot of code is just handling the train sizes, liquid trains etc.
I think, that could be simplified a lot if the whole pseudointelligence is removed from code and instead put into enabling different "train networks".
Let's say we need 3 networks, one for supply, one for liquids and one for really long trains.
So we would need (minimum) 3 train-stops: Depot, Depot #2 and Depot #3.
The same goes with any other logistic train stop: an added "#2" or "#3" means: this belongs to logistic network 2 or 3 and only trains from Depot 2 or 3 will be ordered.
Forget about wrong trains at stops, forget about complicated refueling, forget about setting constants to limit the length of train....
PS: possible improvement is that instead of adding a number you could add also a name after the #. "Depot #Fuel" would then be also a valid name for a logistic network.
From the ~1100 lines liquids need maybe 20 lines of code if you don't count type=="fluid" and RailTanker installed checks. Train length has even less lines.
Most of the code is either keeping track of active deliveries and item counts per station or creation of new orders (finding provider stations and suitable trains, sort and merge deliveries,...)
I will not implement multiple networks. Here's why:
- no time for excessive rewriting of such a big mod
- in general I see little gain for huge increase in update time and code complexity
- If I did simple separated networks the next request probably will be to have stations in multiple networks driving complexity through the roof
Last edited by Optera on Mon Dec 19, 2016 7:34 pm, edited 2 times in total.
My Mods: mods.factorio.com
- JackTheHat
- Burner Inserter
- Posts: 14
- Joined: Sat Mar 02, 2013 5:55 pm
- Contact:
Re: [Mod 0.14] Logistic Train Network 0.5.0
Is it possible to have a signal for minimum train length in the same you way have a signal for maximum train length? Forgive my ignorance I don't a much about modding in Factorio just sharing a thought I had.Optera wrote:To clarify, you want a way to set up depots for certain train lengths for easier refueling?JackTheHat wrote:snip
Making Depots accept names like "Depot #L-CCC" would be simple enough. What bothers me about this solution is how it's forcing players to use certain names instead of sending a signal to depots. For this same reason setting train length for stations is done with a signal instead of a tag in the station name.
The mod is working great otherwise. On a side not I did have trouble trying to setup a delivery system for small quantities of logistic items for outposts, repair packs, replacement items etc. Attempting to override the default minimum delivery size to a lower number generated a lot of deliveries I can see why you set it to 1000. I settled for just delivering more than a needed.
Re: [Mod 0.14] Logistic Train Network 0.5.0
For normal stations i don't really see a point as it's implicitly done through minimum Delivery Size anyways.JackTheHat wrote: Is it possible to have a signal for minimum train length in the same you way have a signal for maximum train length? Forgive my ignorance I don't a much about modding in Factorio just sharing a thought I had.
The mod is working great otherwise. On a side not I did have trouble trying to setup a delivery system for small quantities of logistic items for outposts, repair packs, replacement items etc. Attempting to override the default minimum delivery size to a lower number generated a lot of deliveries I can see why you set it to 1000. I settled for just delivering more than a needed.
For depots they would need unique names for each train length regardless, as I can't order trains to go to a certain stop id, only to a non unique name. Hance my focus on making train composition signals more useful to enable creation of one station able to service any train.
Sounds like you changed min_delivery_size in the config, that's global. You can override min_delivery_size for a signle station by sending the Minimum Delivery signal.
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.5.0
A lot is more than a bit.Optera wrote:No idea how you count "a lot".
Well, I don't count code lines.From the ~1100 lines liquids need maybe 20 lines of code if you don't count type=="fluid" and RailTanker installed checks. Train length has even less lines.
With such a change the player is now responsible to make networks of trains, that are equally equipped. And an equal equipped network means, that you don't need to care so much: Next free train gets next order. See logistic robots. I'm not sure, but some code in the order-processor and dispatcher is then not longer needed, cause the optimization is done by the player just by assigning useful number of trains to useful fitting network-tasks.
IMHO the player has then much more possibiliies to optimize stuff. And for the mod itself a careless scheduling; less CPU, you don't need to care about train size, no sorting for the best train, different algorithms... Removes lot's of code, but - of course - introduces also some code, but in most cases only another "level" (sub-table) of networks.Most of the code is either keeping track of active deliveries and item counts per station or creation of new orders (finding provider stations and suitable trains, sort and merge deliveries,...)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: [Mod 0.14] Logistic Train Network 0.5.0
It locks trains into certain networks, making balancing the number of trains a lot harder.ssilk wrote: With such a change the player is now responsible to make networks of trains, that are equally equipped. And an equal equipped network means, that you don't need to care so much: Next free train gets next order. See logistic robots. I'm not sure, but some code in the order-processor and dispatcher is then not longer needed, cause the optimization is done by the player just by assigning useful number of trains to useful fitting network-tasks.
I don't see how it'd make any code obsolete.IMHO the player has then much more possibiliies to optimize stuff. And for the mod itself a careless scheduling; less CPU, you don't need to care about train size, no sorting for the best train, different algorithms... Removes lot's of code, but - of course - introduces also some code, but in most cases only another "level" (sub-table) of networks.Most of the code is either keeping track of active deliveries and item counts per station or creation of new orders (finding provider stations and suitable trains, sort and merge deliveries,...)
Handling Orders in round robin has become the solution to a lot of problems with earlier, simpler builds. Removing it would once again make trains rush to a single order until it's fulfilled, clogging stations in the process, before proceeding to the next.
If I remove handling of different train sizes and cargo type, how should it react if players send different trains into one network?
My Mods: mods.factorio.com
Re: [Mod 0.14] Logistic Train Network 0.5.0
Depends on standpoint and taste.Optera wrote:It locks trains into certain networks, making balancing the number of trains a lot harder.
Simple example of what I think is more near to reality:
The station "My sister" orders a book.
And the order is sent to the "Amazon Logistic network". And after short while, the "Amazon Central Europe" station will bring the order with a very small, one L-C-L train.
But "Amazon Central Europe" needs to deliver thousands books per day. So, when books go out, it sends a request to the "Book-Factory Network" to send more books.
That are delivered in a much bigger train, LL-CCCC-LL
[With "more near to reality" I mean in that case, that if you introduce logistics, you need also to think about some kind of "storage", which is able to handle large incomming trains and many small (and vice versa...). And such things. I mean: think to an express company, they bring things from a customer to a storage (and another storage) and then to the customer (in most cases) and not directly from a customer to a customer. Which makes much sense with growing distances. Which we have in Factorio.]
It makes no sense to mix both networks, cause it makes balancing of trains easier, cause the number of possibilities you need to care as a player is much, much lower. And that increases the number of possibilities for the player.
Simply: Not. It's the players task to make that work. It's not more work for the player, cause the setup is a lot easier.If I remove handling of different train sizes and cargo type, how should it react if players send different trains into one network?
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
- JackTheHat
- Burner Inserter
- Posts: 14
- Joined: Sat Mar 02, 2013 5:55 pm
- Contact:
Re: [Mod 0.14] Logistic Train Network 0.5.0
Ah, I understand why it is the way it is now. Thanks for explaining. I guess my task is designing a depot that can handle all sizes of train. This mod is literally what I have been wanting for a long time as I always liked the idea of having a pool of trains that go where they needed rather than trains specific to each resource type.Optera wrote:For normal stations i don't really see a point as it's implicitly done through minimum Delivery Size anyways.JackTheHat wrote: snip
For depots they would need unique names for each train length regardless, as I can't order trains to go to a certain stop id, only to a non unique name. Hance my focus on making train composition signals more useful to enable creation of one station able to service any train.
Sounds like you changed min_delivery_size in the config, that's global. You can override min_delivery_size for a signle station by sending the Minimum Delivery signal.