11 May 2024 | Victor Gandarillas · Anugrah Jo Joshy · Mark Z. Sperry · Alexander K. Ivanov · John T. Hwang
This paper presents a graph-based methodology for constructing computational models that automates adjoint-based sensitivity analysis. The adjoint method is efficient for computing sensitivities in systems with many inputs, but its implementation is complex and time-consuming, especially in large-scale multidisciplinary design optimization (MDO). To address this, the authors propose a three-stage compiler and a new modeling language, the Computational System Design Language (CSDL), which provides an appropriate input for the compiler front end. The compiler uses a graph representation of the numerical model to automatically generate a computational model that computes adjoint-based sensitivities for use in an optimization framework. For two engineering models, this approach reduces the amount of user code by approximately half without increasing computation time. The paper also includes a best-case complexity analysis built into the compiler to estimate memory requirements for evaluating a computational model and its derivatives, independent of the compiler backend. Future compiler implementations are expected to approach the theoretical best-case memory cost and improve runtime performance for both model evaluation and derivative computation. The paper discusses various methods for computing derivatives, including numerical differentiation, symbolic differentiation, and automatic differentiation (AD). AD is similar to symbolic differentiation and has two forms: forward-mode and reverse-mode differentiation. AD libraries are used in machine learning for backpropagation and can implement implicit differentiation, vectorization, and reverse-mode differentiation. The authors conclude that the proposed methodology provides an efficient and accurate way to perform adjoint-based sensitivity analysis in large-scale MDO.This paper presents a graph-based methodology for constructing computational models that automates adjoint-based sensitivity analysis. The adjoint method is efficient for computing sensitivities in systems with many inputs, but its implementation is complex and time-consuming, especially in large-scale multidisciplinary design optimization (MDO). To address this, the authors propose a three-stage compiler and a new modeling language, the Computational System Design Language (CSDL), which provides an appropriate input for the compiler front end. The compiler uses a graph representation of the numerical model to automatically generate a computational model that computes adjoint-based sensitivities for use in an optimization framework. For two engineering models, this approach reduces the amount of user code by approximately half without increasing computation time. The paper also includes a best-case complexity analysis built into the compiler to estimate memory requirements for evaluating a computational model and its derivatives, independent of the compiler backend. Future compiler implementations are expected to approach the theoretical best-case memory cost and improve runtime performance for both model evaluation and derivative computation. The paper discusses various methods for computing derivatives, including numerical differentiation, symbolic differentiation, and automatic differentiation (AD). AD is similar to symbolic differentiation and has two forms: forward-mode and reverse-mode differentiation. AD libraries are used in machine learning for backpropagation and can implement implicit differentiation, vectorization, and reverse-mode differentiation. The authors conclude that the proposed methodology provides an efficient and accurate way to perform adjoint-based sensitivity analysis in large-scale MDO.