Possibly 900X 5400X as long as you can cut down the rendering (and the question then will be how frequently you should or what events warrant an update) That is if most of your time in the game is spent waiting for animations to finish before calculating the next move (even when the units are running asynchonusly to each other).
If you have heavyweight AI taking up the majority of the processing time then you may be stuck if you cannot abstract the solutions the AI finds and uses well enough to preserve a valid simulation.
Oh and your optimization attempts at a low level - I assume you have already done more general optimiztions like streamlining object create/destruct functions (particularly use of object pools to get rid of the horrendous alloc/dealloc processing costs).....
Lazy evaluations ??? Task queues to get rid of polling loops?? Lockless methods and/or micro fibers ??