Design engineers are often faced with the challenge of finding novel and high performing designs with limited information available to them. Bayesian methods lend themselves to design problems where information is limited and beliefs about what is a good design update over time. Using python is a great way to integrate design tools with Bayesian methods and accelerate the design process.
During concept design phases, there is limited information available to help designers understand what designs work well. In product design, evaluating a design requires a time-consuming process of prototyping and testing. In engineering design, evaluating a design may be based on using complex computer codes with long run times. In both cases, information is expensive (in cost or time) and making decisions that lead to design improvements can be a challenging task.
Bayesian methods lend themselves to the design process as they have the property of taking prior estimates and update them over time as new information becomes available. In cases where evaluating a design is expensive, Bayesian optimisation with Gaussian processes can be used to accelerate design improvements. Furthermore, acquisition functions can be carefully designed to encourage exploitation of known designs, explore novel designs, seek trade-offs between competing performance metrics and incorporate subjective preferences.
We will make effort to expose any mysteries around Bayesian optimisation and show how a simple strategy can be developed using nothing more than numpy. We will introduce some more sophisticated approaches using GPFlow and illustrate some examples from our everyday work using python for design optimisation, geometry parameterisation and encouraging human-machine interaction through a web interface.