https://github.com/smtorg/smt-design-space-ext
SMT design space extension for hierarchical variable handling
https://github.com/smtorg/smt-design-space-ext
Last synced: 5 months ago
JSON representation
SMT design space extension for hierarchical variable handling
- Host: GitHub
- URL: https://github.com/smtorg/smt-design-space-ext
- Owner: SMTorg
- License: bsd-3-clause
- Created: 2024-09-10T13:38:31.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-11-24T05:13:33.000Z (8 months ago)
- Last Synced: 2025-12-09T12:15:54.039Z (8 months ago)
- Language: Jupyter Notebook
- Homepage:
- Size: 118 KB
- Stars: 2
- Watchers: 4
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SMT Design Space Extension 🌳
**Enhancing SMT with Hierarchical & Conditional Design Spaces**
This package is an extension to the SMT (Surrogate Modeling Toolbox), offering a powerful framework to define and manage **hierarchical**, **mixed-type**, and **conditionally active** variables in design spaces.
---
## 🔍 What It Does
- **Hierarchical variables**: Support for nested conditional variables (e.g., a rotor configuration branch that only activates when `use_rotor = yes`).
- **Mixed types**: Handles continuous, integer or categorical variables uniformly.
- **Conditional activation**: Meta-variables powerfully control lower-level variable activation based on context.
- **Graph-based design space representation**: Clean and intuitive implementation of complex, branching designs.
- **Extensible subtress**: Easily add new types or layers of conditional logic.
---
## đź“– Why It Matters
In many engineering and simulation contexts, the design parameters form a structured, dependent hierarchy—optimizing them without a formal framework can lead to errors or inefficient models. This extension provides:
- A **formal representation** of hierarchical dependencies.
- Seamless integration with surrogate modeling tools and optimization routines.
- A foundation for improved experimental design and architectural exploration.
---
## đź”— Reference
This implementation is based on:
> **Hierarchical Modeling and Architecture Optimization: Review and Unified Framework**
> P. Saves, E. Hallé‑Hannan, J. Bussemaker, Y. Diouane, N. Bartoli (June 2025). arXiv:2506.22621 ([arXiv](https://arxiv.org/abs/2506.22621))
The paper provides a comprehensive survey and introduces a unified graph-based model that serves as the theoretical foundation for this extension.
---
## 📦 Installation
```bash
pip install smt-design-space-ext
```
https://pypi.org/project/smt-design-space-ext/
Requirements. See [Requirements](requirements.txt) for details.
---
## 🚀 Quick Start Example
```python
from smt_design_space_ext import (
HAS_CONFIG_SPACE,
HAS_ADSG,
AdsgDesignSpaceImpl,
ConfigSpaceDesignSpaceImpl,
BaseDesignSpace,
CategoricalVariable,
FloatVariable,
IntegerVariable,
OrdinalVariable,
)
ds = ConfigSpaceDesignSpaceImpl(
[
CategoricalVariable(["A", "B", "C"]), # x0
CategoricalVariable(["E", "F"]), # x1
IntegerVariable(0, 1), # x2
FloatVariable(0.1, 1), # x3
],
random_state=42,
)
ds.declare_decreed_var(
decreed_var=3, meta_var=0, meta_value="A"
) # Activate x3 if x0 == A
```
This dynamically builds a tree-like structure of variables, enabling clear and constrained space exploration.
---
## đź§© Integration
- Integrates readily with SMT’s Kriging modules.
- Compatible with Bayesian or gradient‑based optimizers.
- Prepare space definitions for use with surrogate modeling pipelines.
---
## 📚 Additional Resources
- The **SMT repository** contains tutorials and example notebooks to demonstrate usage.
- Issue tracker and usage discussions can be found under `SMTorg/smt-design-space-ext`.
- Author metadata and license summary confirm this is BSD‑licensed.
---
## âś… Citation
If you use this package in research, please cite:
```
P. Saves, E. Hallé‑Hannan, J. Bussemaker, Y. Diouane, N. Bartoli,
“Hierarchical Modeling and Architecture Optimization: Review and Unified Framework,”
arXiv:2506.22621, June 2025.
```
---
## 📜 License
Distributed under the **BSD-3-Clause** license. See [LICENSE](LICENSE) for details.