Skip to content

SMTorg/smt-design-space-ext

Repository files navigation

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)

The paper provides a comprehensive survey and introduces a unified graph-based model that serves as the theoretical foundation for this extension.


📦 Installation

pip install smt-design-space-ext

https://pypi.org/project/smt-design-space-ext/

Requirements. See Requirements for details.


🚀 Quick Start Example

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 for details.

About

SMT design space extension for hierarchical variable handling

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •