top of page

PyBayesOP:
Parametric Optimization

Last Update: May 2025


Engineers typically run simulations for two key purposes: to explore complex processes for basic research or to validate the performance of specific parts. Both scenarios share a common goal—understanding how design parameters influence performance, whether as general trends and Pareto relationships in research, or as concrete performance metrics for validation.


I've developed a general-purpose parametric Bayesian Optimization library using BoTorch, with practical implementations for XFOIL and FreeCAD FEM/CFD workflows. This approach can integrate with any simulation tool accessible through Python APIs or command-line interfaces, automatically handling parameter updates, geometry meshing, and simulation execution.


Rather than diving into Bayesian Optimization theory here, I'll point you to the PhysicsX article that initially inspired this work and this University of Konstanz piece where I deepened my understanding of the technical details. The short version: Bayesian Optimization intelligently selects your next parameter set candidates, making your simulation campaigns far more efficient.

Below are the results of some of the optimizations - running hundreds of simulations with input parameters selected through the Bayesian Optimization process. I've included single-objective, multi-objective, and input-constrained single-objective optimization examples. 

Bracket Optimization

bracket_opt_desc.png

Future Plans: I'd like to refine this code base to be usable for others. I'd also like to implement more examples beyond interfacing with FreeCAD and XFOIL. Accessing the Fusion 360 API or Onshape Rest API for parameter optimization and simulation would make the tool more useful. For now, the code is available on Github here - README coming soon.

bottom of page