.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/formulations/plot_sobieski_mdf_example.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_formulations_plot_sobieski_mdf_example.py: MDF-based MDO on the Sobieski SSBJ test case ============================================ .. GENERATED FROM PYTHON SOURCE LINES 24-35 .. code-block:: Python from __future__ import annotations from gemseo import configure_logger from gemseo import create_discipline from gemseo import create_scenario from gemseo import generate_n2_plot from gemseo.problems.mdo.sobieski.core.design_space import SobieskiDesignSpace configure_logger() .. rst-class:: sphx-glr-script-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:`.SobieskiPropulsion`, :class:`.SobieskiAerodynamics`, :class:`.SobieskiMission` and :class:`.SobieskiStructure`. .. GENERATED FROM PYTHON SOURCE LINES 43-50 .. code-block:: Python disciplines = create_discipline([ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ]) .. GENERATED FROM PYTHON SOURCE LINES 51-54 We can quickly access the most relevant information of any discipline (name, inputs, and outputs) with Python's ``print()`` function. Moreover, we can get the default input values of a discipline with the attribute :attr:`.MDODiscipline.default_inputs` .. GENERATED FROM PYTHON SOURCE LINES 54-58 .. code-block:: Python for discipline in disciplines: print(discipline) print(f"Default inputs: {discipline.default_inputs}") .. rst-class:: sphx-glr-script-out .. code-block:: none SobieskiPropulsion Default inputs: {'y_23': array([12562.01206488]), 'x_3': array([0.5]), 'c_3': array([4360.]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03])} SobieskiAerodynamics Default inputs: {'y_32': array([0.50279625]), 'c_4': array([0.01375]), 'y_12': array([5.06069742e+04, 9.50000000e-01]), 'x_2': array([1.]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03])} SobieskiMission Default inputs: {'y_24': array([4.15006276]), 'y_14': array([50606.9741711 , 7306.20262124]), 'y_34': array([1.10754577]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03])} SobieskiStructure Default inputs: {'c_0': array([2000.]), 'c_1': array([25000.]), 'y_31': array([6354.32430691]), 'y_21': array([50606.9741711]), 'x_1': array([0.25, 1. ]), 'c_2': array([6.]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03])} .. GENERATED FROM PYTHON SOURCE LINES 59-63 You may also be interested in plotting the couplings of your disciplines. A quick way of getting this information is the high-level function :func:`.generate_n2_plot`. A much more detailed explanation of coupling visualization is available :ref:`here `. .. GENERATED FROM PYTHON SOURCE LINES 63-65 .. code-block:: Python generate_n2_plot(disciplines, save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_001.png :alt: plot sobieski mdf example :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 66-77 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:`.MDF` formulation. We tell the scenario to minimize -y_4 instead of minimizing y_4 (range), which is the default option. Instantiate the scenario ^^^^^^^^^^^^^^^^^^^^^^^^ During the instantiation of the scenario, we provide some options for the MDF formulations: .. GENERATED FROM PYTHON SOURCE LINES 77-85 .. code-block:: Python formulation_options = { "tolerance": 1e-14, "max_mda_iter": 50, "warm_start": True, "use_lu_fact": False, "linear_solver_tolerance": 1e-14, } .. GENERATED FROM PYTHON SOURCE LINES 86-95 - ``'warm_start``: warm starts MDA, - ``'warm_start``: optimize the adjoints resolution by storing the Jacobian matrix LU factorization for the multiple RHS (objective + constraints). This saves CPU time if you can pay for the memory and have the full Jacobians available, not just matrix vector products. - ``'linear_solver_tolerance'``: set the linear solver tolerance, idem we need full convergence .. GENERATED FROM PYTHON SOURCE LINES 96-99 .. code-block:: Python design_space = SobieskiDesignSpace() design_space .. raw:: html
Sobieski design space:
Name Lower bound Value Upper bound Type
x_shared[0] 0.01 0.05 0.09 float
x_shared[1] 30000 45000 60000 float
x_shared[2] 1.4 1.6 1.8 float
x_shared[3] 2.5 5.5 8.5 float
x_shared[4] 40 55 70 float
x_shared[5] 500 1000 1500 float
x_1[0] 0.1 0.25 0.4 float
x_1[1] 0.75 1 1.25 float
x_2 0.75 1 1.25 float
x_3 0.1 0.5 1 float
y_14[0] 24850 50606.9741711 77100 float
y_14[1] -7700 7306.20262124 45000 float
y_32 0.235 0.5027962499999999 0.795 float
y_31 2960 6354.32430691 10185 float
y_24 0.44 4.15006276 11.13 float
y_34 0.44 1.10754577 1.98 float
y_23 3365 12194.2671934 26400 float
y_21 24850 50606.9741711 77250 float
y_12[0] 24850 50606.9742 77250 float
y_12[1] 0.45 0.95 1.5 float


