AI Dispatcher doesn't realize train length
#1
Posted 25 December 2013 - 01:54 PM
I still like the OR dispatching system way better than MSTS, but this is one "quirk" that probably merits some attention. Thanks.
#2
Posted 25 December 2013 - 04:48 PM
The solution is not to create a train too long for the sidings...
I would, of course, defer to Rob, who does the signal programming, I believe it would be prohibitively difficult to program into the system to compensate for train lengths and siding lengths. I'm not even sure where the information would come from for siding lengths.
In addition, what if an AI train was spawned beyond a point where there was a siding that would hold it? Or if there weren't a siding long enough for either train on the route?
There are things that realistically can't be programmed to avoid, and this is probably one of them...
I can tell you, however, having been in a real life CTC center for the old Southern Pacific, it is one of the things that has to be planned for by flesh and blood dispatchers... In other words, the activity creator.
Robert
#3
Posted 25 December 2013 - 05:20 PM
Solution: Don't create trains too long for your shortest siding on the target route.
#4
Posted 25 December 2013 - 08:21 PM
Coonskin, on 25 December 2013 - 05:20 PM, said:
Solution: Don't create trains too long for your shortest siding on the target route.
Sorry, folks, but having trains longer than sidings is a way of life in real world railroading. It's the dispatcher's job to choreograph meets that that accommodate that reality while minimally delaying trains. I should know, I dispatch trains in real life. As for the programming complexity for the AI dispatcher, I'm certain that it's complicated, but MSTS seems to have at least some of that logic in its dinosaur-old programming.
Let me step back and explain my thinking. Let's say you have a route that has sidings that are from 50 cars to 120 cars in length. The player train is 105 cars long. One of the opposing trains is 70 cars long. Now, one of the neat things about OR is that the AI Dispatcher is pretty dynamic. For example, if the engineer of the player train takes switches into manual operation, he effectively "gives back" his authority to the AI dispatcher and the AI Dispatcher recalculates traffic accordingly. Unlike MSTS, where lots of activities have to be played on a very precise schedule to avoid standoffs, etc., OR gives some flexibility. So, in my example, no matter what speed the player train is operating over its path, it has to make a meet with the 70 car train at a siding that is at least 70 cars long, otherwise--just as it is in real life, the trains would deadlock at a siding too short for either train. Yes, there could be a way to do a "saw-by" meet, but that would involve taking the switches to manual operation and allowing couplings and movements to be made with the player train coupling to parts of the AI train--messy. Saw-bys are a train crew's and dispatcher's nightmare in real life. In real world railroading, the dispatcher would plan a meet for the trains at a siding that would at least accommodate the shorter of the two trains. One could "hard-code" such a meet in OR, but if the timing was off the AI Dispatcher might give the first train to the siding a green signal that would lead to a deadlock at a shorter siding farther down the line. There should be a logical calculation that could be made in the sim. The train length can be calculated (ConBuilder does it) and I would think that the siding length could also be calculated. From that information, the AI dispatcher would have the digital information to "know" that a passing path on a siding too short for either train is not a feasible place to place a meet. Just like a real world dispatcher like me would.
Just some thoughts.
#5
Posted 26 December 2013 - 01:47 AM
railguy, on 25 December 2013 - 08:21 PM, said:
Being British and not really used to single-track lines, this is all new to me.
On the web, I found a simple set of diagrams explaining the double saw-bye and even a 4 minute video on YouTube demonstrating it.
Very neat.
#6
Posted 26 December 2013 - 02:56 AM
Cheers, Markus
#7
Posted 26 December 2013 - 03:52 AM
Saw-by's and double saw-by's may be to far out there, programing wise, for such a hobby-oriented game.
#8
Posted 26 December 2013 - 04:23 AM
Anyway, just my two cents (inflation not yet added) ;)
Cheers, Markus
#9
Posted 26 December 2013 - 04:30 AM
It would need to know the length of every train (AIs and Player) in feet, not number of cars. This could probably be calculated from the SIZE of each Loco & Car.
It would also need to know the usable length of every siding on the route. I'm unsure if this can be provided by the route files, or whether this would need to be entered by the User.
Given that information, OR should be able to determine which siding(s) will accommodate the Player's Train and the AI Train(s), and setup the meets accordingly, given the programmed paths of the trains. :)
Now let's throw OR a curveball; the Player's train picks up 10 cars en route and is now 500 feet longer and will not fit in some sidings!! Now OR must constantly update train length and the dispatcher must recalculate the meets to avoid the dreaded stalemate.
So, on a simple level it might work; but add-in the "what ifs" and it gets messy in a hurry. ;)
One of our favorite expressions at work is: "Just because you can, doesn't mean you should"
#10
Posted 26 December 2013 - 06:38 AM
Though such shuntings and operations might be difficult for AI to execute... First thing first is that the AI trains should be able to uncouple or couple wagons/cars which I guess they can't yet...