{"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/dynamic-simplex-balancing-safety-and","title":"Dynamic Simplex: Balancing Safety and Performance in Autonomous Cyber Physical Systems","arxiv_id":"2302.09750","date":"2023-02-20","proceeding":null,"authors":["Baiting Luo","Shreyas Ramakrishna","Ava Pettet","Christopher Kuhn","Gabor Karsai","Ayan Mukhopadhyay"],"abstract":"Learning Enabled Components (LEC) have greatly assisted cyber-physical systems in achieving higher levels of autonomy. However, LEC's susceptibility to dynamic and uncertain operating conditions is a critical challenge for the safety of these systems. Redundant controller architectures have been widely adopted for safety assurance in such contexts. These architectures augment LEC \"performant\" controllers that are difficult to verify with \"safety\" controllers and the decision logic to switch between them. While these architectures ensure safety, we point out two limitations. First, they are trained offline to learn a conservative policy of always selecting a controller that maintains the system's safety, which limits the system's adaptability to dynamic and non-stationary environments. Second, they do not support reverse switching from the safety controller to the performant controller, even when the threat to safety is no longer present. To address these limitations, we propose a dynamic simplex strategy with an online controller switching logic that allows two-way switching. We consider switching as a sequential decision-making problem and model it as a semi-Markov decision process. We leverage a combination of a myopic selector using surrogate models (for the forward switch) and a non-myopic planner (for the reverse switch) to balance safety and performance. We evaluate this approach using an autonomous vehicle case study in the CARLA simulator using different driving conditions, locations, and component failures. We show that the proposed approach results in fewer collisions and higher performance than state-of-the-art alternatives.","url_abs":"https://arxiv.org/abs/2302.09750v1","url_pdf":"https://arxiv.org/pdf/2302.09750v1.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":"dynamic-simplex-balancing-safety-and","repo_url":"https://github.com/BaitingLuo/Dynamic_Simplex","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"decision-making","task_name":"Decision Making"},{"task_slug":"sequential-decision-making","task_name":"Sequential Decision Making"}],"methods":[{"method_slug":"carla","method_name":"CARLA"},{"method_slug":"entropy-regularization","method_name":"Entropy Regularization"},{"method_slug":"ppo","method_name":"PPO"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.09750","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.09750"}},"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/BaitingLuo/Dynamic_Simplex","reach":null}],"summary":{"ran_fixture":1,"ran_draft_wrong":2},"by_repo_kind":{"official":{"samples":3,"ran":3,"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":3,"samples":[{"code_sha256_prefix":"441d287f72e7b111","entry":"get_collision","repo":"BaitingLuo/Dynamic_Simplex","repo_kind":"official","path":"ANTI-CARLA/leaderboard/team_code/image_agent.py","file_url":"https://github.com/BaitingLuo/Dynamic_Simplex/blob/HEAD/ANTI-CARLA/leaderboard/team_code/image_agent.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"441d287f72e7b111"}},{"code_sha256_prefix":"91c2b1973666fead","entry":"process_weather_data","repo":"BaitingLuo/Dynamic_Simplex","repo_kind":"official","path":"ANTI-CARLA/leaderboard/team_code/image_agent.py","file_url":"https://github.com/BaitingLuo/Dynamic_Simplex/blob/HEAD/ANTI-CARLA/leaderboard/team_code/image_agent.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91c2b1973666fead"}},{"code_sha256_prefix":"e36b6653c57640f0","entry":"read_occlusion","repo":"BaitingLuo/Dynamic_Simplex","repo_kind":"official","path":"ANTI-CARLA/leaderboard/team_code/image_agent.py","file_url":"https://github.com/BaitingLuo/Dynamic_Simplex/blob/HEAD/ANTI-CARLA/leaderboard/team_code/image_agent.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e36b6653c57640f0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}