Page 1 of 1

Smart Trains - looking for testers

Posted: Thu Jun 21, 2018 2:48 pm
by ranzolger
See: AID - Automatic Item Delivery



i was thinking about train logistic in (vanilla-) factorio and searched for bluprints. there are too few, or im just blind. so i built one myself and now i'm looking for someone willing to test it. (theres on i find quite interesting:

it took me quite some time, as i have no knowledge of circuitry and stuff like that. this complete thing is theoretical. yeah, i've used some test-setups, but i haven't tested the general functionality.

i wanted to have intelligent trains. delivering stuff where it is needed without me doing something, except building the trains. there are easyer ways by setting item slots in the train-wagons... but that is annoying af and limited by item slots in the train. so i tried to build an autonomic version. and here we go:


i wanted to establish a train network, which supplys independent/remote areas like mining outposts or wall segments with materials. now it should be able to supply even factorys. the trains are used to connect independent robot logistic networks with each other.
so factory C can be automatically supplied with items produced in factory A, even when their robot networks aren't connected. i think you get the concept. especially for walls or mining outposts.

that is what it should work like:

every request you place will be fed up in the global train network (red wire). all stations have to be connected with (at least) the red wire (green wire for remote requests). all stations within the train network are switched off by default (so trains aren't moving around, when there's nothing to do) but will turn on as soon they are requesting something or can supply a request.

the trains should have all logistic-stations in their station list. alternatively you can name all stations with the same name (i don't know if this will work). wait condition should be set to 'inactive for 10s' or so. when all stations in their list are inactive, trains will stop moving around.

as soon as you make a request at a station this station will turn on. in addition, all other stations which can supply this request will turn on, so the trains start moving around. they will be filled by the supplying station(s) with the requested items and unloaded at the requesting station. as soon the request is fulfilled the requesting and supplying stations will turn off.

every station reads the content of their (local) robot logistic network, so they know if they can fullfill a global request. trains may carry excessive items. they will be unloaded as soon as they stop at a station which supplys those items.

this system should work perfectly with only one train. i think it is possible to work with multiple trains, but there will be an issue i'll discuss later. the standard setup for the trains is (atm): 2:2:2 (2 lokomotives, 2 cargo waggons, 2 tank waggons). this may be subject to change.

this system should work for items quite fine. liquids may be a problem, see below. more detailed explanation on how to setup the station, see below.

there are a few problems i have no idea how to handle / may become issues:

the biggest issue is the following:
as soon a station requests something, it will feed the request in the global train network. there should be at least two station which will turn on (requesting and at least one providing station). at this moment all trains will start moving around and load the requested items. the request will stay in the global train network until it is fullfilled. but until this is achieved, there might be a couple of trains filled with those items. as the request is fullfilled by the first train that arrives at the requesting station, all other trains will keep those items in their wagons (those will be unloaded with additional requests or stoping at the right station [as loaded but unrequested items will be unloaded at stations which supply those items]). this is one of the main issues this system will encounter (especially with multiple trains).

this problem can be avoided by using only on train. maybe i will create a single 'always on' station to cope with this problem. -> to do

im quite sure the liquids are buggy right now. the request/supply signals should work but the problem could be in the amounts that are transportet. lets say station 'B' request crude oil (<5K in tanks), the train will be loaded with 50K crude oil at a supplying station. when it reaches the requesting station and this station doesn't use crude oil at the moment (theres some crude oil left in the requesting tanks) the train cannot unload all its crude oil. there's no way to unload leftovers, exept by requests atm. there might be a simmilar isse like the issue above (multiple trains loading a requested liquid). it might be possible to handle this with the 'always on' station.

there might be problems with playertrash/leftovers. lets say you are in factory A. and dispose an item to a storage chest, this item will become available to the local robot network. if this item is requested in factory B, the station of factory A will turn on, even when this product isn't produced here (just because it is available in the local robot network). it might get worse, because trains will unload excessive items they hold to stations which offer those items. so a train may unload an item type (you dropped in a storage chest) even when it's not produced/supplyed by this station.

how to set up

feel free to compliment me on my impressive paint skills and simplified english skillz.
i'd love to hear comments, recommendations and other tips...

i will try to work on this further. feel free to modify, use and repost this. credit would be nice ;-)


to do:
unloading of not reqested/left over liquids
belt based version
permanent on sorting station
storage chest issue

Re: Smart Trains - looking for testers

Posted: Fri Jun 22, 2018 4:27 pm
by driver
I tried something similar recently (in combination with the coupler-mod, but much more simple) , and with some major differences - only one provider station for one product or ressource and multiple request stations, which can run out of ressources at the same time and a very simple system which only sends virtual signals if a request station is running out of ressources based on the symbols for coal, iron, copper, steel etc. on the red wire "globally".
All provider/request stations have at least one decider combinator, which reads the global signals on the red wire and turns on a trainstop or other things locally over the green wire.
Dynamic trainstops (which can be turned on or off and can work like a "dynamic" schedule) are an interesting feature but usually they can only be used by one train and not shared with other trains (with a few exeptions).
I don't really want to apply for the job as a tester ;) but may I asked you a question:
How can you use virtual signals which are based on the same symbol (like the symbols for coal, iron ... or your stations 'Q'1 to 'Q'#) by adding unique numbers? They get summed up on the wire (like the contents of chests), which makes them unreadable? Example: Station Q3 and station Q4: the red or green wire summes it up to Q7.

Re: Smart Trains - looking for testers

Posted: Sat Jun 23, 2018 12:55 pm
by ranzolger
i see your point..

maybe its not clear enough, thanks for pointing that out ;-)

the 'Q' signal is is exclusively for remote requests. the remote requests use the global green wire, while the 'regular' requests use the global red wire. 'Q' is used to indentify the station you want to set the remote request to. so the signal the global green wire transmits will be fed into the global red wire at the station it was sent to (identified by the signal 'Q'#). this is why it can cause serious problems when you set more than one remote request (because it will sum up the 'Q's and send the requested items to another station).

you are in factory C ('Q'3). but in factory F ('Q'6) there's missing a specific item, let's say 'laser turrets', and you forgot to set a request at factory Fs CCs. you can go to your nearest station and use the remote requester (set signals 'Q'6 and 'laser turrets'#). with this setting the station of factory F will activate and feed a request ('laser turrets'#) to the global red wire, so stations which offer 'laser turrets' will become active as well. trains will start moving around to fullfill the request. with all of that the station of factory C has nothing to do, it will stay off all the time (exept it offers 'laser turrets').

the other thing thing with requested amounts over the red wire:

all requests from all the stations are summed up. so if you request 3 inserters at 'station A' and 15 inserters at 'station M' the red wire will read 18 inserters. as only the requesting and supplying stations will activate, the train will go to those three stations. it will load 18 inserters at the providing station and unload 3 inserters at 'station A' and 15 at 'station M'. not necessary in that order.

but as soon the train unloads 3 inserters at 'station A', 'station A' will become inactive, after unloading 15 inserters at 'station M', this station will become inactive too. as there are no requests active all former supplying stations will become inactive aswell.

i hope that makes sense

and as i mentioned before... you can use this system for item delivery (with one train) without bigger problems. it's meant to supply the factorys with irregular needed items (like walls, turrets and stuff you need for buildung).