Skip to main content

A suite of benchmarks for automated engineering design.

Project description

Python tests arXiv pre-commit code style: Ruff Checked with mypy Open In Colab

EngiBench offers a collection of engineering design problems, datasets, and benchmarks to facilitate the development and evaluation of optimization and machine learning algorithms for engineering design. Our goal is to provide a standard API to enable researchers to easily compare and evaluate their algorithms on a wide range of engineering design problems.

Installation

⚠️ Some problems run under Docker or Singularity. Others require native installation of dependencies, please consult the documentation of the specific problem.

pip install engibench

You can also specify additional dependencies for specific problems:

pip install "engibench[beams2d]"

Or you can install all dependencies for all problems:

pip install "engibench[all]"

API

from engibench.problems.beams2d.v0 import Beams2D

# Create a problem
problem = Beams2D(seed=0)

# Inspect problem
problem.design_space  # Box(0.0, 1.0, (50, 100), float64)
problem.objectives  # (("compliance", "MINIMIZE"),)
problem.conditions  # (("volfrac", 0.35), ("forcedist", 0.0),...)
problem.dataset # A HuggingFace Dataset object

# Train your models, e.g., inverse design
# inverse_model = train_inverse(problem.dataset)
desired_conds = {"volfrac": 0.7, "forcedist": 0.3}
# generated_design = inverse_model.predict(desired_conds)

random_design, _ = problem.random_design()
# check constraints on the design, config pair
violated_constraints = problem.check_constraints(design=random_design, config=desired_conds)

if not violated_constraints:
   # Only simulate to get objective values
   objs = problem.simulate(design=random_design, config=desired_conds)
   problem.reset(seed=42)
   # Or run a gradient-based optimizer to polish the design
   opt_design, history = problem.optimize(starting_point=random_design, config=desired_conds)

You can also play with the API here: Open In Colab. We also provide good quality implementations of algorithms compatible with the API in EngiOpt.

Development

Both EngiBench and EngiOpt are open source projects and we welcome contributions! If you want to add a new problem, please reach out to us first to see if it is a good fit for EngiBench.

Installation

To install EngiBench for development, clone the repo, install the pre-commit hooks, and install all dev dependencies:

git clone git@github.com:IDEALLab/EngiBench.git
cd EngiBench
pre-commit install
pip install -e ".[dev]"

Our pre-commit config also includes a hook to ensure compliance with conventional commit formatting (see CONTRIBUTING.md).

Also worth installing ruff and mypy in your editor as we are checking the code style and type safety on our CI.

Adding a new problem

See docs/tutorials/new_problem.md.

License

The code of EngiBench and EngiOpt is licensed under the GPLv3 license. See the LICENSE file for details. All the associated datasets are licensed under the CC-BY-NC-SA 4.0 license.

Citing

If you use EngiBench in your research, please cite the following paper:

@inproceedings{felten_engibench_2025,
	title = {{EngiBench}: {A} {Framework} for {Data}-{Driven} {Engineering} {Design} {Research}},
	url = {https://openreview.net/forum?id=YowD33Q89V},
	urldate = {2025-10-07},
	author = {Felten, Florian and Apaza, Gabriel and B\¨aunlich, Gerhard and Diniz, Cashen and Dong, Xuliang and Drake, Arthur and Habibi, Milad and Hoffman, Nathaniel J. and Keeler, Matthew and Massoudi, Soheyl and VanGessel, Francis G. and Fuge, Mark},
	booktitle = {Proceedings of the 39th Conference on Neural Information Processing Systems ({NeurIPS} 2025)},
	year = {2025},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

engibench-0.2.0.tar.gz (137.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

engibench-0.2.0-py3-none-any.whl (162.3 kB view details)

Uploaded Python 3

File details

Details for the file engibench-0.2.0.tar.gz.

File metadata

  • Download URL: engibench-0.2.0.tar.gz
  • Upload date:
  • Size: 137.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for engibench-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4bd45268a4f138d080263eadc1f1cb9c589c03d7c5966f108e061cb094c1b298
MD5 7673c8c64b2e7d9779405da18391ed34
BLAKE2b-256 4750db4e8891e20b153ccd3bdcd81b833dd48b36fcf7da8c2caa1ad9e990bd3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for engibench-0.2.0.tar.gz:

Publisher: publish-pypi.yaml on IDEALLab/EngiBench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file engibench-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: engibench-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 162.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for engibench-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a6755c46a40dcd62d7b0894e6bed3386e073dc0b0d0ce21248222752cd98d35
MD5 9ba1a20443fff8bcc18528fb795cd191
BLAKE2b-256 73149fd71483b05d1ddff91ef5a8d4f2441068395c92cf0d553c4cff6ae6f774

See more details on using hashes here.

Provenance

The following attestation bundles were made for engibench-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yaml on IDEALLab/EngiBench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page