How should I optimize the use of 1000s of AIs?

Unfortunately this is what separates the Professionals from the amateurs. Best Advice I can give you, is figure it out. But the bottom line is Garbage collectors are not a scalable technology. unreal was never intended to have that much going on. If this is a multiplayer app, then you are also wanting to send those 1000’s of changes to each client. Since the bandwidth limit as around 50kb / second that gives you around 50 bytes per ai per second. divide that by 30, and you get 1.6 bytes per frame. Making it impossible. So you have to reduce the amount of information, hack in some way to update 1000’s of npc’s, that is not an unreal way. And that means you will likely not find a solution. Nobody who has done this is just going to open their depot and let you have the magic that makes their stuff work. Good Luck…