{"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/bayesian-optimization-with-known-experimental","title":"Bayesian optimization with known experimental and design constraints for chemistry applications","arxiv_id":"2203.17241","date":"2022-03-29","proceeding":null,"authors":["Riley J. Hickman","Matteo Aldeghi","Florian Häse","Alán Aspuru-Guzik"],"abstract":"Optimization strategies driven by machine learning, such as Bayesian optimization, are being explored across experimental sciences as an efficient alternative to traditional design of experiment. When combined with automated laboratory hardware and high-performance computing, these strategies enable next-generation platforms for autonomous experimentation. However, the practical application of these approaches is hampered by a lack of flexible software and algorithms tailored to the unique requirements of chemical research. One such aspect is the pervasive presence of constraints in the experimental conditions when optimizing chemical processes or protocols, and in the chemical space that is accessible when designing functional molecules or materials. Although many of these constraints are known a priori, they can be interdependent, non-linear, and result in non-compact optimization domains. In this work, we extend our experiment planning algorithms Phoenics and Gryffin such that they can handle arbitrary known constraints via an intuitive and flexible interface. We benchmark these extended algorithms on continuous and discrete test functions with a diverse set of constraints, demonstrating their flexibility and robustness. In addition, we illustrate their practical utility in two simulated chemical research scenarios: the optimization of the synthesis of o-xylenyl Buckminsterfullerene adducts under constrained flow conditions, and the design of redox active molecules for flow batteries under synthetic accessibility constraints. The tools developed constitute a simple, yet versatile strategy to enable model-based optimization with known experimental constraints, contributing to its applicability as a core component of autonomous platforms for scientific discovery.","url_abs":"https://arxiv.org/abs/2203.17241v1","url_pdf":"https://arxiv.org/pdf/2203.17241v1.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":"bayesian-optimization-with-known-experimental","repo_url":"https://github.com/aspuru-guzik-group/gryffin","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"bayesian-optimization","task_name":"Bayesian Optimization"},{"task_slug":"scientific-discovery","task_name":"scientific discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.17241","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.17241"}},"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/aspuru-guzik-group/gryffin","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"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":"e80e3fb581f702aa","entry":"dejong","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/benchmark_functions/benchmark_functions_cont.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/benchmark_functions/benchmark_functions_cont.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e80e3fb581f702aa"}},{"code_sha256_prefix":"7ce9d78e34b8d7dc","entry":"hyper_ellipsoid","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/benchmark_functions/benchmark_functions_cont.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/benchmark_functions/benchmark_functions_cont.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7ce9d78e34b8d7dc"}},{"code_sha256_prefix":"f12f4dabbeb242eb","entry":"register_vcs_handler","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/_version.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/_version.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f12f4dabbeb242eb"}},{"code_sha256_prefix":"f3d712690e90aaee","entry":"rosenbrock_function","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/benchmark_functions/benchmark_functions_cont.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/benchmark_functions/benchmark_functions_cont.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f3d712690e90aaee"}},{"code_sha256_prefix":"86d4ff45d6295e29","entry":"run_command","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/_version.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/_version.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"86d4ff45d6295e29"}},{"code_sha256_prefix":"b9a1535d27f2a9fb","entry":"versions_from_parentdir","repo":"aspuru-guzik-group/gryffin","repo_kind":"official","path":"src/gryffin/_version.py","file_url":"https://github.com/aspuru-guzik-group/gryffin/blob/HEAD/src/gryffin/_version.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b9a1535d27f2a9fb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}