贝叶斯优化结构搜索
aalto-boss的Python项目详细描述
贝叶斯优化结构搜索(BOSS)是一种主动机器学习技术,用于加速能量和物性相空间的全局搜索。它旨在促进计算机和实验自然科学中的机器学习。在
有关代码和教程的更详细描述,请参阅user guide。在
安装
BOSS作为PyPI包分发,可以使用pip安装:
python3 -m pip install --user aalto-boss
基本用途
作为一个简单的例子,考虑有界一维函数的优化。BOSS可以直接从Python运行,也可以通过CLI接口运行,下面将简要说明这两种方法。注意,BOSS总是最小化给定函数。在
Python iterface
要从Python运行BOSS,我们首先定义目标函数,默认情况下,BOSS希望该函数以单个2dnumpy数组作为参数(此行为可以修改)并返回一个标量值。接下来,我们导入BOMain对象,并向它提供函数加上任意数量的BOSS关键字,然后可以开始优化。完成后,优化结果将返回到BOResults对象中。在
^{pr2}$命令行iterface
CLI由名为boss的可执行文件提供。用户必须提供一个包含BOSS关键字列表的输入文件和定义要优化的函数的单独Python脚本。默认情况下,BOSS希望此函数以单个2dnumpy数组作为参数(此行为可以修改)并返回一个标量值。下面我们在Python脚本中定义这样一个函数,任意命名为user_function.py:
""" user_function.py This script contains the function definition for the minimization problem f(x) = sin(x) + 1.5*exp(-(x-4.3)**2) , 0 < x < 7 Note that the bounds are specified in the BOSS input file. """importnumpyasnpdeffunc(X):""" BOSS-compatible definition of the function. """x=X[0,0]returnnp.sin(x)+1.5*np.exp(-(x-4.3)**2)
为了最小化受约束0<;x<;7约束的函数,我们定义了一个BOSS输入文件boss.in:
# boss.inuserfnuser_function.pyfuncbounds07yrange-11kernelrbfinitpts5iterpts15verbosity2
现在可以从命令行启动优化:
$ boss o boss.in
学分
BOSS正在阿尔托大学的Computational Electronic Structure Theory (CEST) group积极发展中。开发团队的过去和现在的成员包括
- 帕克金维尔
- 亨利·保兰斯基
- 阿特图·托尔瓦南
- 乌尔普雷姆斯
- 努蒂·斯坦恩
- Joakim Löfgren(维修人员)
- Milica Todorović(组长)
如果您希望在您的研究中使用BOSS,请引用
问题和功能请求
强烈建议通过 gitlab issue tracker。 BOSS开发团队可以通过电子邮件联系milica.todorovic@aalto.fi
- 项目
标签: