The Design Space Graph (ADSG Core)#
The Design Space Graph (DSG) allows you to model design spaces using a directed graph that contains three types of architectural choices:
- Selection choices (see example below): selecting among mutually-exclusive options, used for selecting which nodes are part of an architecture instance
- Connection choices: connecting one or more source nodes to one or more target nodes, subject to connection constraints and optional node existence (due to selection choices)
- Additional design variables: continuous or discrete, subject to optional existence (due to selection choices)
The library implements:
- The directed graph, with:
- Nodes: generic, selection-choice, connector, connection-choice, design variable, metric
- Edges: derivation, incompatibility, connection, connection-exclusion
- Choice constraints: linked values, permutations, unordered, unordered non-replacing
- One or more derivation-start nodes
- Mechanisms for making choices
- Influence matrix
- Graph operations for applying selection- and connection-choices
- Mechanisms for formulating optimization problems
- Design variable encoding of selection- and connection-choices
- Hierarchy analysis and design vector correction
- Design vector to graph conversion
- Optimization problem statistics calculation
- Bridge to the architecture optimization algorithms in SBArchOpt
To get started with the DSG have a look at the guide or API reference. For detailed background information refer to the theory.
Scroll down for some quick examples.
Note: due to historical reasons the package and code refer to the ADSG (Architecture DSG), because originally it had been developed to model system architecture design spaces. In the context of this library, the ADSG and DSG can be considered to be equivalent.
Citing#
If you use the DSG in your work, please cite it:
J.H. Bussemaker. System Architecture Optimization: Function-Based Modeling, Optimization Algorithms, and Multidisciplinary Evaluation. Dissertation, Delft University of Technology, July 2025. DOI: 10.4233/uuid:246b18f9-1f8c-4ff7-b824-2b1786cf9d14
Installation#
First, create a conda environment (skip if you already have one):
Then install the package:
Optionally also install optimization algorithms (SBArchOpt):
If you want to interact with the DSG from a Jupyter notebook:
Examples#
An example DSG with two selection choices (see the guide):
An example DSG with a connection choice (see the guide):
The DSG of the Apollo problem:
The DSG of the GNC problem: