Is it possible to simplify your rendering - as that might now be eating significant time in the speed up mode (to get to your 5400X)
Is the game already threaded with the graphics on a seperate thread and working on a once (interval) copied snapshot of the game situation so the simulation only need to wait briefly for that atomic copy (should be fast and maybe only copy the render related data if that is faster)
It sounds like you are running exactly the same simulation calculations which will result in exactly the same results as if it was run at normal speed (and it doesnt sound like its abstractable to simplify the simulation calculations)
What kind of sensory scanning do your objects do (adjacents only ?? a box search ? something more comples)
How is the edge of map endcase handled. There are some tricks to get rid of the XY tests needed when doing object sensor scanning which can simplify the objects calculation some. (I had a guy doing A* change to have a boundry edge of cell blocked status to eliminate the x<0 x>maxx y<0 y>maxy that had to be tested on all the adjacency tests and for a box check it is setting the XY loop limits once instead of inside the loops
Depending on the complexity of the behaviors here - the old method called the Big Switch inside the main game turn object loop which flattens out
the program alot can eliminate a great deal of processing overhead. Of course it depends on how your simulation is run whether that would actually be multiple processing loops per turn (sensor+decision phase, action phase, action resolution phase).
But if you dont have multiturn interactions bewteen objects (and have resolution of all actions in the current turn) the logic can usually fit and not be too obscured in one loop routine employing the Big Switch