This is a reading guide for engineering design optimization theory and applications. The guide is organized by topic. For some topics, there numbered levels. You can start with any topic and go to any level within that topic. However, we recommend everyone have achieved at least Level 1 of the fundamentals. The guide is tailored to MDO Lab members, so it is biased toward our publications and the topics we research.
“Aerodynamic Design Optimization: Challenges and Perspectives” (Martins, 2022) is an overview of the aerodynamic and aerostructural optimization work we have done over the past decade. You can read our page on aerodynamic shape optimization.
“Enabling large-scale multidisciplinary design optimization through adjoint sensitivity analysis” (Martins & Kennedy, 2021) is an overview of three topics: structural optimization, aerostructural optimization, and MDO methods (and connection to OpenMDAO).
Chapters 4 and 5 of The Book are on gradient-based optimization algorithms. They go into a lot of detail so take your time with these chapters and expect to read it multiple times. You do not need to know all the details to use gradient-based optimization, but note the highlighted tips.
Chapter 6 of The Book is on methods for computing the gradients (derivatives) that you need for gradient-based optimization. We typically use all the methods described in here in some form. The UDE (Sec. 6.7) is the foundation for OpenMDAO.
To use optimization, you must get familiar with pyOptSparse (Wu et al., 2020). This is a common Python interface to several optimization packages, including SNOPT. Once you have read the paper, you can check out the pyOptSparse documentation.
Read the summary of every chapter of The Book
Read all the highlighted tips in The Book
Read Sec. 7.1 of The Book for more on the pros and cons of gradient-free algorithms (some of it was covered in Ch. 1). You can read the rest of the chapter if you are curious about gradient-free algorithms, but typically we do not use them.
Chapter 9 of The Book discusses multiobjective optimization. Even if you do not solve multiobjective problems, you should be familiar with the basics.
If you find yourself wanting more depth when reading The Book, follow the references it cites on the corresponding topic. The references were carefully curated and are the best sources for more details (in our opinion).
“Numerical Optimization” by Nocedal and Wright was one of the main sources for the Chapters 4 and 5 in The Book. You will find more depth and mathematical proofs in there (missing reference).
The gradient-based optimizer of choice in the MDO Lab is SNOPT. It is based on SQP (Sec. 5.5 in The Book), but SNOPT has its own variation of SQP, which is better explained in the SNOPT paper (missing reference).
The authors of SNOPT also wrote “Practical Optimization”, which has even more detail and background (missing reference).
To use SNOPT (even through pyOptSparse), you should be familiar with its options and other details, which can be found in the SNOPT manual (missing reference).
MDO is covered in The Book in Chapter 13. Two sections extend previous concepts to coupled systems: Sec. 13.2 (coupled models) builds on Chapter 3; Sec. 13.2 (coupled derivatives) builds on Chapter 6.
“Multidisciplinary design optimization: A survey of architectures” (Martins & Lambe, 2013) is comprehensive survey paper. However, it was written before MAUD and OpenMDAO (see below section for dedicated reading on these topics). Most of the distributed architectures mentioned in this survey are not currently being used.
OpenMDAO is a framework that facilitates the coupling of different models, their coupled solution, and computation of coupled derivatives (to use with gradient-based optimization). OpenMDAO is not an optimizer (although it uses optimizers, either directly or through pyOptSparse). Also, do not confuse the models built using OpenMDAO as being part of OpenMDAO. OpenMDAO is just the framework.
There are different levels of understanding of OpenMDAO. Level 1 is the minimum required to use OpenMDAO. Level 2 is required for building components in OpenMDAO.
Sec. 13.2 of The Book: Coupled models and solvers (includes MAUD in Sec. 13.2.6)
Tip 13.4 in The Book: OpenMDAO.
OpenMDAO paper (Gray et al., 2019)
OpenMDAO documentation: Getting Started, Basic User Guide, and some of the Theory Manual
Aerodynamic Design Optimization: Challenges and Perspectives
J. R. R. A. Martins
Computers & Fluids, 239105391, 2022
Enabling Large-scale Multidisciplinary Design Optimization through Adjoint Sensitivity Analysis
J. R. R. A. Martins, and G. J. Kennedy
Structural and Multidisciplinary Optimization, 642959–2974, 2021
pyOptSparse: A Python framework for large-scale constrained nonlinear optimization of sparse systems
N. Wu, G. Kenway, C. A. Mader, J. Jasa, and J. R. R. A. Martins
Journal of Open Source Software, 5(54):2564, 2020
OpenMDAO: An open-source framework for multidisciplinary design, analysis, and optimization
J. S. Gray, J. T. Hwang, J. R. R. A. Martins, K. T. Moore, and B. A. Naylor
Structural and Multidisciplinary Optimization, 59(4):1075–1104, 2019
A computational architecture for coupling heterogeneous numerical models and computing coupled derivatives
J. T. Hwang, and J. R. R. A. Martins
ACM Transactions on Mathematical Software, 44(4):Article 37, 2018
Multidisciplinary Design Optimization: A Survey of Architectures
J. R. R. A. Martins, and A. B. Lambe
AIAA Journal, 51(9):2049–2075, 2013
Review and Unification of Methods for Computing Derivatives of Multidisciplinary Computational Models
J. R. R. A. Martins, and J. T. Hwang
AIAA Journal, 51(11):2582–2599, 2013