.. Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. .. Contributors: :author: Matthias De Lozzo .. _overview: Overview ======== |g| stands for Generic Engine for Multi-disciplinary Scenarios, Exploration and Optimization. Built on top of `NumPy `_, `SciPy `_ and `Matplotlib `_ libraries, this `Python `__ library enables an automatic treatment of design problems, using design of experiments, optimization algorithms and graphic post-processing. |g| is more particularly specialized in `Multidisciplinary Design Optimization `_ (:term:`MDO`). What is |g| used for? --------------------- Let us consider a design problem to be solved over a particular design space and using different :term:`simulation software` (called :term:`disciplines `). From this information, |g| carries out the following steps: #. **Create** a :term:`scenario`, translating this design problem into a mathematical :term:`optimization problem`. The user can choose its favorite :ref:`MDO formulation ` (or architecture) or test another one, by simply giving the name of the formulation to the scenario. :ref:`Bi-level MDO formulations ` allow to use disciplines that are themselves scenarios. #. **Solve** this design problem, using either an :term:`optimization algorithm` or a :term:`DOE`. #. **Plot** the results and logs of the optimization problem resolution. The power of |g| ---------------- Fully based on the power of object-oriented programming, the :term:`scenario` automatically generates the :term:`process`, with corresponding :term:`work flow` and :term:`data flow`. |g| aims at pushing forward the limits of automation in simulation processes development, with a particular focus made on: - the integration of heterogeneous simulation environments in industrial and research contexts, - the integration of state of the art algorithms for optimization, design of experiments, and coupled analyses, - the automation of :term:`MDO` results analysis, - the development of distributed and multi-level :ref:`MDO formulations `. .. figure:: /_images/bilevel_ssbj.png A bi-level MDO formulation on Sobieski's SSBJ test case. Main features ------------- Basics of MDO ************* - Analyse a MDO problem and generate a N2 and XDSM diagram without wrapping any tool or writing code :ref:`[Read more] ` - Use different optimization algorithms :ref:`[Read more] ` - Use different sampling methods for :term:`design of experiments ` :ref:`[Read more] ` - Use different :ref:`MDO formulations `: :ref:`MDF `, :ref:`IDF `, :ref:`bilevel ` and disciplinary optimizer :ref:`[Read more] ` - Visualize a :ref:`MDO formulation ` as an :ref:`XDSM diagram ` :ref:`[Read more] ` - Use different :ref:`mda` algorithms: fixed-point algorithms (Gauss-Seidel and Jacobi), root finding methods (Newton Raphson and Quasi-Newton) and hybrid techniques :ref:`[Read more] ` - Use different surrogate models to substitute a costly discipline within a process: linear regression, RBF model and Gaussian process regression :ref:`[Read more] ` - Visualize the optimization results by means of many graphs :ref:`[Read more] ` - Record and cache the disciplines inputs and outputs into :term:`HDF` files :ref:`[Read more] ` - Experiment with different |g| 's benchmark :term:`MDO` problems :ref:`[Read more] ` Advanced techniques in MDO ************************** - Create simple analytic disciplines using symbolic calculation :ref:`[Read more] ` - Use a cheap scalable model instead of an costly discipline in order to compare different formulation performances :ref:`[Read more] ` - Monitor the execution of a scenario using logs, :ref:`XDSM ` diagram or an observer design pattern :ref:`[Read more] ` Development *********** - Interface simulation software with |g| using :term:`JSON` schema based grammars for inputs and output description and a wrapping class for execution :ref:`[Read more] ` Plug-in options *************** - Options of the available optimization algorithms :ref:`[Read more] ` - Options of the available DOE algorithms :ref:`[Read more] ` - Options of the available MDA algorithms :ref:`[Read more] ` - Options of the available formulation algorithms :ref:`[Read more] ` - Options of the available post-processing algorithms :ref:`[Read more] ` - Options of the available machine learning algorithms :ref:`[Read more] `