libgdx – How to Implement Effective Collision Avoidance in 100 Enemies

I'm developing a libgdx game. It's a shooter up and down and I'm trying to make a good AI. I've tried to implement A * from libgdx's library and it works well, but when I have a lot of enemies, it starts to slow down the game. J & I Have tried to implement a Pathfinding Manager to handle threads and path requests, but I have trouble implementing it and continue to slow down.

Plus, I know that A * is a little excessive for my game, which is mostly a big open area (see the photo of my card)

I have therefore tried to implement this collision avoidance. Driving Behaviors: Collision Avoidance, but it is not right if the player is inside the houses.

My question is: is there a type of algorithm that is perfectly suited to what I ask? There are a lot of games with hundreds of enemies that will kill you, so I bet there's a way, but I can not know it

pd: If in doubt, I will provide more information if necessary