A suite of benchmarks for automated engineering design.
Project description
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()
# 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)
# 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:
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]"
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:
TODO
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file engibench-0.0.1a3.tar.gz.
File metadata
- Download URL: engibench-0.0.1a3.tar.gz
- Upload date:
- Size: 120.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b42dbdb24ad4b479778fcf856d85a7b106f06aa320269c6108b9ca913457d55
|
|
| MD5 |
3c78336a8a16eee10d3a52e0f6907594
|
|
| BLAKE2b-256 |
d88e50d4bcf4c124dd18abdefa285cbea29290655519db46a5c1c147d44dc22b
|
Provenance
The following attestation bundles were made for engibench-0.0.1a3.tar.gz:
Publisher:
publish-pypi.yaml on IDEALLab/EngiBench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
engibench-0.0.1a3.tar.gz -
Subject digest:
4b42dbdb24ad4b479778fcf856d85a7b106f06aa320269c6108b9ca913457d55 - Sigstore transparency entry: 206931548
- Sigstore integration time:
-
Permalink:
IDEALLab/EngiBench@cca37f86bfab515d6c6c2e3f72c142a830d7e315 -
Branch / Tag:
refs/tags/v0.0.1-alpha3 - Owner: https://github.com/IDEALLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yaml@cca37f86bfab515d6c6c2e3f72c142a830d7e315 -
Trigger Event:
release
-
Statement type:
File details
Details for the file engibench-0.0.1a3-py3-none-any.whl.
File metadata
- Download URL: engibench-0.0.1a3-py3-none-any.whl
- Upload date:
- Size: 137.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f624d65e74f03d0e90d8e643b140a653d873f847aeafc2608da82494ddeb6979
|
|
| MD5 |
258eeda8122f69a36637d439246cf161
|
|
| BLAKE2b-256 |
dc6a19374409522085a2957bdfa7790a1d0f0a15acc748005e2e6c0d5934c2c9
|
Provenance
The following attestation bundles were made for engibench-0.0.1a3-py3-none-any.whl:
Publisher:
publish-pypi.yaml on IDEALLab/EngiBench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
engibench-0.0.1a3-py3-none-any.whl -
Subject digest:
f624d65e74f03d0e90d8e643b140a653d873f847aeafc2608da82494ddeb6979 - Sigstore transparency entry: 206931550
- Sigstore integration time:
-
Permalink:
IDEALLab/EngiBench@cca37f86bfab515d6c6c2e3f72c142a830d7e315 -
Branch / Tag:
refs/tags/v0.0.1-alpha3 - Owner: https://github.com/IDEALLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yaml@cca37f86bfab515d6c6c2e3f72c142a830d7e315 -
Trigger Event:
release
-
Statement type: