{"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/distributed-potential-ilqr-scalable-game","title":"Distributed Potential iLQR: Scalable Game-Theoretic Trajectory Planning for Multi-Agent Interactions","arxiv_id":"2303.04842","date":"2023-03-08","proceeding":null,"authors":["Zach Williams","Jushan Chen","Negar Mehr"],"abstract":"In this work, we develop a scalable, local trajectory optimization algorithm that enables robots to interact with other robots. It has been shown that agents' interactions can be successfully captured in game-theoretic formulations, where the interaction outcome can be best modeled via the equilibria of the underlying dynamic game. However, it is typically challenging to compute equilibria of dynamic games as it involves simultaneously solving a set of coupled optimal control problems. Existing solvers operate in a centralized fashion and do not scale up tractably to multiple interacting agents. We enable scalable distributed game-theoretic planning by leveraging the structure inherent in multi-agent interactions, namely, interactions belonging to the class of dynamic potential games. Since equilibria of dynamic potential games can be found by minimizing a single potential function, we can apply distributed and decentralized control techniques to seek equilibria of multi-agent interactions in a scalable and distributed manner. We compare the performance of our algorithm with a centralized interactive planner in a number of simulation studies and demonstrate that our algorithm results in better efficiency and scalability. We further evaluate our method in hardware experiments involving multiple quadcopters.","url_abs":"https://arxiv.org/abs/2303.04842v1","url_pdf":"https://arxiv.org/pdf/2303.04842v1.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":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"distributed-potential-ilqr-scalable-game","repo_url":"https://github.com/labicon/dp-ilqr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.04842","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.04842"}},"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/labicon/dp-ilqr","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":14,"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":"306214f70893433d","entry":"compute_pairwise_distance","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/util.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/util.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":"306214f70893433d"}},{"code_sha256_prefix":"8eda000c67df9307","entry":"compute_pairwise_distance_nd","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/util.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/util.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":"8eda000c67df9307"}},{"code_sha256_prefix":"8a4081f81bb6722e","entry":"define_inter_graph_threshold","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/distributed.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/distributed.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":"8a4081f81bb6722e"}},{"code_sha256_prefix":"d380f82f423fb693","entry":"forward_euler_integration","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/dynamics.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/dynamics.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":"d380f82f423fb693"}},{"code_sha256_prefix":"565f4ae7c2af75cc","entry":"nchoosek","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/graphics.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/graphics.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":"565f4ae7c2af75cc"}},{"code_sha256_prefix":"d85d2ab328afec78","entry":"quadraticize_distance","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/cost.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/cost.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":"d85d2ab328afec78"}},{"code_sha256_prefix":"ab22271cb30f1f84","entry":"quadraticize_finite_difference","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/cost.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/cost.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":"ab22271cb30f1f84"}},{"code_sha256_prefix":"b8607f54318df6e0","entry":"rk4_integration","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/dynamics.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/dynamics.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":"b8607f54318df6e0"}},{"code_sha256_prefix":"37b64fe3fa4467f7","entry":"scipy_integration","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/dynamics.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/dynamics.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":"37b64fe3fa4467f7"}},{"code_sha256_prefix":"aee96831e4daa63d","entry":"solve_distributed","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/distributed.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/distributed.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":"aee96831e4daa63d"}},{"code_sha256_prefix":"071f43ca77a0ebc6","entry":"solve_rhc","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/distributed.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/distributed.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":"071f43ca77a0ebc6"}},{"code_sha256_prefix":"946a58b2ed451d55","entry":"solve_subproblem","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/problem.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/problem.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":"946a58b2ed451d55"}},{"code_sha256_prefix":"8f4c5f787e70f798","entry":"solve_subproblem_starmap","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/problem.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/problem.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":"8f4c5f787e70f798"}},{"code_sha256_prefix":"0c86a3c8208ecab0","entry":"split_agents","repo":"labicon/dp-ilqr","repo_kind":"official","path":"dpilqr/util.py","file_url":"https://github.com/labicon/dp-ilqr/blob/HEAD/dpilqr/util.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":"0c86a3c8208ecab0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}