.. 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-39 .. code-block:: default from __future__ import division, unicode_literals from os import name as os_name from matplotlib import pyplot as plt from gemseo.api import configure_logger, create_discipline, create_scenario from gemseo.problems.sobieski.core import SobieskiProblem IS_NT = os_name == "nt" configure_logger() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 40-47 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 47-56 .. code-block:: default disciplines = create_discipline( [ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ] ) .. GENERATED FROM PYTHON SOURCE LINES 57-65 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 65-67 .. code-block:: default design_space = SobieskiProblem().read_design_space() .. GENERATED FROM PYTHON SOURCE LINES 68-70 Instantiate the scenario ^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 70-78 .. 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 79-81 Set the design constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 81-84 .. code-block:: default for constraint in ["g_1", "g_2", "g_3"]: scenario.add_constraint(constraint, "ineq") .. GENERATED FROM PYTHON SOURCE LINES 85-88 Execute the scenario ^^^^^^^^^^^^^^^^^^^^ Use provided analytic derivatives .. GENERATED FROM PYTHON SOURCE LINES 88-94 .. code-block:: default scenario.set_differentiation_method("user") n_processes = 4 if IS_NT: # Under windows, don't do multiprocessing n_processes = 1 .. GENERATED FROM PYTHON SOURCE LINES 95-97 We define the algorithm options. Here the criterion = center option of pyDOE centers the points within the sampling intervals. .. GENERATED FROM PYTHON SOURCE LINES 97-108 .. 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} scenario.execute(run_inputs) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none INFO - 09:24:48: INFO - 09:24:48: *** Start DOE Scenario execution *** INFO - 09:24:48: DOEScenario INFO - 09:24:48: Disciplines: SobieskiPropulsion SobieskiAerodynamics SobieskiMission SobieskiStructure INFO - 09:24:48: MDOFormulation: MDF INFO - 09:24:48: Algorithm: lhs INFO - 09:24:48: Optimization problem: INFO - 09:24:48: Minimize: -y_4(x_shared, x_1, x_2, x_3) INFO - 09:24:48: With respect to: x_shared, x_1, x_2, x_3 INFO - 09:24:48: Subject to constraints: INFO - 09:24:48: g_1(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 09:24:48: g_2(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 09:24:48: g_3(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 09:24:48: DOE sampling: 0%| | 0/30 [00:00 .. GENERATED FROM PYTHON SOURCE LINES 114-116 Plot the scatter matrix ^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 116-120 .. 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 121-123 Plot correlations ^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 123-126 .. 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 - 09:24:56: Detected 10 correlations > 0.95 .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 8.856 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 `_