{"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/flex-an-adaptive-exploration-algorithm-for","title":"FLEX: an Adaptive Exploration Algorithm for Nonlinear Systems","arxiv_id":"2304.13426","date":"2023-04-26","proceeding":null,"authors":["Matthieu Blanke","Marc Lelarge"],"abstract":"Model-based reinforcement learning is a powerful tool, but collecting data to fit an accurate model of the system can be costly. Exploring an unknown environment in a sample-efficient manner is hence of great importance. However, the complexity of dynamics and the computational limitations of real systems make this task challenging. In this work, we introduce FLEX, an exploration algorithm for nonlinear dynamics based on optimal experimental design. Our policy maximizes the information of the next step and results in an adaptive exploration algorithm, compatible with generic parametric learning models and requiring minimal resources. We test our method on a number of nonlinear environments covering different settings, including time-varying dynamics. Keeping in mind that exploration is intended to serve an exploitation objective, we also test our algorithm on downstream model-based classical control tasks and compare it to other state-of-the-art model-based and model-free approaches. The performance achieved by FLEX is competitive and its computational cost is low.","url_abs":"https://arxiv.org/abs/2304.13426v1","url_pdf":"https://arxiv.org/pdf/2304.13426v1.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":"flex-an-adaptive-exploration-algorithm-for","repo_url":"https://github.com/mb-29/exploration","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"experimental-design","task_name":"Experimental Design"},{"task_slug":"model-based-reinforcement-learning","task_name":"Model-based Reinforcement Learning"}],"methods":[{"method_slug":"test","method_name":"Test"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2304.13426","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2304.13426"}},"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":"deterministic:regex_extraction","url":"https://github.com/MB-29/exploration","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mb-29/exploration","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_fixture":2,"unverified":5},"by_repo_kind":{"official":{"samples":8,"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":0,"samples":[{"code_sha256_prefix":"25092c545b43ea9a","entry":"lstsq_update","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"25092c545b43ea9a"}},{"code_sha256_prefix":"dbc3dffc9bfe8463","entry":"minimize_quadratic_sphere","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dbc3dffc9bfe8463"}},{"code_sha256_prefix":"39b2a6bd5776c7f3","entry":"solve_D_optimal","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"39b2a6bd5776c7f3"}},{"code_sha256_prefix":"11c4b78255fe10ce","entry":"Agent","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.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":"11c4b78255fe10ce"}},{"code_sha256_prefix":"83f0d1c7272aedb1","entry":"Flex","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.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":"83f0d1c7272aedb1"}},{"code_sha256_prefix":"0b1f3fb0f715e6b0","entry":"compute_gradient","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.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":"0b1f3fb0f715e6b0"}},{"code_sha256_prefix":"6c1192aa05d301cc","entry":"exploration","repo":"MB-29/exploration","repo_kind":"official","path":"exploration.py","file_url":"https://github.com/MB-29/exploration/blob/HEAD/exploration.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":"6c1192aa05d301cc"}},{"code_sha256_prefix":"21db7871139de360","entry":"jacobian","repo":"mb-29/exploration","repo_kind":"official","path":"policies.py","file_url":"https://github.com/mb-29/exploration/blob/HEAD/policies.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":"21db7871139de360"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}