Like a lot of things with Trainz, the underlying AI engine, meaning code, needs a bit more than a lick and a promise sprucing up. Like a lot of things in Trainz, we're expecting a lot of older assets, in this case driver commands, triggered-features, and other nifty things, to work in new code even though they were created more than a decade ago. Many of these commands and things never worked particularly well even when they were first created and now they've been thrown on to code that's further away from what they were originally written for. In all intent and purposes, it's amazing anything works this well at all.
In the end, I do things simply. I find, a liberal splattering of track marks in critical places, such as yards and other places with lots of junctions, does a demonstrable job of keeping the computer-driven trains happy. I have also discovered that after more than a decade of Trainzing, going on two decades of Trainzing, that I can anticipate what the AI will do while I design my routes and plan accordingly. I have also found signaling logically, not always prototypically, works as well, and sometimes having too many signals can get the AI completely frustrated. One of those places where the AI has a snit is a yard. Placing signals with the heads facing in towards the yard tracks, will definitely cause the AI to stop and think about each track. I noticed that this is related to the newer signal code introduced in TANE SP2 when the data model changed to what we have today. After dawn lit up over Marblehead, (Yes, Marblehead is are real place in Massachusetts near Salem, and it's on the Atlantic Ocean), I remedied the stalling by removing the entrance signals, and the AI switcher is happy again.
All and all, I have found that, outside of outright coding problems, that a good number of our AI problems are self-inflicted by us. There are many occasions, when I've blamed the AI for doing things that I did in fact tell them to do like switch tracks because I did in fact send them to the wrong track marks! This doesn't say that there aren't coding problems either, and Tony has said that the underlying AI code needs to be rewritten. The problem, however, lies in two areas here. First changes to the code will break everything we already have, and second we have time, money, and budgets. This latter issue drives a lot of what businesses do, and even though we have "stupid AI drivers", at least things are still working for now. We have to just anticipate what they may do and bring out the band-aides and bailing wire when needed, and wait patiently until N3V comes up with a better AI engine that will hopefully solve our problem.
So in the end, to answer Jon's question. The AI really isn't much different than it was in TS12. TRS19 has smoother graphics and better running than even TANE had, and TANE was lightyears faster and much better than TS12 was. Like all computer-related stuff, we're forever chasing that perfect combination hardware, software, and reality to give us the perfect train simulator, but as pware said that is impossible even with today's consumer hardware and operating systems. Even if we could run one of those 256 core CPUs with 256 PB memory, super-size SSDs, and multiple high end video cards, we may have a super system, but Trainz or any other game would never run on it because the OS that supports our programs doesn't run on hardware like that.