BoFire: 基于贝叶斯优化的真实实验框架
项目介绍
BoFire 是一个专为真实世界实验设计的贝叶斯优化框架。它支持混合型参数空间,包括连续、离散及分类输入和输出。该框架区分了目标(最小化、最大化、接近目标)与它们作用的输出,并处理多种特定和通用约束以及黑箱输出约束。BoFire 提供灵活的设计实验(DoE)方法来满足约束条件,同时还支持采样方法,适用于受约束的混合变量空间。此外,它可以将问题序列化以用于 RESTful API 和 JSON/BSON 数据库,提供开箱即用的策略来应对单目标和多目标贝叶斯优化,并在需要时提供了高度的建模灵活性。
快速启动
要快速开始使用 BoFire,首先确保已安装所有必要的依赖项。以下命令安装 BoFire 完整特性,这包括 BoTorch(依赖于 PyTorch)。
pip install bofire[optimization,cheminfo]
如果你还需要 DoE 功能,则需额外安装 Cyipopt:
conda install -c conda-forge cyipopt
下面是一个简单的示例,展示如何定义优化问题的领域并使用多目标贝叶斯优化进行求解。
from bofire.data_models.features.api import ContinuousInput, ContinuousOutput
from bofire.data_models.objectives.api import MaximizeObjective
from bofire.data_models.constraints.api import NChooseKConstraint
from bofire.data_models.domain.api import Domain
from bofire.strategies.api import map, QnehviStrategy, RandomStrategy
from bofire.benchmarks.api import Detergent
# 定义域
input_features = Inputs(features=[
ContinuousInput(key="x1", bounds=(0, 1)),
ContinuousOutput(key="x2", bounds=(0, 1)),
ContinuousOutput(key="x3", bounds=(0, 1)),
])
output_features = Outputs(features=[
ContinuousOutput(key="y", objective=MaximizeObjective()),
])
constraints = Constraints(constraints=[
NChooseKConstraint(features=["x1", "x2", "x3"], min_count=1, max_count=2, none_also_valid=False),
])
domain = Domain(inputs=input_features, outputs=output_features, constraints=constraints)
# 使用Detergent基准演示多目标优化
detergent = Detergent()
domain = detergent.domain
# 初始化数据
sampler = map(RandomStrategy(domain=domain))
initial_samples = sampler.ask(2)
experiments = detergent.f(initial_samples, return_complete=True)
# 多目标贝叶斯优化
mobo_strategy = map(QnehviStrategy(domain=domain))
n_experiments = 4
for _ in range(n_experiments):
mobo_strategy.tell(experiments=experiments)
candidates = mobo_strategy.ask(candidate_count=1)
experiments = detergent.f(candidates, return_complete=True)
print(mobo_strategy.experiments)
应用案例和最佳实践
在化学配方优化、材料科学、药物发现等领域,BoFire 的应用十分广泛。通过定义具体领域的输入输出特征、约束条件和选择恰当的目标函数,可以高效解决复杂的实验设计问题。例如,在配方调整中,BoFire 可以帮助找到达到特定性能指标的最佳原料配比,减少试验次数的同时提高研究效率。
最佳实践:
- 明确优化目标与约束条件。
- 利用 BoFire 内置的策略和基准测试来快速验证概念。
- 根据实际应用场景微调模型配置。
典型生态项目
虽然直接的“典型生态项目”没有详细列出,但BoFire与其他技术如机器学习库(PyTorch, BoTorch),化学信息学工具的结合,以及在化工、药物研发等行业的应用案例显示了其强大的生态系统。开发者和研究人员可以利用BoFire与这些生态系统的整合,比如使用Gauche库进行分子优化,来创建高度定制化的解决方案。
请注意,由于篇幅限制,以上只是简要概述。详细的安装指南、完整教程和深入案例分析可参考 BoFire的官方文档。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考