design-research-problems 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- design_research_problems-0.1.0/LICENSE +21 -0
- design_research_problems-0.1.0/PKG-INFO +118 -0
- design_research_problems-0.1.0/README.md +76 -0
- design_research_problems-0.1.0/pyproject.toml +118 -0
- design_research_problems-0.1.0/setup.cfg +4 -0
- design_research_problems-0.1.0/src/design_research_problems/__init__.py +73 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/peanut_sheller_fu2010/citation.bib +5 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/peanut_sheller_fu2010/problem.toml +26 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/peanut_sheller_fu2010/statement.md +18 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/pill_capsule_min_area/problem.toml +28 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/pill_capsule_min_area/statement.md +8 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/planar_truss_span/problem.toml +30 -0
- design_research_problems-0.1.0/src/design_research_problems/_assets/catalog/planar_truss_span/statement.md +10 -0
- design_research_problems-0.1.0/src/design_research_problems/_catalog/__init__.py +5 -0
- design_research_problems-0.1.0/src/design_research_problems/_catalog/_loader.py +220 -0
- design_research_problems-0.1.0/src/design_research_problems/_catalog/_manifest.py +22 -0
- design_research_problems-0.1.0/src/design_research_problems/_catalog/_registry.py +199 -0
- design_research_problems-0.1.0/src/design_research_problems/_exceptions.py +11 -0
- design_research_problems-0.1.0/src/design_research_problems/_lazy_exports.py +53 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/__init__.py +17 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/_assets.py +47 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/_grammar.py +63 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/_metadata.py +104 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/_optimization.py +161 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/_text.py +55 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/grammar/__init__.py +23 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/grammar/_planar_truss.py +418 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/optimization/__init__.py +5 -0
- design_research_problems-0.1.0/src/design_research_problems/problems/optimization/_pill.py +118 -0
- design_research_problems-0.1.0/src/design_research_problems/py.typed +1 -0
- design_research_problems-0.1.0/src/design_research_problems.egg-info/PKG-INFO +118 -0
- design_research_problems-0.1.0/src/design_research_problems.egg-info/SOURCES.txt +38 -0
- design_research_problems-0.1.0/src/design_research_problems.egg-info/dependency_links.txt +1 -0
- design_research_problems-0.1.0/src/design_research_problems.egg-info/requires.txt +19 -0
- design_research_problems-0.1.0/src/design_research_problems.egg-info/top_level.txt +1 -0
- design_research_problems-0.1.0/tests/test_examples.py +53 -0
- design_research_problems-0.1.0/tests/test_packaging_resources.py +99 -0
- design_research_problems-0.1.0/tests/test_public_api.py +29 -0
- design_research_problems-0.1.0/tests/test_registry_and_problems.py +229 -0
- design_research_problems-0.1.0/tests/test_trussme_real.py +23 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 The Design Research Collective
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: design-research-problems
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A compendium of canonical design research problems
|
|
5
|
+
Author: The Design Research Collective
|
|
6
|
+
Maintainer-email: "Christopher C. McComb" <ccm@cmu.edu>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://cmudrc.github.io/design-research-problems/
|
|
9
|
+
Project-URL: Documentation, https://cmudrc.github.io/design-research-problems/
|
|
10
|
+
Project-URL: Repository, https://github.com/cmudrc/design-research-problems
|
|
11
|
+
Project-URL: Issues, https://github.com/cmudrc/design-research-problems/issues
|
|
12
|
+
Keywords: design,research,optimization,benchmark,problems
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.12
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: numpy<3,>=1.26
|
|
26
|
+
Provides-Extra: grammar
|
|
27
|
+
Requires-Dist: trussme>=0.1.0; extra == "grammar"
|
|
28
|
+
Provides-Extra: opt
|
|
29
|
+
Requires-Dist: scipy<2,>=1.11; extra == "opt"
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: build<2,>=1.2; extra == "dev"
|
|
32
|
+
Requires-Dist: mypy<2,>=1.10; extra == "dev"
|
|
33
|
+
Requires-Dist: pre-commit<5,>=3.7; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest<9,>=8.2; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-cov<8,>=7.0; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff<1,>=0.6.0; extra == "dev"
|
|
37
|
+
Requires-Dist: sphinx<9,>=7.4; extra == "dev"
|
|
38
|
+
Requires-Dist: sphinx-rtd-theme<4,>=2.0; extra == "dev"
|
|
39
|
+
Requires-Dist: sphinxcontrib-mermaid<2,>=1.0; extra == "dev"
|
|
40
|
+
Requires-Dist: twine<7,>=5.1; extra == "dev"
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
|
|
43
|
+
# design-research-problems
|
|
44
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
45
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
46
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
47
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
48
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/docs-pages.yml)
|
|
49
|
+
|
|
50
|
+
`design-research-problems` is a compact library and compendium of design research
|
|
51
|
+
problems. It packages canonical research prompts, optimization benchmarks, and
|
|
52
|
+
discrete grammar-style problems behind a small, typed Python API.
|
|
53
|
+
|
|
54
|
+
## Overview
|
|
55
|
+
|
|
56
|
+
The initial release centers on three seed problem families:
|
|
57
|
+
|
|
58
|
+
- Text problems for human-subjects studies and prompt packets
|
|
59
|
+
- Optimization problems with typed bounds and lazy SciPy-backed solving
|
|
60
|
+
- Grammar problems that describe discrete design actions and optional evaluation adapters
|
|
61
|
+
|
|
62
|
+
The first catalog includes:
|
|
63
|
+
|
|
64
|
+
- `peanut_sheller_fu2010` for text-based design research
|
|
65
|
+
- `pill_capsule_min_area` for constrained continuous optimization
|
|
66
|
+
- `planar_truss_span` for a discrete topology grammar backed by `trussme`
|
|
67
|
+
|
|
68
|
+
## Quickstart
|
|
69
|
+
|
|
70
|
+
Requires Python 3.12+.
|
|
71
|
+
Install from PyPI with:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install design-research-problems
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install the optional optimization solver support with:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
pip install "design-research-problems[opt]"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Install the optional `trussme` grammar support with:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
pip install "design-research-problems[grammar]"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Then inspect the catalog directly from the installed package:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
python3 -c "from design_research_problems import list_problems; print(list_problems())"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
For local development, reproducible installs are pinned to Python `3.12.12` in
|
|
96
|
+
`.python-version`:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
python3 -m venv .venv
|
|
100
|
+
source .venv/bin/activate
|
|
101
|
+
make dev
|
|
102
|
+
make ci
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Docs
|
|
106
|
+
|
|
107
|
+
See the [published documentation](https://cmudrc.github.io/design-research-problems/)
|
|
108
|
+
for the guide and reference layout.
|
|
109
|
+
Build them locally with:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
make docs
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Contributing
|
|
116
|
+
|
|
117
|
+
Contribution guidelines live in
|
|
118
|
+
[CONTRIBUTING.md](https://github.com/cmudrc/design-research-problems/blob/main/CONTRIBUTING.md).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# design-research-problems
|
|
2
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
3
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
5
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/cmudrc/design-research-problems/actions/workflows/docs-pages.yml)
|
|
7
|
+
|
|
8
|
+
`design-research-problems` is a compact library and compendium of design research
|
|
9
|
+
problems. It packages canonical research prompts, optimization benchmarks, and
|
|
10
|
+
discrete grammar-style problems behind a small, typed Python API.
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
The initial release centers on three seed problem families:
|
|
15
|
+
|
|
16
|
+
- Text problems for human-subjects studies and prompt packets
|
|
17
|
+
- Optimization problems with typed bounds and lazy SciPy-backed solving
|
|
18
|
+
- Grammar problems that describe discrete design actions and optional evaluation adapters
|
|
19
|
+
|
|
20
|
+
The first catalog includes:
|
|
21
|
+
|
|
22
|
+
- `peanut_sheller_fu2010` for text-based design research
|
|
23
|
+
- `pill_capsule_min_area` for constrained continuous optimization
|
|
24
|
+
- `planar_truss_span` for a discrete topology grammar backed by `trussme`
|
|
25
|
+
|
|
26
|
+
## Quickstart
|
|
27
|
+
|
|
28
|
+
Requires Python 3.12+.
|
|
29
|
+
Install from PyPI with:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install design-research-problems
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Install the optional optimization solver support with:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install "design-research-problems[opt]"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Install the optional `trussme` grammar support with:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install "design-research-problems[grammar]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then inspect the catalog directly from the installed package:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
python3 -c "from design_research_problems import list_problems; print(list_problems())"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For local development, reproducible installs are pinned to Python `3.12.12` in
|
|
54
|
+
`.python-version`:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
python3 -m venv .venv
|
|
58
|
+
source .venv/bin/activate
|
|
59
|
+
make dev
|
|
60
|
+
make ci
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Docs
|
|
64
|
+
|
|
65
|
+
See the [published documentation](https://cmudrc.github.io/design-research-problems/)
|
|
66
|
+
for the guide and reference layout.
|
|
67
|
+
Build them locally with:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
make docs
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Contributing
|
|
74
|
+
|
|
75
|
+
Contribution guidelines live in
|
|
76
|
+
[CONTRIBUTING.md](https://github.com/cmudrc/design-research-problems/blob/main/CONTRIBUTING.md).
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "design-research-problems"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "A compendium of canonical design research problems"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.12"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{ name = "The Design Research Collective" }]
|
|
14
|
+
maintainers = [{ name = "Christopher C. McComb", email = "ccm@cmu.edu" }]
|
|
15
|
+
keywords = ["design", "research", "optimization", "benchmark", "problems"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
"Topic :: Scientific/Engineering",
|
|
24
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
25
|
+
"Typing :: Typed",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"numpy>=1.26,<3",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://cmudrc.github.io/design-research-problems/"
|
|
33
|
+
Documentation = "https://cmudrc.github.io/design-research-problems/"
|
|
34
|
+
Repository = "https://github.com/cmudrc/design-research-problems"
|
|
35
|
+
Issues = "https://github.com/cmudrc/design-research-problems/issues"
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
grammar = ["trussme>=0.1.0"]
|
|
39
|
+
opt = ["scipy>=1.11,<2"]
|
|
40
|
+
dev = [
|
|
41
|
+
"build>=1.2,<2",
|
|
42
|
+
"mypy>=1.10,<2",
|
|
43
|
+
"pre-commit>=3.7,<5",
|
|
44
|
+
"pytest>=8.2,<9",
|
|
45
|
+
"pytest-cov>=7.0,<8",
|
|
46
|
+
"ruff>=0.6.0,<1",
|
|
47
|
+
"sphinx>=7.4,<9",
|
|
48
|
+
"sphinx-rtd-theme>=2.0,<4",
|
|
49
|
+
"sphinxcontrib-mermaid>=1.0,<2",
|
|
50
|
+
"twine>=5.1,<7",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[tool.setuptools]
|
|
54
|
+
package-dir = { "" = "src" }
|
|
55
|
+
include-package-data = true
|
|
56
|
+
|
|
57
|
+
[tool.setuptools.packages.find]
|
|
58
|
+
where = ["src"]
|
|
59
|
+
|
|
60
|
+
[tool.setuptools.package-data]
|
|
61
|
+
design_research_problems = [
|
|
62
|
+
"py.typed",
|
|
63
|
+
"_assets/catalog/*/*.toml",
|
|
64
|
+
"_assets/catalog/*/*.md",
|
|
65
|
+
"_assets/catalog/*/*.bib",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
[tool.pytest.ini_options]
|
|
69
|
+
addopts = "-q"
|
|
70
|
+
testpaths = ["tests"]
|
|
71
|
+
markers = [
|
|
72
|
+
"examples_full: deterministic example execution suite",
|
|
73
|
+
"examples_smoke: lightweight example smoke checks",
|
|
74
|
+
"trussme_real: tests that require an installed trussme package",
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
[tool.ruff]
|
|
78
|
+
line-length = 120
|
|
79
|
+
target-version = "py312"
|
|
80
|
+
src = ["src", "tests", "examples", "scripts"]
|
|
81
|
+
|
|
82
|
+
[tool.ruff.format]
|
|
83
|
+
quote-style = "double"
|
|
84
|
+
indent-style = "space"
|
|
85
|
+
skip-magic-trailing-comma = false
|
|
86
|
+
line-ending = "auto"
|
|
87
|
+
|
|
88
|
+
[tool.ruff.lint]
|
|
89
|
+
select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "D"]
|
|
90
|
+
|
|
91
|
+
[tool.ruff.lint.pydocstyle]
|
|
92
|
+
convention = "google"
|
|
93
|
+
|
|
94
|
+
[tool.ruff.lint.per-file-ignores]
|
|
95
|
+
"tests/*.py" = ["D"]
|
|
96
|
+
"examples/**/*.py" = ["D"]
|
|
97
|
+
"scripts/*.py" = ["D"]
|
|
98
|
+
|
|
99
|
+
[tool.mypy]
|
|
100
|
+
packages = ["design_research_problems"]
|
|
101
|
+
python_version = "3.12"
|
|
102
|
+
warn_unused_configs = true
|
|
103
|
+
check_untyped_defs = true
|
|
104
|
+
disallow_untyped_defs = true
|
|
105
|
+
no_implicit_optional = true
|
|
106
|
+
warn_redundant_casts = true
|
|
107
|
+
warn_unused_ignores = true
|
|
108
|
+
warn_return_any = true
|
|
109
|
+
strict_equality = true
|
|
110
|
+
|
|
111
|
+
[[tool.mypy.overrides]]
|
|
112
|
+
module = [
|
|
113
|
+
"scipy",
|
|
114
|
+
"scipy.*",
|
|
115
|
+
"trussme",
|
|
116
|
+
"trussme.*",
|
|
117
|
+
]
|
|
118
|
+
ignore_missing_imports = true
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Curated public package interface with lazily resolved exports."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
6
|
+
from typing import TYPE_CHECKING, Final
|
|
7
|
+
|
|
8
|
+
from design_research_problems._lazy_exports import module_dir, resolve_lazy_export
|
|
9
|
+
|
|
10
|
+
_EXPORTS: Final[dict[str, str]] = {
|
|
11
|
+
"ProblemKind": "design_research_problems.problems:ProblemKind",
|
|
12
|
+
"ProblemMetadata": "design_research_problems.problems:ProblemMetadata",
|
|
13
|
+
"ProblemTaxonomy": "design_research_problems.problems:ProblemTaxonomy",
|
|
14
|
+
"Citation": "design_research_problems.problems:Citation",
|
|
15
|
+
"ProblemAsset": "design_research_problems.problems:ProblemAsset",
|
|
16
|
+
"TextProblem": "design_research_problems.problems:TextProblem",
|
|
17
|
+
"OptimizationProblem": "design_research_problems.problems:OptimizationProblem",
|
|
18
|
+
"GrammarProblem": "design_research_problems.problems:GrammarProblem",
|
|
19
|
+
"ProblemRegistry": "design_research_problems._catalog:ProblemRegistry",
|
|
20
|
+
"MissingOptionalDependencyError": "design_research_problems._exceptions:MissingOptionalDependencyError",
|
|
21
|
+
"ProblemEvaluationError": "design_research_problems._exceptions:ProblemEvaluationError",
|
|
22
|
+
"get_problem": "design_research_problems._catalog:get_problem",
|
|
23
|
+
"list_problems": "design_research_problems._catalog:list_problems",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
__all__ = ["__version__", *_EXPORTS.keys()]
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
__version__ = version("design-research-problems")
|
|
30
|
+
except PackageNotFoundError:
|
|
31
|
+
__version__ = "0+unknown"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def __getattr__(name: str) -> object:
|
|
35
|
+
"""Resolve and cache one deferred public export.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
name: Public symbol name requested from the package module.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
Resolved export object.
|
|
42
|
+
"""
|
|
43
|
+
return resolve_lazy_export(
|
|
44
|
+
module_name=__name__,
|
|
45
|
+
exports=_EXPORTS,
|
|
46
|
+
export_name=name,
|
|
47
|
+
namespace=globals(),
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def __dir__() -> list[str]:
|
|
52
|
+
"""Return package attributes, including deferred exports.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Sorted attribute list for interactive discovery.
|
|
56
|
+
"""
|
|
57
|
+
return module_dir(globals(), __all__)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
if TYPE_CHECKING:
|
|
61
|
+
from ._catalog import ProblemRegistry as ProblemRegistry
|
|
62
|
+
from ._catalog import get_problem as get_problem
|
|
63
|
+
from ._catalog import list_problems as list_problems
|
|
64
|
+
from ._exceptions import MissingOptionalDependencyError as MissingOptionalDependencyError
|
|
65
|
+
from ._exceptions import ProblemEvaluationError as ProblemEvaluationError
|
|
66
|
+
from .problems import Citation as Citation
|
|
67
|
+
from .problems import GrammarProblem as GrammarProblem
|
|
68
|
+
from .problems import OptimizationProblem as OptimizationProblem
|
|
69
|
+
from .problems import ProblemAsset as ProblemAsset
|
|
70
|
+
from .problems import ProblemKind as ProblemKind
|
|
71
|
+
from .problems import ProblemMetadata as ProblemMetadata
|
|
72
|
+
from .problems import ProblemTaxonomy as ProblemTaxonomy
|
|
73
|
+
from .problems import TextProblem as TextProblem
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
problem_id = "peanut_sheller_fu2010"
|
|
2
|
+
title = "Design Problem - Device to shell peanuts"
|
|
3
|
+
summary = "A text-based design prompt about a low-cost peanut sheller for small-scale farmers."
|
|
4
|
+
kind = "text"
|
|
5
|
+
statement_file = "statement.md"
|
|
6
|
+
citation_file = "citation.bib"
|
|
7
|
+
citation_key = "fu2010design"
|
|
8
|
+
citation_kind = "bibtex"
|
|
9
|
+
feature_flags = [
|
|
10
|
+
"statement-markdown",
|
|
11
|
+
"citation-backed",
|
|
12
|
+
"prompt-packet",
|
|
13
|
+
"human-subjects-ready",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
[taxonomy]
|
|
17
|
+
formulation = "textual_prompt"
|
|
18
|
+
convexity = "not_applicable"
|
|
19
|
+
design_variable_type = "not_applicable"
|
|
20
|
+
is_dynamic = false
|
|
21
|
+
orientation = "engineering_practical"
|
|
22
|
+
feasibility_ratio_hint = 1.0
|
|
23
|
+
objective_mode = "qualitative"
|
|
24
|
+
constraint_nature = "informal"
|
|
25
|
+
bounds_summary = "not_applicable"
|
|
26
|
+
tags = ["text", "human-subjects", "agriculture", "mechanical-design"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Design Problem - Device to shell peanuts
|
|
2
|
+
|
|
3
|
+
In places like Haiti and certain West African countries, peanuts are a
|
|
4
|
+
significant crop. Most peanut farmers shell their peanuts by hand, an
|
|
5
|
+
inefficient and labor-intensive process. Our goal is to build a low-cost,
|
|
6
|
+
easy to manufacture peanut sheller targeted at individuals and small
|
|
7
|
+
cooperatives that will increase the productivity of the peanut farmers.
|
|
8
|
+
Further, this peanut sheller should be manufacturable with materials that are
|
|
9
|
+
readily available in the target communities. Our target throughput is
|
|
10
|
+
approximately 50 kg (110 lbs) per hour.
|
|
11
|
+
|
|
12
|
+
# Customer Needs
|
|
13
|
+
|
|
14
|
+
- Must remove the shell with minimal damage to the peanuts.
|
|
15
|
+
- Electrical outlets are not available as a power source.
|
|
16
|
+
- A large quantity of peanuts must be quickly shelled.
|
|
17
|
+
- Low cost.
|
|
18
|
+
- Easy to manufacture.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
problem_id = "pill_capsule_min_area"
|
|
2
|
+
title = "Pill capsule minimum-area problem"
|
|
3
|
+
summary = "A two-variable constrained optimization problem that minimizes capsule surface area at fixed volume."
|
|
4
|
+
kind = "optimization"
|
|
5
|
+
statement_file = "statement.md"
|
|
6
|
+
implementation = "design_research_problems.problems.optimization._pill:PillCapsuleMinArea"
|
|
7
|
+
feature_flags = [
|
|
8
|
+
"statement-markdown",
|
|
9
|
+
"bounded-variables",
|
|
10
|
+
"equality-constraint",
|
|
11
|
+
"seeded-data-generation",
|
|
12
|
+
"optional-solver",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[parameters]
|
|
16
|
+
required_volume = 1e-6
|
|
17
|
+
|
|
18
|
+
[taxonomy]
|
|
19
|
+
formulation = "nonlinear_program"
|
|
20
|
+
convexity = "not_guaranteed"
|
|
21
|
+
design_variable_type = "continuous"
|
|
22
|
+
is_dynamic = false
|
|
23
|
+
orientation = "mathematical"
|
|
24
|
+
feasibility_ratio_hint = 0.5
|
|
25
|
+
objective_mode = "single"
|
|
26
|
+
constraint_nature = "hard"
|
|
27
|
+
bounds_summary = "radius and length bounded on [0, 1]"
|
|
28
|
+
tags = ["optimization", "continuous", "nonlinear", "single-objective"]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Pill capsule minimum-area problem
|
|
2
|
+
|
|
3
|
+
Minimize the surface area of a capsule-shaped pill while satisfying a fixed
|
|
4
|
+
volume requirement. The design variables are the capsule radius and cylindrical
|
|
5
|
+
section length. Both variables are bounded on [0, 1].
|
|
6
|
+
|
|
7
|
+
This seed problem is a compact constrained optimization benchmark for design
|
|
8
|
+
research workflows and solver experiments.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
problem_id = "planar_truss_span"
|
|
2
|
+
title = "Planar truss span grammar problem"
|
|
3
|
+
summary = "A discrete topology grammar for adding and removing joints and members in a planar truss."
|
|
4
|
+
kind = "grammar"
|
|
5
|
+
statement_file = "statement.md"
|
|
6
|
+
implementation = "design_research_problems.problems.grammar._planar_truss:PlanarTrussSpanProblem"
|
|
7
|
+
feature_flags = [
|
|
8
|
+
"statement-markdown",
|
|
9
|
+
"serializable-state",
|
|
10
|
+
"discrete-actions",
|
|
11
|
+
"optional-evaluator",
|
|
12
|
+
"external-adapter",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[parameters]
|
|
16
|
+
span = 10.0
|
|
17
|
+
max_height = 5.0
|
|
18
|
+
load_magnitude = 1000.0
|
|
19
|
+
|
|
20
|
+
[taxonomy]
|
|
21
|
+
formulation = "discrete_grammar"
|
|
22
|
+
convexity = "not_applicable"
|
|
23
|
+
design_variable_type = "discrete"
|
|
24
|
+
is_dynamic = false
|
|
25
|
+
orientation = "engineering_practical"
|
|
26
|
+
feasibility_ratio_hint = 0.25
|
|
27
|
+
objective_mode = "single"
|
|
28
|
+
constraint_nature = "hard"
|
|
29
|
+
bounds_summary = "planar topology over a fixed span and height envelope"
|
|
30
|
+
tags = ["grammar", "truss", "discrete", "topology"]
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Planar truss span grammar problem
|
|
2
|
+
|
|
3
|
+
Create a stable, lightweight planar truss spanning a fixed distance between a
|
|
4
|
+
left pinned support and a right roller support. The grammar begins with the
|
|
5
|
+
supports and one loaded free joint. Designers can add interior joints, add
|
|
6
|
+
members, and remove members.
|
|
7
|
+
|
|
8
|
+
States are evaluated by translating the library-owned grammar state into a
|
|
9
|
+
fresh `trussme.Truss`, applying the load, and attempting a structural
|
|
10
|
+
analysis. Singular or unstable states are treated as infeasible results.
|