.. GENERATED FROM PYTHON SOURCE LINES 100-109 .. code-block:: Python scenario = create_scenario( disciplines, "MDF", "y_4", design_space, maximize_objective=True, **formulation_options, ) .. GENERATED FROM PYTHON SOURCE LINES 110-112 Set the design constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 112-115 .. code-block:: Python for c_name in ["g_1", "g_2", "g_3"]: scenario.add_constraint(c_name, constraint_type="ineq") .. GENERATED FROM PYTHON SOURCE LINES 116-123 XDSMIZE the scenario ^^^^^^^^^^^^^^^^^^^^ Generate the XDSM file on the fly: - ``log_workflow_status=True`` will log the status of the workflow in the console, - ``save_html`` (default ``True``) will generate a self-contained HTML file, that can be automatically opened using ``show_html=True``. .. GENERATED FROM PYTHON SOURCE LINES 123-125 .. code-block:: Python scenario.xdsmize(save_html=False) .. raw:: html


.. GENERATED FROM PYTHON SOURCE LINES 126-137 Define the algorithm inputs ^^^^^^^^^^^^^^^^^^^^^^^^^^^ We set the maximum number of iterations, the optimizer and the optimizer options. Algorithm specific options are passed there. Use the high-level function :func:`.get_algorithm_options_schema` for more information or read the documentation. Here ftol_rel option is a stop criteria based on the relative difference in the objective between two iterates ineq_tolerance the tolerance determination of the optimum; this is specific to the |g| wrapping and not in the solver. .. GENERATED FROM PYTHON SOURCE LINES 137-144 .. code-block:: Python algo_options = { "ftol_rel": 1e-10, "ineq_tolerance": 2e-3, "normalize_design_space": True, } scn_inputs = {"max_iter": 15, "algo": "SLSQP", "algo_options": algo_options} .. GENERATED FROM PYTHON SOURCE LINES 145-159 .. seealso:: We can also generate a backup file for the optimization, as well as plots on the fly of the optimization history if option ``generate_opt_plot`` is ``True``. This slows down a lot the process, here since SSBJ is very light .. code:: scenario.set_optimization_history_backup(file_path="mdf_backup.h5", each_new_iter=True, each_store=False, erase=True, pre_load=False, generate_opt_plot=True) .. GENERATED FROM PYTHON SOURCE LINES 161-163 Execute the scenario ^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 163-165 .. code-block:: Python scenario.execute(scn_inputs) .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 08:57:19: INFO - 08:57:19: *** Start MDOScenario execution *** INFO - 08:57:19: MDOScenario INFO - 08:57:19: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure INFO - 08:57:19: MDO formulation: MDF INFO - 08:57:19: Optimization problem: INFO - 08:57:19: minimize -y_4(x_shared, x_1, x_2, x_3) INFO - 08:57:19: with respect to x_1, x_2, x_3, x_shared INFO - 08:57:19: subject to constraints: INFO - 08:57:19: g_1(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 08:57:19: g_2(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 08:57:19: g_3(x_shared, x_1, x_2, x_3) <= 0.0 INFO - 08:57:19: over the design space: INFO - 08:57:19: +-------------+-------------+-------+-------------+-------+ INFO - 08:57:19: | Name | Lower bound | Value | Upper bound | Type | INFO - 08:57:19: +-------------+-------------+-------+-------------+-------+ INFO - 08:57:19: | x_shared[0] | 0.01 | 0.05 | 0.09 | float | INFO - 08:57:19: | x_shared[1] | 30000 | 45000 | 60000 | float | INFO - 08:57:19: | x_shared[2] | 1.4 | 1.6 | 1.8 | float | INFO - 08:57:19: | x_shared[3] | 2.5 | 5.5 | 8.5 | float | INFO - 08:57:19: | x_shared[4] | 40 | 55 | 70 | float | INFO - 08:57:19: | x_shared[5] | 500 | 1000 | 1500 | float | INFO - 08:57:19: | x_1[0] | 0.1 | 0.25 | 0.4 | float | INFO - 08:57:19: | x_1[1] | 0.75 | 1 | 1.25 | float | INFO - 08:57:19: | x_2 | 0.75 | 1 | 1.25 | float | INFO - 08:57:19: | x_3 | 0.1 | 0.5 | 1 | float | INFO - 08:57:19: +-------------+-------------+-------+-------------+-------+ INFO - 08:57:19: Solving optimization problem with algorithm SLSQP: INFO - 08:57:19: 7%|▋ | 1/15 [00:00<00:01, 9.29 it/sec, obj=-536] INFO - 08:57:19: 13%|█▎ | 2/15 [00:00<00:01, 6.85 it/sec, obj=-2.12e+3] INFO - 08:57:19: 20%|██ | 3/15 [00:00<00:02, 5.58 it/sec, obj=-3.72e+3] INFO - 08:57:19: 27%|██▋ | 4/15 [00:00<00:01, 5.62 it/sec, obj=-3.97e+3] INFO - 08:57:20: Optimization result: INFO - 08:57:20: Optimizer info: INFO - 08:57:20: Status: 8 INFO - 08:57:20: Message: Positive directional derivative for linesearch INFO - 08:57:20: Number of calls to the objective function by the optimizer: 5 INFO - 08:57:20: Solution: INFO - 08:57:20: The solution is feasible. INFO - 08:57:20: Objective: -3716.555963095829 INFO - 08:57:20: Standardized constraints: INFO - 08:57:20: g_1 = [-0.01608807 -0.03194613 -0.04316738 -0.05095364 -0.05658344 -0.1380806 INFO - 08:57:20: -0.1019194 ] INFO - 08:57:20: g_2 = -0.0005956359157315294 INFO - 08:57:20: g_3 = [-0.67076432 -0.32923568 -0.10429595 -0.183255 ] INFO - 08:57:20: Design space: INFO - 08:57:20: +-------------+-------------+---------------------+-------------+-------+ INFO - 08:57:20: | Name | Lower bound | Value | Upper bound | Type | INFO - 08:57:20: +-------------+-------------+---------------------+-------------+-------+ INFO - 08:57:20: | x_shared[0] | 0.01 | 0.05985109102106711 | 0.09 | float | INFO - 08:57:20: | x_shared[1] | 30000 | 59785.5639131558 | 60000 | float | INFO - 08:57:20: | x_shared[2] | 1.4 | 1.4 | 1.8 | float | INFO - 08:57:20: | x_shared[3] | 2.5 | 2.540129655171779 | 8.5 | float | INFO - 08:57:20: | x_shared[4] | 40 | 69.80684214977607 | 70 | float | INFO - 08:57:20: | x_shared[5] | 500 | 1493.746505655324 | 1500 | float | INFO - 08:57:20: | x_1[0] | 0.1 | 0.4 | 0.4 | float | INFO - 08:57:20: | x_1[1] | 0.75 | 0.7530970468499044 | 1.25 | float | INFO - 08:57:20: | x_2 | 0.75 | 0.7530625218813826 | 1.25 | float | INFO - 08:57:20: | x_3 | 0.1 | 0.1411034879427379 | 1 | float | INFO - 08:57:20: +-------------+-------------+---------------------+-------------+-------+ INFO - 08:57:20: *** End MDOScenario execution (time: 0:00:00.823589) *** {'max_iter': 15, 'algo_options': {'ftol_rel': 1e-10, 'ineq_tolerance': 0.002, 'normalize_design_space': True}, 'algo': 'SLSQP'} .. GENERATED FROM PYTHON SOURCE LINES 166-170 Save the optimization history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We can save the whole optimization problem and its history for further post processing: .. GENERATED FROM PYTHON SOURCE LINES 170-172 .. code-block:: Python scenario.save_optimization_history("mdf_history.h5", file_format="hdf5") .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 08:57:20: Exporting the optimization problem to the file mdf_history.h5 at node .. GENERATED FROM PYTHON SOURCE LINES 173-174 We can also save only calls to functions and design variables history: .. GENERATED FROM PYTHON SOURCE LINES 174-176 .. code-block:: Python scenario.save_optimization_history("mdf_history.xml", file_format="ggobi") .. GENERATED FROM PYTHON SOURCE LINES 177-179 Print optimization metrics ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 179-181 .. code-block:: Python scenario.print_execution_metrics() .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 08:57:20: Scenario Execution Statistics INFO - 08:57:20: Discipline: SobieskiPropulsion INFO - 08:57:20: Executions number: 67 INFO - 08:57:20: Execution time: 0.024764827994658845 s INFO - 08:57:20: Linearizations number: 4 INFO - 08:57:20: Discipline: SobieskiAerodynamics INFO - 08:57:20: Executions number: 76 INFO - 08:57:20: Execution time: 0.035504796000168426 s INFO - 08:57:20: Linearizations number: 4 INFO - 08:57:20: Discipline: SobieskiMission INFO - 08:57:20: Executions number: 4 INFO - 08:57:20: Execution time: 0.0002837100037140772 s INFO - 08:57:20: Linearizations number: 4 INFO - 08:57:20: Discipline: SobieskiStructure INFO - 08:57:20: Executions number: 75 INFO - 08:57:20: Execution time: 0.18365335499038338 s INFO - 08:57:20: Linearizations number: 4 INFO - 08:57:20: Total number of executions calls: 222 INFO - 08:57:20: Total number of linearizations: 16 .. GENERATED FROM PYTHON SOURCE LINES 182-187 Post-process the results ------------------------ Plot the optimization history view ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 187-189 .. code-block:: Python scenario.post_process("OptHistoryView", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_002.png :alt: Evolution of the optimization variables :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_002.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_003.png :alt: Evolution of the objective value :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_003.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_004.png :alt: Distance to the optimum :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_004.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_005.png :alt: Hessian diagonal approximation :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_005.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_006.png :alt: Evolution of the inequality constraints :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_006.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 190-192 Plot the basic history view ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 192-196 .. code-block:: Python scenario.post_process( "BasicHistory", variable_names=["x_shared"], save=False, show=True ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_007.png :alt: History plot :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_007.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 197-199 Plot the constraints and objective history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 199-201 .. code-block:: Python scenario.post_process("ObjConstrHist", save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_008.png :alt: Evolution of the objective and maximum constraint :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_008.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 202-204 Plot the constraints history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 204-211 .. code-block:: Python scenario.post_process( "ConstraintsHistory", constraint_names=["g_1", "g_2", "g_3"], save=False, show=True, ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_009.png :alt: Evolution of the constraints w.r.t. iterations, g_1[0] (inequality), g_1[1] (inequality), g_1[2] (inequality), g_1[3] (inequality), g_1[4] (inequality), g_1[5] (inequality), g_1[6] (inequality), g_2 (inequality), g_3[0] (inequality), g_3[1] (inequality), g_3[2] (inequality), g_3[3] (inequality) :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_009.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 212-214 Plot the constraints history using a radar chart ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 214-221 .. code-block:: Python scenario.post_process( "RadarChart", constraint_names=["g_1", "g_2", "g_3"], save=False, show=True, ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_010.png :alt: Constraints at iteration 3 (optimum) :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_010.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 222-224 Plot the quadratic approximation of the objective ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 224-226 .. code-block:: Python scenario.post_process("QuadApprox", function="-y_4", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_011.png :alt: Hessian matrix SR1 approximation of -y_4 :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_011.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_012.png :alt: plot sobieski mdf example :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_012.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 227-229 Plot the functions using a SOM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 229-231 .. code-block:: Python scenario.post_process("SOM", save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_013.png :alt: Self Organizing Maps of the design space, -y_4, g_1[0], g_1[1], g_1[2], g_1[3], g_1[4], g_1[5], g_1[6], g_2, g_3[0], g_3[1], g_3[2], g_3[3] :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_013.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 08:57:23: Building Self Organizing Map from optimization history: INFO - 08:57:23: Number of neurons in x direction = 4 INFO - 08:57:23: Number of neurons in y direction = 4 .. GENERATED FROM PYTHON SOURCE LINES 232-234 Plot the scatter matrix of variables of interest ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 234-242 .. code-block:: Python scenario.post_process( "ScatterPlotMatrix", variable_names=["-y_4", "g_1"], save=False, show=True, fig_size=(14, 14), ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_014.png :alt: plot sobieski mdf example :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_014.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 243-245 Plot the variables using the parallel coordinates ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 245-247 .. code-block:: Python scenario.post_process("ParallelCoordinates", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_015.png :alt: Design variables history colored by '-y_4' value :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_015.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_016.png :alt: Objective function and constraints history colored by '-y_4' value. :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_016.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 248-250 Plot the robustness of the solution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 250-252 .. code-block:: Python scenario.post_process("Robustness", save=True, show=True) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 253-255 Plot the influence of the design variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 255-256 .. code-block:: Python scenario.post_process("VariableInfluence", fig_size=(14, 14), save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_017.png :alt: Partial variation of the functions wrt design variables, 9 variables required to explain 99% of -y_4 variations, 5 variables required to explain 99% of g_1[0] variations, 5 variables required to explain 99% of g_1[1] variations, 5 variables required to explain 99% of g_1[2] variations, 5 variables required to explain 99% of g_1[3] variations, 5 variables required to explain 99% of g_1[4] variations, 4 variables required to explain 99% of g_1[5] variations, 4 variables required to explain 99% of g_1[6] variations, 1 variables required to explain 99% of g_2 variations, 7 variables required to explain 99% of g_3[0] variations, 7 variables required to explain 99% of g_3[1] variations, 3 variables required to explain 99% of g_3[2] variations, 3 variables required to explain 99% of g_3[3] variations :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_017.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 08:57:28: Output name; most influential variables to explain 0.99% of the output variation INFO - 08:57:28: -y_4; x_1[1], x_2, x_3, x_shared[0], x_shared[1], x_shared[2], x_shared[3], x_shared[4], x_shared[5] INFO - 08:57:28: g_1[0]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[1]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[2]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[3]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[4]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[5]; x_1[0], x_1[1], x_shared[3], x_shared[5] INFO - 08:57:28: g_1[6]; x_1[0], x_1[1], x_shared[3], x_shared[5] INFO - 08:57:28: g_2; x_shared[0] INFO - 08:57:28: g_3[0]; x_2, x_3, x_shared[0], x_shared[1], x_shared[2], x_shared[4], x_shared[5] INFO - 08:57:28: g_3[1]; x_2, x_3, x_shared[0], x_shared[1], x_shared[2], x_shared[4], x_shared[5] INFO - 08:57:28: g_3[2]; x_3, x_shared[1], x_shared[2] INFO - 08:57:28: g_3[3]; x_3, x_shared[1], x_shared[2] .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 10.416 seconds) .. _sphx_glr_download_examples_formulations_plot_sobieski_mdf_example.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_sobieski_mdf_example.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_sobieski_mdf_example.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_