{"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/a-general-framework-for-structured-learning","title":"A General Framework for Structured Learning of Mechanical Systems","arxiv_id":"1902.08705","date":"2019-02-22","proceeding":null,"authors":["Jayesh K. Gupta","Kunal Menda","Zachary Manchester","Mykel J. Kochenderfer"],"abstract":"Learning accurate dynamics models is necessary for optimal, compliant control\nof robotic systems. Current approaches to white-box modeling using analytic\nparameterizations, or black-box modeling using neural networks, can suffer from\nhigh bias or high variance. We address the need for a flexible, gray-box model\nof mechanical systems that can seamlessly incorporate prior knowledge where it\nis available, and train expressive function approximators where it is not. We\npropose to parameterize a mechanical system using neural networks to model its\nLagrangian and the generalized forces that act on it. We test our method on a\nsimulated, actuated double pendulum. We show that our method outperforms a\nnaive, black-box model in terms of data-efficiency, as well as performance in\nmodel-based reinforcement learning. We also conduct a systematic study of our\nmethod's ability to incorporate available prior knowledge about the system to\nimprove data efficiency.","url_abs":"http://arxiv.org/abs/1902.08705v2","url_pdf":"http://arxiv.org/pdf/1902.08705v2.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":"a-general-framework-for-structured-learning","repo_url":"https://github.com/sisl/mechamodlearn","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"model-based-reinforcement-learning","task_name":"Model-based Reinforcement Learning"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1902.08705","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1902.08705"}},"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/sisl/mechamodlearn","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"ran":0,"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":0,"samples":[{"code_sha256_prefix":"4b6a9d1b12dd682b","entry":"bfill_diagonal","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/utils.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4b6a9d1b12dd682b"}},{"code_sha256_prefix":"9f6aeb9840d537e1","entry":"bfill_lowertriangle","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/utils.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9f6aeb9840d537e1"}},{"code_sha256_prefix":"333bf105fcfc9f91","entry":"filter_","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/nested.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/nested.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"333bf105fcfc9f91"}},{"code_sha256_prefix":"1815067555f382f6","entry":"odeint","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/odesolver.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/odesolver.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1815067555f382f6"}},{"code_sha256_prefix":"60e18749fc6d6b5c","entry":"plot_traj","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/viz_utils.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/viz_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"60e18749fc6d6b5c"}},{"code_sha256_prefix":"5a92e97beb204564","entry":"rk4_alt_step_func","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/odesolver.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/odesolver.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a92e97beb204564"}},{"code_sha256_prefix":"ab3a6fcc0ae587bf","entry":"wrap_to_pi","repo":"sisl/mechamodlearn","repo_kind":"official","path":"mechamodlearn/utils.py","file_url":"https://github.com/sisl/mechamodlearn/blob/HEAD/mechamodlearn/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ab3a6fcc0ae587bf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}