This package contains examples of application of Bayesian Global Optimization (BGO) to the solution of inverse problems.
The code is developed by the Predictive Science Laboratory (PSL) at Purdue University.
We give a brief description of what is in each file/folder of this code. For more details, you are advised to look at the extensive comments.
-
plots.py: Includes routines that make the plots you see.
-
pydes: This is a Python module that implements BGO. It will be a separate fully functional module in the near future.
Before trying to use the code, you should install the following dependencies:
There is nothing to install. You can just use the code once you enter the code directory. pydes can be used as an independent python module if you add it to your PYTHONPATH. However, this is not necessary if all you want to do is run the demos.
The demo is in solve_inverse.py which can be run as a common Python script. The demo calibrates the following catalysis model: using this data kindly provided by Dr. Ioannis Katsounaros. The details of the model are explained in example 1 of our paper. Contrary to the paper, here we pose the inverse problem as a minimization of a loss function:
The notation has the following meaning:
- x: parameters that need calibrating
- f(x): forward model
- y: experimental data (presumably predicted by f(x))
- L(x, y): loss function
The scripts produces detailed output of the BGO, and it creates the following figures:
- results/ei.png: Maximum of expected improvement at each iteration of the algorithm.
- results/loss.png: Minimum observed loss function at each iteration of the BGO.
- results/init_fit.png: The initial fit to the data.
- results/final_fit.png: The final fit to the data.