{"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/cooptimizing-safety-and-performance-with-a","title":"Cooptimizing Safety and Performance with a Control-Constrained Formulation","arxiv_id":"2409.06696","date":"2024-09-10","proceeding":null,"authors":["Hao Wang","Adityaya Dhande","Somil Bansal"],"abstract":"Autonomous systems have witnessed a rapid increase in their capabilities, but it remains a challenge for them to perform tasks both effectively and safely. The fact that performance and safety can sometimes be competing objectives renders the cooptimization between them difficult. One school of thought is to treat this cooptimization as a constrained optimal control problem with a performance-oriented objective function and safety as a constraint. However, solving this constrained optimal control problem for general nonlinear systems remains challenging. In this work, we use the general framework of constrained optimal control, but given the safety state constraint, we convert it into an equivalent control constraint, resulting in a state and time-dependent control-constrained optimal control problem. This equivalent optimal control problem can readily be solved using the dynamic programming principle. We show the corresponding value function is a viscosity solution of a certain Hamilton-Jacobi-Bellman Partial Differential Equation (HJB-PDE). Furthermore, we demonstrate the effectiveness of our method with a two-dimensional case study, and the experiment shows that the controller synthesized using our method consistently outperforms the baselines, both in safety and performance.","url_abs":"https://arxiv.org/abs/2409.06696v2","url_pdf":"https://arxiv.org/pdf/2409.06696v2.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":"cooptimizing-safety-and-performance-with-a","repo_url":"https://github.com/haowwang/cooptimize_safety_performance","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2409.06696","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.06696"}},"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/haowwang/cooptimize_safety_performance","reach":{"status":"ok"}}],"summary":{"ran":5,"unverified":1},"by_repo_kind":{"official":{"samples":6,"ran":5,"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":6,"samples":[{"code_sha256_prefix":"eeb6422e66a24934","entry":"dyn_propogate","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_mppi_utils.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_mppi_utils.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":"eeb6422e66a24934"}},{"code_sha256_prefix":"d7a1f220e5965476","entry":"dynamics","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_brt_mpc_driver.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_brt_mpc_driver.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":"d7a1f220e5965476"}},{"code_sha256_prefix":"26af5d7c751054d2","entry":"dynamics","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_mppi_driver.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_mppi_driver.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":"26af5d7c751054d2"}},{"code_sha256_prefix":"ee977546debe3ca4","entry":"mppi_cost_func","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_mppi_utils.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_mppi_utils.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":"ee977546debe3ca4"}},{"code_sha256_prefix":"a43c63a7a6c86455","entry":"signed_distance_to_rectangle","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_mppi_utils.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_mppi_utils.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":"a43c63a7a6c86455"}},{"code_sha256_prefix":"69ce2871272d5a01","entry":"dyn_propogate","repo":"haowwang/cooptimize_safety_performance","repo_kind":"official","path":"boat2d_experiment/brt_experiment/boat2d_brt_mpc_utils.py","file_url":"https://github.com/haowwang/cooptimize_safety_performance/blob/HEAD/boat2d_experiment/brt_experiment/boat2d_brt_mpc_utils.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":"69ce2871272d5a01"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}