A Framework for Data-Driven Engineering Design Research
Florian Felten, Gabriel Apaza, Gerhard Bräunlich, Cashen Diniz, Xuliang Dong, Arthur Drake, Milad Habibi, Nathaniel Hoffman, Matthew Keeler, Soheyl Massoudi, Francis VanGessel, Mark Fuge
Aug 21, 2025

😭 and then reviewer 2 asks to run the experiments on another problem
A set of engineering design problems under a unified Python API
Problem = Dataset + Simulation
from engibench.problems.airfoil.v0 import Airfoil
problem = Airfoil()
problem.reset(seed=42)
problem.design_space # {"angle_of_attack": Box(0.0, 1.0)), "coords": …},
problem.objectives # (("drag_coefficient", "MINIMIZE"))
problem.conditions # (("mach", 0.8), ("reynolds",1e6), …))
problem.dataset
# inverse_model = train_inverse(problem.dataset)
desired_conds = {"mach": 0.45, "reynolds": 4e6}
# generated_design = inverse_model.predict(desired_conds)
random_design, _ = problem.random_design()
violated_constraints = problem.check_constraints(random_design, desired_conds)
if len(violated_constraints) == 0:
objs = problem.simulate(random_design, desired_conds)
opt_design, history = problem.optimize(random_design, desired_conds)
problem.render(opt_design)A set of high quality implementations of:
generative models, surrogate models, optimization
baselines, and
GANs, Diffusion, Bayesian optimization,
NSGA-II, …
metrics relevant to engineering Cumulative optimality gap, determinant point processes, ratio of violated constraints, maximum mean discrepancy, …
compatible with EngiBench
Why not using a lib?
Users just want a “map / reduce” workflow.
map and reduce only📊 Slides: ✨ Live version / 📖 Source