Bayesian active learning for advanced manufacturing and materials design. The method and code are described at https://epubs.siam.org/doi/pdf/10.1137/22M149898X, and also on ArXiV at https://arxiv.org/abs/2205.14208 See Citation below.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtThe pinned gpytorch==1.6.1 fixes the compatible torch/numpy range used for the
paper runs. A GPU is optional; the notebooks fall back to CPU.
.
├── kernels/ vector-valued GP kernels (vvkernels, sep_vvkernels, vvk_rbfkernel, …)
├── means/ vector-valued mean functions (vvmeans)
├── likelihood/ vector-valued likelihoods (vvlikelihood)
├── mlikelihoods/ marginal log-likelihoods
├── predstrategies/ GP prediction strategies (GPprediction)
├── optimizers/ optimizers (custom LBFGS)
├── utils/ objective functions, geometry helpers, stopping criteria, vfield
├── LBFGS.py custom L-BFGS used by the GP training loop
├── pytorchtools.py early-stopping helper
├── jupyter/ paper experiments (see mapping below)
│ ├── tadxald/ application: atomic-layer-deposition (ALD) design
│ └── out_*_stab/ committed 50-run stability results feeding Fig 15
└── paper/ arXiv:2205.14208 PDF
Notebooks import the library modules via sys.path.append(".."), so run them from
inside jupyter/.
| Notebook | Paper section | Figures |
|---|---|---|
jupyter/twin_peak_success.ipynb |
§4.1.1 Twin-peak, convergence/success | Figs 2–6 |
jupyter/twin_peak_failure.ipynb |
§4.1.2 Twin-peak, convergence/failure | Figs 7–11 |
jupyter/validation_pvalue_figures.ipynb |
§4.1 validation / residuals | Figs 8–10 (P-value hist., variance) |
jupyter/dtlz4_success.ipynb |
§4.2.1 DTLZ4, convergence/success | Fig 13 |
jupyter/dtlz4_failure.ipynb |
§4.2.2 DTLZ4, convergence/failure | Fig 14 |
jupyter/tolerance_study.ipynb |
§4.3 tolerance selection | Fig 12 |
jupyter/fig15_tad.ipynb |
§4.3 comparison — TAD 50 runs | Fig 15 (TAD data) |
jupyter/fig15_l2.ipynb |
§4.3 comparison — sequential-L2 50 runs | Fig 15 (L2 data) |
jupyter/fig15_plot.ipynb |
§4.3 comparison — plot | Fig 15 |
jupyter/kernel_validation.ipynb |
kernel-validation study | — |
Application (beyond the paper's core benchmarks):
jupyter/tadxald/ (atomic-layer deposition).
- Fig 1 is a schematic from an external source and is not generated by any notebook.
- Fig 12 (
tolerance_study.ipynb) is run once per tolerance to produce its panels; the committed state corresponds to τ = 0.05. Re-run with τ ∈ {0.1, 0.08, 0.05} for all three. - Fig 15 reads pre-computed 50-run results committed under
jupyter/out_stab/andjupyter/out_L2_stab/, sofig15_plot.ipynbreproduces the figure directly. To regenerate those inputs from scratch, runfig15_tad.ipynb/fig15_l2.ipynbfirst. (Known caveat:fig15_tad.ipynbcurrently writes its TAD run tofigures/vec_stab_tad.txt; align this with theout_stab/vec_stab_tad-*.npyname thatfig15_plot.ipynbreads.) - Model checkpoints, figures, and bulky plot data are regenerated by running the notebooks
and are
.gitignored.
Carlo Graziani and Marieme Ngom, "Targeted Adaptive Design," SIAM/ASA Journal on Uncertainty Quantification, 12(4), 1273–1314, 2024. doi:10.1137/22M149898X · arXiv:2205.14208
@article{graziani2024targeted,
title = {Targeted Adaptive Design},
author = {Graziani, Carlo and Ngom, Marieme},
journal = {SIAM/ASA Journal on Uncertainty Quantification},
volume = {12},
number = {4},
pages = {1273--1314},
year = {2024},
doi = {10.1137/22M149898X},
}