.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/formulations/plot_sobieski_idf_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_sobieski_idf_example.py: IDF-based MDO on the Sobieski SSBJ test case ============================================ .. GENERATED FROM PYTHON SOURCE LINES 24-32 .. code-block:: default from gemseo.api import configure_logger from gemseo.api import create_discipline from gemseo.api import create_scenario from gemseo.problems.sobieski.core.problem import SobieskiProblem from matplotlib import pyplot as plt configure_logger() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 33-40 Instantiate the disciplines ---------------------------- First, we instantiate the four disciplines of the use case: :class:`~gemseo.problems.sobieski.disciplines.SobieskiPropulsion`, :class:`~gemseo.problems.sobieski.disciplines.SobieskiAerodynamics`, :class:`~gemseo.problems.sobieski.disciplines.SobieskiMission` and :class:`~gemseo.problems.sobieski.disciplines.SobieskiStructure`. .. GENERATED FROM PYTHON SOURCE LINES 40-49 .. code-block:: default disciplines = create_discipline( [ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ] ) .. GENERATED FROM PYTHON SOURCE LINES 50-59 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:`.IDF` formulation. We tell the scenario to minimize -y_4 instead of minimizing y_4 (range), which is the default option. Instantiate the scenario ^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 59-68 .. code-block:: default design_space = SobieskiProblem().design_space scenario = create_scenario( disciplines, "IDF", objective_name="y_4", design_space=design_space, maximize_objective=True, ) .. GENERATED FROM PYTHON SOURCE LINES 69-71 Set the design constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 71-74 .. code-block:: default for c_name in ["g_1", "g_2", "g_3"]: scenario.add_constraint(c_name, "ineq") .. GENERATED FROM PYTHON SOURCE LINES 75-79 Define the algorithm inputs ^^^^^^^^^^^^^^^^^^^^^^^^^^^ We set the maximum number of iterations, the optimizer and the optimizer options .. GENERATED FROM PYTHON SOURCE LINES 79-87 .. code-block:: default algo_options = { "ftol_rel": 1e-10, "ineq_tolerance": 1e-3, "eq_tolerance": 1e-3, "normalize_design_space": True, } scn_inputs = {"max_iter": 20, "algo": "SLSQP", "algo_options": algo_options} .. GENERATED FROM PYTHON SOURCE LINES 88-90 Execute the scenario ^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 90-92 .. code-block:: default scenario.execute(scn_inputs) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none INFO - 10:05:40: INFO - 10:05:40: *** Start MDOScenario execution *** INFO - 10:05:40: MDOScenario INFO - 10:05:40: Disciplines: SobieskiPropulsion SobieskiAerodynamics SobieskiMission SobieskiStructure INFO - 10:05:40: MDO formulation: IDF INFO - 10:05:40: Optimization problem: INFO - 10:05:40: minimize -y_4(x_shared, y_14, y_24, y_34) INFO - 10:05:40: with respect to x_1, x_2, x_3, x_shared, y_12, y_14, y_21, y_23, y_24, y_31, y_32, y_34 INFO - 10:05:40: subject to constraints: INFO - 10:05:40: g_1(x_shared, x_1, y_31, y_21) <= 0.0 INFO - 10:05:40: g_2(x_shared, x_2, y_32, y_12) <= 0.0 INFO - 10:05:40: g_3(x_shared, x_3, y_23) <= 0.0 INFO - 10:05:40: y_31_y_32_y_34: y_31#y_32#y_34(x_shared, x_3, y_23): y_31(x_shared, x_3, y_23) - y_31 == 0.0 INFO - 10:05:40: y_32(x_shared, x_3, y_23) - y_32 == 0.0 INFO - 10:05:40: y_34(x_shared, x_3, y_23) - y_34 == 0.0 INFO - 10:05:40: y_21_y_23_y_24: y_21#y_23#y_24(x_shared, x_2, y_32, y_12): y_21(x_shared, x_2, y_32, y_12) - y_21 == 0.0 INFO - 10:05:40: y_23(x_shared, x_2, y_32, y_12) - y_23 == 0.0 INFO - 10:05:40: y_24(x_shared, x_2, y_32, y_12) - y_24 == 0.0 INFO - 10:05:40: y_12_y_14: y_12#y_14(x_shared, x_1, y_31, y_21): y_12(x_shared, x_1, y_31, y_21) - y_12 == 0.0 INFO - 10:05:40: y_14(x_shared, x_1, y_31, y_21) - y_14 == 0.0 INFO - 10:05:40: over the design space: INFO - 10:05:40: +----------+-------------+--------------------+-------------+-------+ INFO - 10:05:40: | name | lower_bound | value | upper_bound | type | INFO - 10:05:40: +----------+-------------+--------------------+-------------+-------+ INFO - 10:05:40: | x_shared | 0.01 | 0.05 | 0.09 | float | INFO - 10:05:40: | x_shared | 30000 | 45000 | 60000 | float | INFO - 10:05:40: | x_shared | 1.4 | 1.6 | 1.8 | float | INFO - 10:05:40: | x_shared | 2.5 | 5.5 | 8.5 | float | INFO - 10:05:40: | x_shared | 40 | 55 | 70 | float | INFO - 10:05:40: | x_shared | 500 | 1000 | 1500 | float | INFO - 10:05:40: | x_1 | 0.1 | 0.25 | 0.4 | float | INFO - 10:05:40: | x_1 | 0.75 | 1 | 1.25 | float | INFO - 10:05:40: | x_2 | 0.75 | 1 | 1.25 | float | INFO - 10:05:40: | x_3 | 0.1 | 0.5 | 1 | float | INFO - 10:05:40: | y_14 | 24850 | 50606.9741711 | 77100 | float | INFO - 10:05:40: | y_14 | -7700 | 7306.20262124 | 45000 | float | INFO - 10:05:40: | y_32 | 0.235 | 0.5027962499999999 | 0.795 | float | INFO - 10:05:40: | y_31 | 2960 | 6354.32430691 | 10185 | float | INFO - 10:05:40: | y_24 | 0.44 | 4.15006276 | 11.13 | float | INFO - 10:05:40: | y_34 | 0.44 | 1.10754577 | 1.98 | float | INFO - 10:05:40: | y_23 | 3365 | 12194.2671934 | 26400 | float | INFO - 10:05:40: | y_21 | 24850 | 50606.9741711 | 77250 | float | INFO - 10:05:40: | y_12 | 24850 | 50606.9742 | 77250 | float | INFO - 10:05:40: | y_12 | 0.45 | 0.95 | 1.5 | float | INFO - 10:05:40: +----------+-------------+--------------------+-------------+-------+ INFO - 10:05:40: Solving optimization problem with algorithm SLSQP: INFO - 10:05:40: ... 0%| | 0/20 [00:00 .. GENERATED FROM PYTHON SOURCE LINES 113-115 Plot the quadratic approximation of the objective ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 115-118 .. code-block:: default scenario.post_process("QuadApprox", function="-y_4", save=False, show=False) # Workaround for HTML rendering, instead of ``show=True`` plt.show() .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_idf_example_007.png :alt: Hessian matrix SR1 approximation of -y_4 :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_idf_example_007.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_idf_example_008.png :alt: plot sobieski idf example :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_idf_example_008.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 3.112 seconds) .. _sphx_glr_download_examples_formulations_plot_sobieski_idf_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_sobieski_idf_example.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_sobieski_idf_example.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_