.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/formulations/plot_doe_sobieski_mdf_example.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_formulations_plot_doe_sobieski_mdf_example.py: MDF-based DOE on the Sobieski SSBJ test case ============================================ .. GENERATED FROM PYTHON SOURCE LINES 26-35 .. code-block:: default from __future__ import division, unicode_literals from matplotlib import pyplot as plt from gemseo.api import configure_logger, create_discipline, create_scenario from gemseo.problems.sobieski.core import SobieskiProblem configure_logger() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 36-43 Instantiate the disciplines ---------------------------- First, we instantiate the four disciplines of the use case: :class:`~gemseo.problems.sobieski.wrappers.SobieskiPropulsion`, :class:`~gemseo.problems.sobieski.wrappers.SobieskiAerodynamics`, :class:`~gemseo.problems.sobieski.wrappers.SobieskiMission` and :class:`~gemseo.problems.sobieski.wrappers.SobieskiStructure`. .. GENERATED FROM PYTHON SOURCE LINES 43-52 .. code-block:: default disciplines = create_discipline( [ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ] ) .. GENERATED FROM PYTHON SOURCE LINES 53-61 Build, execute and post-process the scenario -------------------------------------------- Then, we build the scenario which links the disciplines with the formulation and the optimization algorithm. Here, we use the :class:`.BiLevel` formulation. We tell the scenario to minimize -y_4 instead of minimizing y_4 (range), which is the default option. We need to define the design space. .. GENERATED FROM PYTHON SOURCE LINES 61-63 .. code-block:: default design_space = SobieskiProblem().read_design_space() .. GENERATED FROM PYTHON SOURCE LINES 64-66 Instantiate the scenario ^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 66-75 .. code-block:: default scenario = create_scenario( disciplines, formulation="MDF", objective_name="y_4", design_space=design_space, maximize_objective=True, scenario_type="DOE", ) .. GENERATED FROM PYTHON SOURCE LINES 76-78 Set the design constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 78-81 .. code-block:: default for constraint in ["g_1", "g_2", "g_3"]: scenario.add_constraint(constraint, "ineq") .. GENERATED FROM PYTHON SOURCE LINES 82-85 Execute the scenario ^^^^^^^^^^^^^^^^^^^^ Use provided analytic derivatives .. GENERATED FROM PYTHON SOURCE LINES 85-87 .. code-block:: default scenario.set_differentiation_method("user") .. GENERATED FROM PYTHON SOURCE LINES 88-93 Multiprocessing ^^^^^^^^^^^^^^^ It is possible to run a DOE in parallel using multiprocessing, in order to do this, we specify the number of processes to be used for the computation of the samples. .. GENERATED FROM PYTHON SOURCE LINES 95-104 .. warning:: The multiprocessing option has some limitations on Windows. For Python versions < 3.7 and Numpy < 1.20.0, subprocesses may get hung randomly during execution. It is strongly recommended to update your environment to avoid this problem. The features :class:`.MemoryFullCache` and :class:`.HDF5Cache` are not available for multiprocessing on Windows. As an alternative, we recommend the method :meth:`.DOEScenario.set_optimization_history_backup`. .. GENERATED FROM PYTHON SOURCE LINES 104-106 .. code-block:: default n_processes = 4 .. GENERATED FROM PYTHON SOURCE LINES 107-109 We define the algorithm options. Here the criterion = center option of pyDOE centers the points within the sampling intervals. .. GENERATED FROM PYTHON SOURCE LINES 109-119 .. code-block:: default algo_options = { "criterion": "center", # Evaluate gradient of the MDA # with coupled adjoint "eval_jac": True, # Run in parallel on 4 processors "n_processes": n_processes, } run_inputs = {"n_samples": 30, "algo": "lhs", "algo_options": algo_options} .. GENERATED FROM PYTHON SOURCE LINES 120-123 .. warning:: When running a parallel DOE on Windows, the execution must be protected to avoid recursive calls: .. GENERATED FROM PYTHON SOURCE LINES 123-126 .. code-block:: default if __name__ == "__main__": scenario.execute(run_inputs) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none INFO - 12:58:58: INFO - 12:58:58: *** Start DOE Scenario execution *** INFO - 12:58:58: DOEScenario INFO - 12:58:58: Disciplines: SobieskiPropulsion SobieskiAerodynamics SobieskiMission SobieskiStructure INFO - 12:58:58: MDOFormulation: MDF INFO - 12:58:58: Algorithm: lhs INFO - 12:58:58: Optimization problem: INFO - 12:58:58: Minimize: -y_4(x_shared, x_1, x_2, x_3) INFO - 12:58:58: With respect to: x_shared, x_1, x_2, x_3 INFO - 12:58:58: Subject to constraints: INFO - 12:58:58: g_1(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 12:58:58: g_2(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 12:58:58: g_3(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 12:58:58: DOE sampling: 0%| | 0/30 [00:00 .. GENERATED FROM PYTHON SOURCE LINES 140-147 .. tip:: Each post-processing method requires different inputs and offers a variety of customization options. Use the API function :meth:`~gemseo.api.get_post_processing_options_schema` to print a table with the attributes for any post-processing algo. Or refer to our dedicated page: :ref:`gen_post_algos`. .. GENERATED FROM PYTHON SOURCE LINES 149-151 Plot the scatter matrix ^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 151-155 .. code-block:: default scenario.post_process( "ScatterPlotMatrix", show=False, save=False, variables_list=["y_4", "x_shared"] ) .. image:: /examples/formulations/images/sphx_glr_plot_doe_sobieski_mdf_example_006.png :alt: plot doe sobieski mdf example :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 156-158 Plot correlations ^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 158-161 .. code-block:: default scenario.post_process("Correlations", show=False, save=False) # Workaround for HTML rendering, instead of ``show=True`` plt.show() .. image:: /examples/formulations/images/sphx_glr_plot_doe_sobieski_mdf_example_007.png :alt: R=0.98987, R=0.97511, R=0.99671, R=0.96235, R=0.99119, R=0.99866, R=0.95205, R=0.98584, R=0.99618, R=0.99936 :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none INFO - 12:59:04: Detected 10 correlations > 0.95 .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 6.573 seconds) .. _sphx_glr_download_examples_formulations_plot_doe_sobieski_mdf_example.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_doe_sobieski_mdf_example.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_doe_sobieski_mdf_example.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_