Welcome to Distributed Design Optimizer¶
Multidisciplinary Design Optimization aims to enable the application of optimization algorithms to complex engineered systems, ranging from aerospace and automotive to robotics and microelectronics. Such multi-component systems typically consist of coupled subsystems, each characterized by its own design variables, constraints and objectives. Without adequate coordination of these couplings, subsystems may be optimal in isolation while the overall system remains suboptimal or even infeasible [38, 31, 39]. More details can be found in Distributed Design Approach.
Truly distributed optimization algorithms allow subsystems to retain control over their local design variables while overall optimlity and consistency is driven through coordination. Promising approaches include Primal-Dual methods [9] and a recent Sensitivity-based Distributed Programming method [10]. More details can be foudn in Categorization and Selection of Suitable Solution Approaches.
However, no general-purpose software framework currently exists that supports intuitive distributed problem definition, provides a range of suitable distributed algorithms, is modular and extensible, and enables both execution and post-processing in local or cluster-based environments.
This work introduces DistributedDesignOptimizer, an open-source, modular Python framework designed to fill this gap. It provides features to setup, execute and process state-of-the-art distributed optimization algorithms. Its object-oriented programming structure allows developers to implement and test their novel approaches on a set of standardized benchmark problems. Engineers can easily define their distributed optimization problem, select from a set of already implemented algorithms and execute the distributed optimization algorithm. Furthermore, the framework allows to process and analyze the algorithm's behavior in a graphical user interface, helping both developers and engineers gain insights.
The framework is assessed against the following six features:
- Feature 1: Problem Definition — Design engineers can formulate their distributed design optimization problem (in the spirit of Distributed Design Approach) independent of the chosen algorithm.
- Feature 2: Choice of Algorithm — Design engineers can choose and execute any suitable distributed optimization algorithm mentioned in Categorization and Selection of Suitable Solution Approaches.
- Feature 3: Modular and Extendable Framework — Algorithm developers can easily implement novel distributed optimization algorithms within a modular software framework mirroring the blueprint put forth by the identified Unified Algorithmic Structure
- Feature 4: Standardized Benchmark Problems — Design engineers and algorithm developers should be able to test and compare different algorithms on a standardized set of benchmark problems provided by the software framework.
- Feature 5: Processing and Analysis Capabilities — Design engineers and algorithm developers can process and analyze (preferably during runtime) the executed distributed algorithm and gain insights in order to evaluate or modify its behavior.
- Feature 6: Local and Cluster Deployment — The chosen distributed optimization algorithm is deployable on a local machine or a distributed computation cluster.
The following table assesses existing distributed optimization software frameworks against these features. Each circle indicates the degree of fulfilment: fully satisfied, partially satisfied, and not satisfied. Frameworks that are not applicable to the distributed design optimization formulation or algorithms considered in this work are marked by an asterisk (*).
| Framework | Feat. 1 | Feat. 2 | Feat. 3 | Feat. 4 | Feat. 5 | Feat. 6 |
|---|---|---|---|---|---|---|
| Boyd ADMM [40] | ||||||
| Sutor ADMM [41] | ||||||
| GRAMPC-D [42] | * | |||||
| ProxAL [17] | * | |||||
| PycityScheduling [43, 44] | * | |||||
| ProximalAlgorithms.jl [45] | * | |||||
| pyMDO [46, 47, 48] | * | |||||
| OpenMDAO [49], GEMSEO [50] | * | |||||
| ALADIN-α [51] | ||||||
| DISROPT [52] | ||||||
| atcPortal / atcEngine [53] | ||||||
| ALC Matlab toolbox [54] | ||||||
| NoHiMDO, DMDO, NHATC | ||||||
| mlprogram [1] | ||||||
| DistributedDesignOptimizer |
Acknowledgement
The DDO contributors gratefully acknowledge Albert de Wit for generously sharing the source files of the mlprogram framework [1], from
which DistributedDesignOptimizer is derived. His openness and willingness to share his work laid the foundation for this framework and is deeply appreciated
by the DDO contributors.
The DDO is under continued active development. See Roadmap and Contribution > Reporting Issues, Roadmap and Contribution > Roadmap for details.