{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/modlanets-learning-generalisable-dynamics-via","title":"ModLaNets: Learning Generalisable Dynamics via Modularity and Physical Inductive Bias","arxiv_id":"2206.12325","date":"2022-06-24","proceeding":null,"authors":["Yupu Lu","ShiJie Lin","Guanqi Chen","Jia Pan"],"abstract":"Deep learning models are able to approximate one specific dynamical system but struggle at learning generalisable dynamics, where dynamical systems obey the same laws of physics but contain different numbers of elements (e.g., double- and triple-pendulum systems). To relieve this issue, we proposed the Modular Lagrangian Network (ModLaNet), a structural neural network framework with modularity and physical inductive bias. This framework models the energy of each element using modularity and then construct the target dynamical system via Lagrangian mechanics. Modularity is beneficial for reusing trained networks and reducing the scale of networks and datasets. As a result, our framework can learn from the dynamics of simpler systems and extend to more complex ones, which is not feasible using other relevant physics-informed neural networks. We examine our framework for modelling double-pendulum or three-body systems with small training datasets, where our models achieve the best data efficiency and accuracy performance compared with counterparts. We also reorganise our models as extensions to model multi-pendulum and multi-body systems, demonstrating the intriguing reusable feature of our framework.","url_abs":"https://arxiv.org/abs/2206.12325v3","url_pdf":"https://arxiv.org/pdf/2206.12325v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"modlanets-learning-generalisable-dynamics-via","repo_url":"https://github.com/YupuLu/ModLaNets","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"inductive-bias","task_name":"Inductive Bias"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2206.12325","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2206.12325"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YupuLu/ModLaNets","reach":null}],"summary":{"ran":4,"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"official":{"samples":7,"ran":6,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":7,"samples":[{"code_sha256_prefix":"38aeb9c4a557cbdb","entry":"GlobalPositionTransform","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"38aeb9c4a557cbdb"}},{"code_sha256_prefix":"a75b3b53e69f82a8","entry":"GlobalVelocityTransform","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a75b3b53e69f82a8"}},{"code_sha256_prefix":"cca4433069c97ff5","entry":"MLP","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cca4433069c97ff5"}},{"code_sha256_prefix":"fa12beceae5f1cfc","entry":"PotentialEnergyCell","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fa12beceae5f1cfc"}},{"code_sha256_prefix":"1a8ea71b1fb9b4c3","entry":"choose_nonlinearity","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1a8ea71b1fb9b4c3"}},{"code_sha256_prefix":"95296484591093bc","entry":"lnn_init","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"95296484591093bc"}},{"code_sha256_prefix":"f900a571c500857e","entry":"ModLaNet","repo":"YupuLu/ModLaNets","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/YupuLu/ModLaNets/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f900a571c500857e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}