Adaptive Swarm Mesh Refinement using Deep Reinforcement Learning with Local Rewards
<|reference_start|>Adaptive Swarm Mesh Refinement using Deep Reinforcement Learning with Local Rewards: Simulating physical systems is essential in engineering, but analytical solutions are limited to straightforward problems. Consequently, numerical methods like the Finite Element Method (FEM) are widely used. However, the FEM becomes computationally expensive as problem complexity and accuracy demands increase. Adaptive Mesh Refinement (AMR) improves the FEM by dynamically allocating mesh elements on the domain, balancing computational speed and accuracy. Classical AMR depends on heuristics or expensive error estimators, limiting its use in complex simulations. While learning-based AMR methods are promising, they currently only scale to simple problems. In this work, we formulate AMR as a system of collaborating, homogeneous agents that iteratively split into multiple new agents. This agent-wise perspective enables a spatial reward formulation focused on reducing the maximum mesh element error. Our approach, Adaptive Swarm Mesh Refinement (ASMR), offers efficient, stable optimization and generates highly adaptive meshes at user-defined resolution during inference. Extensive experiments, including volumetric meshes and Neumann boundary conditions, demonstrate that ASMR exceeds heuristic approaches and learned baselines, matching the performance of expensive error-based oracle AMR strategies. ASMR additionally generalizes to different domains during inference, and produces meshes that simulate up to 2 orders of magnitude faster than uniform refinements in more demanding settings.<|reference_end|>
@article{freymuth2024adaptive,
    title={Adaptive Swarm Mesh Refinement using Deep Reinforcement Learning with
  Local Rewards},
    author={Niklas Freymuth, Philipp Dahlinger, Tobias W"urth, Simon Reisch,
  Luise K"arger, Gerhard Neumann},
    journal={arXiv preprint arXiv:2406.08440},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.08440},
    primaryClass={cs.LG cs.MA}
}