Learning to Stabilize: A Policy-Based Approach to Physics Simulation Parameter Control

Résumé

Numerical stability in physics-based simulation relies on a careful balancing act between various hyperparameters. Sub-stepping and damping are primary levers for this control, yet they impose a problematic trade-off. Insufficient sub-stepping triggers divergence, while excessive sub-stepping incurs computational overhead. The interplay of damping and stiffness presents similar challenges. Under-damped systems risk numerical explosions, whereas over-compensation leads to artificial energy loss, robbing the simulation of its physical vitality and resulting in perceptually soft interactions. Existing approaches typically rely on fixed or heuristically tuned parameters that do not optimally balance this trade-off at each time step. We propose a reinforcement learning (RL) framework that learns adaptive hyperparameter policies, enabling an RL agent to dynamically select parameters such as the number of sub-steps and damping at each simulation time step. To improve generalization and scalability, we investigate both a global policy approach and a policy applied to local subdomains, which offers more fine-grained adaptivity. We validate the framework on several challenging stiff rigid-body simulation scenarios involving bilateral constraints and frictional contact. Our results show that the learned policies achieve stable and robust simulations with reduced computational cost and minimized artificial dissipation compared to manually tuned baselines.

Publication
Motion, Interaction and Games
Date

BibTeX

    @inproceedings{hyperparamPolicies2026,
        author = {Liu, Yinchu and Marchal, Maud and Kry, Paul G and Andrews, Sheldon},
        title = {Adaptive Sub-stepping for Constrained Rigid Body Simulations},
        year = {2026},
        booktitle = {Proceedings of the 17th ACM SIGGRAPH Conference on Motion, Interaction, and Games},
        articleno = {},
        numpages = {10},
        location = {Charleston, SC, USA},
        series = {MIG ‘26}
        doi = {10.1145/3828647.3857301}
    }