As someone also making a top-down shooter, I’ve had the exact same issue. I’m still stumped over it and, as spring break’s over, out of time to think about it. I can’t give solutions, but I have thought that might be useful.
You could use “separate two objects”, but that would make their movement very jittery. They would run into each other, then bounce around. The current plan might be to flick around and apply a “mild” force when in collision rather than a sharp separation. But that’s hard to figure out as well.
It might help to further increase the time needed to update AI. Pathfinding seems to me as resource intensive, and 0.2 seconds doesn’t seem as that much time.
For the advanced AI, I would first think of using the same technique as in F.E.A.R. Putting a bunch of flags and triggers everywhere. Have zombie beeline towards house entrance, then change mode of operation to “house searching” and enable pathfinding (this might help with lag, too) Put a flag in every room and give each one name. Then have a list of names in the zombie. If the flag was checked and “move towards”-ed don’t consider it, otherwise randomly pick one. Perhaps only consider a flag if you can raycast towards it without hitting any walls. You can simulate vision with raycasting or simulate a cone of vision with either another object or a check of, say “if angle between zombie and human <30 and >-30”.
Anyways, though I doubt I’m helpful, I wish you good luck with your game, if found pls send clustering solution, and send events thx.