TL;DRTrains should try to reserve signals ahead of their breaking point so that fast moving trains take precedence over slow moving or stationary trains.
What ?Currently when a train drives it reserves just enough signals so that it can break before rolling over the next one. This lets slow moving or stationary trains cut ahead into the next segment and then the train has to break or even come to a stop to let the other train clear the next segment. All the speed painfully build up over time is lost. On busy lines this has a cascade effect because it slows down the next train too.
What I suggest is that the train tries to reserves more than strictly needed so as to prevent getting stopped but at the same time not care if the reservation fails. Only break when the breaking point dictates like now. This would prevent other trains from cutting right in front of other trains.
The amount of how much to reserve should depend on 3 factors:
1) The acceleration of the train.
A LC train can stop at a signal and then speed off once again when it gets green without problems. A LCCCCCCCCCCCCCCCC trains getting stopped at a signal takes forever to get moving again and would block the junction for that long. So it's better to have the LC train stop and let the LCCCCCCCCCCCCCCCC keep it's speed. This should be an inverse factor. The lower the acceleration the more important it is to keep the speed.
2) The current speed
Just like the breaking point moves forward as the train gains speed the reservation point should to. The faster a train is the more momentum would be lost by breaking. Combining 1+2 gives the cost for gaining back all the speed that would be lost if the train had to stop.
3) A factor in the prototype
This would allow mods to tune the reservation point to make different locomotives. There could be a long distance hauler that reserves 150% or a VIP Locomotive that reserves 200% for player transportation or critical goods (like coal for the steam engines).
I think the reservation factor should be additive. That way an LLCC train has precedence over a LC train while acceleration is the same for both. Building a train with many locomotives shows that the acceleration for that train is important to the player. Think of it at the cost in fuel it takes to accelerate back to speed again. Every second lost on a LLCC train costs twice as much as on a LC train in fuel.
I believe signals have a list of waiting trains so the oldest train gets a chance to reserve the signal next. Maybe moving trains should have priority there. On the other hand that might lead to an unending stream of trains going one way across a junction without ever letting the other ways cut in. So maybe not. Maybe reserving ahead of the breaking point is enough of an advantage already. Something to try out. Or a priority based on the time each train is waiting vs. how costly breaking is for a moving train and how close the breaking point is. The smaller the gaps between and the faster moving the trains the longer other trains must wait before cutting in.
Why ?I love large rail setups. Trains going every which way, accelerating and flashing across long distances. The busier the better. Train lengths greatly depend on the throughput needed for each good and the distances to cover. For example uranium only needs an LC train that's barely filled at all usually. Iron ore trains on the other hand are huge. Lots of iron ore to transport and from much further away. Still, when the uranium train leaves it's station it often cuts right in front of one of the behemoth trains making them break instead of waiting a few extra seconds and cutting in behind it. And that can happen at any junction. It stops all the fast moving trains going straight through to cut across instead of having to wait for a break in the traffic where it could cut across more naturally.
Think about driving a car. When you want to take a left turn you don't cut across the other lane when the approaching car can just about break to not crash into you. Instead you wait for a larger gap in the traffic to cut across. I suggest trains should behave the same and the extra reservation distance as a way to implement it.
Currently it would take a lot of circuit wires and combinators to program signals to favor fast moving trains over slow or stationary trains and probably go wrong the first 50 tries. It also wouldn't allow for different locomotives so the player can build trains that have a higher importance.