My most complex train system had every train carry a single item type, and a large central trainyard. trains won't leave without an active destination. so all of the destinations for dropping off a type had the same name, and similarly the pick ups and would be disabled by circuits if their dropoffs were more than a quarter or so full. so if something needed green electronics, it would activate its DropOffGreenElectronics, the train would leave the yard, or sometimes 2-3 as at the time I didn't have any way of limiting it and one train wasn't enough to service all of the delivery points with my single car trains. the thundering herd problem[1] was real. the first train would get there, rest would go home. everything refueled at the home terminal, which had a stop for the coal train on it. each train had (dropoff(X) -> pickup(X) -> rest(X)) for their instructions. it worked pretty well.