Police State: Easy to implement, but if I implement it with the current AI, then you will be able to simply lock the AI down in the Police State since it doesn't know how to visit Time IV. To allow him to visit Time IV means both updating every Time IV zone that provides a choice to handle the AI being there, and also having the AI know when it's a good idea to go to Time IV in the first place.
Obv. handling a visit to Time IV requires specific code for each Zone that has decisions.
To decide whether or not to go there, that's just the basic better algorithm for picking where to go - you make a copy of the game, simulate turns for each option, calculate numbers for the resulting board states, and pick the move that produced the best number. Time IV isn't an exception or anything here, it takes no extra code (beyond the code needed for handling visits to Time IV). This algorithm is pretty simple. The only tricky part is dealing with drawn cards that can't be known (since that would be an unfair advantage) but which are used as if known (such as due to Alien Contact and Age of Toys). Possibly you just define some new cards that are only used by the simulation and only in these cases (so, simulated Age of Toys always gives you a choice between +$12 and +$12).
Anyway I will type something up about the board state evaluation.
Industrial Revolution: Sounds easy, doesn't it? But it's a programming nightmare. This card breaks the Lose Track rule. After you've played a card, who knows where it is. In the discard? In play? Back in your hand? Industrial Revolution simply can't find the card to return it to your hand; it doesn't know where the card is; it doesn't even know what card to look for. All it knows is that some card was played. I may have to update every single player card to handle what to do when it is played from Industrial Revolution.
In almost all situations there are only three places the card can be (play, top of discard, hand). The only exception is if you force a shuffle after the card resolves but before the if-ruling part resolves, which could happen due to Gang of Pickpockets. I feel like, you can pass on faithfully simulating that situation. It's pretty rare.
In practice everyone is treating it as an "instead" - they obv. aren't moving the card to the discard pile and then picking it up. You could just treat it that way. A played card by default goes to discard or play; Bag of Loot goes to hand instead; and if played via Industrial Revolution's ability and they rule there at the moment we are considering this, they pick hand or not (not then meaning discard/play/hand as normal). So, you just track whether the play was via Industrial Revolution or not, and then use that information to help determine the card destination when ready to move it.
[Obv. Industrial Revolution has no effect on cards played there that aren't via its ability (such as via playing Trinket there).]
Age of Cults: Probably not as hard as it sounds; I'll probably do this next, then move on to Donald's "smart History changing" AI heuristic.
Here you just use the same decision algorithm as for discarding, only, put the cards into an array and then dole them back out, skipping the empty slots. Obv. for good play you want to avoid passing someone a game-winning scoring ratio late in the game, but that could be on a list for someday.