An Adaptive Load Balancing Middleware for Distributed Simulation