Architecture Optimization
After the design space has been modeled and evaluation code has been implemented and connected, the optimization problem can be formalized and executed. Optimization of SAO problems is challenging, however, because they in general are:

Executing the Optimization Problem
For ADORE, the optimization capabilities are implemented in the open-source SBArchOpt library.
ADORE SAO problems can be executed in two ways:
- In Python, directly using the ADORE and SBArchOpt API.
- In an external evaluation environment, using the Remote File-Based SAO (RFSAO) mechanism.
Choosing the Optimization Algorithm
Two classes of optimization algorithms usually work well for solving such problems:
- Genetic algorithms like NSGA-II: powerful and flexible, however requires many function evaluations.
- Surrogate-Based Optimization (SBO) algorithms: uses machine learning to predict the optimal areas in the design space, requiring less function evaluations than genetic algorithms. ADORE uses SBO algorithms that are specially modified for solving SAO problems.
If evaluation is cheap (i.e. takes less than several seconds per evaluation), then you should use NSGA-II, otherwise it is recommended to use SBO.
Background and Theory
For more details about the optimization algorithms used by ADORE and implemented in SBArchOpt, refer to the following publications:
Bussemaker, J.H., et al., (2025). System Architecture Optimization Strategies: Dealing with Expensive Hierarchical Problems. Journal of Global Optimization, 91(4), 851-895. DOI: 10.1007/s10898-024-01443-8
Bussemaker, J.H., et al., (2024). Surrogate-Based Optimization of System Architectures Subject to Hidden Constraints. In AIAA AVIATION 2024 FORUM. Las Vegas, NV, USA. DOI: 10.2514/6.2024-4401