What is PHYSBO?

PHYSBO (optimization tools for PHYSics based on Bayesian Optimization) is a Python library for fast and scalable Bayesian optimization (Bayesian Optimization). It is based on COMBO (Common Bayesian Optimization) and has been developed mainly for researchers in the materials science field. There are many attempts to accelerate scientific discovery through data-driven design-of-experiment algorithms in the fields of physics, chemistry, and materials. Bayesian optimization is an effective tool for accelerating these scientific discoveries. Bayesian optimization is a technique that can be used for complex simulations and real-world experimental tasks where the evaluation of objective function values (e.g., characteristic values) is very costly. In other words, the problem solved by Bayesian optimization is to find a parameter (e.g., material composition, structure, process and simulation parameters) with a better objective function value (e.g., material properties) in as few experiments and simulations as possible. In Bayesian optimization, the candidate parameters to be searched for are listed in advance, and the candidate with the largest objective function value is selected from among the candidates by making good use of machine learning (using Gaussian process regression) prediction. Experiments and simulations are performed on the candidates and the objective function values are evaluated. By repeating the process of selection by machine learning and evaluation by experimental simulation, we can reduce the number of times of optimization. On the other hand, Bayesian optimization is generally computationally expensive, and standard implementations such as scikit-learn are difficult to handle a large amount of data. PHYSBO achieves high scalability due to the following features

  • Thompson Sampling
  • random feature map
  • one-rank Cholesky update
  • automatic hyperparameter tuning

Please see this reference for technical details.


GNU General Public License version 3

Copyright (c) <2020-> The University of Tokyo. All rights reserved.

Part of this software is developed under the support of “Project for advancement of software usability in materials science” by The Institute for Solid State Physics, The University of Tokyo. We hope that you cite the following reference when you publish the results using PHYSBO:

Yuichi Motoyama, Ryo Tamura, Kazuyoshi Yoshimi, Kei Terayama, Tsuyoshi Ueno and Koji Tsuda,
“Bayesian optimization package: PHYSBO”,
Computer Physics Communications Volume 278, September 2022, 108405.
Available from this site

Bibtex is given as follows:

title = {Bayesian optimization package: PHYSBO},
journal = {Computer Physics Communications},
volume = {278},
pages = {108405},
year = {2022},
issn = {0010-4655},
doi = {https://doi.org/10.1016/j.cpc.2022.108405},
url = {https://www.sciencedirect.com/science/article/pii/S0010465522001242},
author = {Yuichi Motoyama and Ryo Tamura and Kazuyoshi Yoshimi and Kei Terayama and Tsuyoshi Ueno and Koji Tsuda},
keywords = {Bayesian optimization, Multi-objective optimization, Materials screening, Effective model estimation},
abstract = {PHYSBO (optimization tools for PHYSics based on Bayesian Optimization) is a Python library for fast and scalable Bayesian optimization. It has been developed mainly for application in the basic sciences such as physics and materials science. Bayesian optimization is used to select an appropriate input for experiments/simulations from candidate inputs listed in advance in order to obtain better output values with the help of machine learning prediction. PHYSBO can be used to find better solutions for both single and multi-objective optimization problems. At each cycle in the Bayesian optimization, a single proposal or multiple proposals can be obtained for the next experiments/simulations. These proposals can be obtained interactively for use in experiments. PHYSBO is available at https://github.com/issp-center-dev/PHYSBO.
Program summary
Program Title: PHYSBO CPC Library link to program files: https://doi.org/10.17632/22d72yb6k6.1 Developer's repository link: https://github.com/issp-center-dev/PHYSBO Licensing provisions: GNU General Public License version 3 Programming language: Python3 External routines/libraries: NumPy, SciPy, MPI for Python. Nature of problem: Bayesian optimization (BO) can be used to select inputs that will yield better outputs from a list of candidate inputs with the help of machine learning prediction through a Gaussian process. Although BO is a powerful tool, two of its components, training the Gaussian process regression and optimizing the acquisition function, are generally computationally expensive. Moreover, hyperparameter tuning is necessary for the former process. Solution method: PHYSBO is a Python library for performing fast and scalable Bayesian optimization. To avoid the computationally expensive training process, PHYSBO uses a random feature map, Thompson sampling, and a one-rank Cholesky update. In addition, PHYSBO performs hyperparameter tuning automatically by maximizing the Type II likelihood, and MPI parallelization is used to reduce the calculation time for optimizing the acquisition function.}


PHYSBO has been developed by following members.

  • ver. 1.0
    • Ryo Tamura (International Center for Materials Nanoarchitectonics, National Institute for Materials Science)
    • Kei Terayama (Graduate School of Medical Life Science, Yokohama City University)
    • Tsuyoshi Ueno (Magne-Max Capital Management Company)
    • Koji Tsuda(Department of Computational Biology and Medical Sciences, Graduate School of Frontier Sciences, The University of Tokyo.)
    • Yuichi Motoyama (Institute for Solid State Physics, The University of Tokyo)
    • Kazuyoshi Yoshimi (Institute for Solid State Physics, The University of Tokyo)
    • Naoki Kawashima (Institute for Solid State Physics, The University of Tokyo)