.. 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 23-34 .. 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 35-42 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 42-49 .. code-block:: Python disciplines = create_discipline([ "SobieskiPropulsion", "SobieskiAerodynamics", "SobieskiMission", "SobieskiStructure", ]) .. GENERATED FROM PYTHON SOURCE LINES 50-53 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:`.Discipline.default_input_data` .. GENERATED FROM PYTHON SOURCE LINES 53-58 .. code-block:: Python for discipline in disciplines: print(discipline) # noqa: T201 print(f"Default inputs: {discipline.default_input_data}") # noqa: T201 .. rst-class:: sphx-glr-script-out .. code-block:: none SobieskiPropulsion Default inputs: {'y_23': array([12562.01206488]), 'x_3': array([0.5]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03]), 'c_3': array([4360.])} SobieskiAerodynamics Default inputs: {'x_2': array([1.]), 'y_32': array([0.50279625]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03]), 'y_12': array([5.06069742e+04, 9.50000000e-01]), 'c_4': array([0.01375])} SobieskiMission Default inputs: {'y_14': array([50606.9741711 , 7306.20262124]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03]), 'y_24': array([4.15006276]), 'y_34': array([1.10754577])} SobieskiStructure Default inputs: {'y_21': array([50606.9741711]), 'y_31': array([6354.32430691]), 'x_1': array([0.25, 1. ]), 'x_shared': array([5.0e-02, 4.5e+04, 1.6e+00, 5.5e+00, 5.5e+01, 1.0e+03]), 'c_0': array([2000.]), 'c_1': array([25000.]), 'c_2': array([6.])} .. 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-79 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. The MDF formulation includes an MDA, and thus one of the settings of the formulation is ``main_mda_settings``, which configures the solver for the strong couplings. .. GENERATED FROM PYTHON SOURCE LINES 79-87 .. code-block:: Python main_mda_settings = { "tolerance": 1e-14, "max_mda_iter": 50, "warm_start": True, "use_lu_fact": False, "linear_solver_tolerance": 1e-14, } .. GENERATED FROM PYTHON SOURCE LINES 88-97 - ``'warm_start``: warm starts MDA, - ``'use_lu_fact``: optimize the adjoint 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 98-101 .. 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 102-111 .. code-block:: Python scenario = create_scenario( disciplines, "y_4", design_space, maximize_objective=True, formulation_name="MDF", main_mda_settings=main_mda_settings, ) .. rst-class:: sphx-glr-script-out .. code-block:: none WARNING - 11:48:46: Unsupported feature 'minItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar. WARNING - 11:48:46: Unsupported feature 'maxItems' in JSONGrammar 'SobieskiMission_discipline_output' for property 'y_4' in conversion to SimpleGrammar. .. GENERATED FROM PYTHON SOURCE LINES 112-114 Set the design constraints ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 114-117 .. 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 118-125 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 125-127 .. code-block:: Python scenario.xdsmize(save_html=False, pdf_build=False) .. raw:: html


.. GENERATED FROM PYTHON SOURCE LINES 128-139 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 the ``ftol_rel`` setting 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 139-148 .. code-block:: Python from gemseo.settings.opt import SLSQP_Settings # noqa: E402 slsqp_settings = SLSQP_Settings( max_iter=10, ftol_rel=1e-10, ineq_tolerance=2e-3, normalize_design_space=True, ) .. GENERATED FROM PYTHON SOURCE LINES 149-166 .. seealso:: We can also generate a backup file for the optimization, as well as plots on the fly of the optimization history if option ``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", at_each_iteration=True, at_each_function_call=False, erase=True, load=False, plot=True ) .. GENERATED FROM PYTHON SOURCE LINES 168-170 Execute the scenario ^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 170-172 .. code-block:: Python scenario.execute(slsqp_settings) .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 11:48:46: *** Start MDOScenario execution *** INFO - 11:48:46: MDOScenario INFO - 11:48:46: Disciplines: SobieskiAerodynamics SobieskiMission SobieskiPropulsion SobieskiStructure INFO - 11:48:46: MDO formulation: MDF INFO - 11:48:46: Optimization problem: INFO - 11:48:46: minimize -y_4(x_shared, x_1, x_2, x_3) INFO - 11:48:46: with respect to x_1, x_2, x_3, x_shared INFO - 11:48:46: subject to constraints: INFO - 11:48:46: g_1(x_shared, x_1, x_2, x_3) <= 0 INFO - 11:48:46: g_2(x_shared, x_1, x_2, x_3) <= 0 INFO - 11:48:46: g_3(x_shared, x_1, x_2, x_3) <= 0 INFO - 11:48:46: over the design space: INFO - 11:48:46: +-------------+-------------+-------+-------------+-------+ INFO - 11:48:46: | Name | Lower bound | Value | Upper bound | Type | INFO - 11:48:46: +-------------+-------------+-------+-------------+-------+ INFO - 11:48:46: | x_shared[0] | 0.01 | 0.05 | 0.09 | float | INFO - 11:48:46: | x_shared[1] | 30000 | 45000 | 60000 | float | INFO - 11:48:46: | x_shared[2] | 1.4 | 1.6 | 1.8 | float | INFO - 11:48:46: | x_shared[3] | 2.5 | 5.5 | 8.5 | float | INFO - 11:48:46: | x_shared[4] | 40 | 55 | 70 | float | INFO - 11:48:46: | x_shared[5] | 500 | 1000 | 1500 | float | INFO - 11:48:46: | x_1[0] | 0.1 | 0.25 | 0.4 | float | INFO - 11:48:46: | x_1[1] | 0.75 | 1 | 1.25 | float | INFO - 11:48:46: | x_2 | 0.75 | 1 | 1.25 | float | INFO - 11:48:46: | x_3 | 0.1 | 0.5 | 1 | float | INFO - 11:48:46: +-------------+-------------+-------+-------------+-------+ INFO - 11:48:46: Solving optimization problem with algorithm SLSQP: INFO - 11:48:46: 10%|█ | 1/10 [00:00<00:00, 18.19 it/sec, obj=-536] INFO - 11:48:46: 20%|██ | 2/10 [00:00<00:00, 14.51 it/sec, obj=-2.12e+3] INFO - 11:48:47: 30%|███ | 3/10 [00:00<00:00, 11.22 it/sec, obj=-3.72e+3] INFO - 11:48:47: 40%|████ | 4/10 [00:00<00:00, 11.82 it/sec, obj=-3.96e+3] WARNING - 11:48:47: MDAJacobi has reached its maximum number of unsuccessful iterations, but the normalized residual norm 5.126876767779417e-11 is still above the tolerance 1e-14. INFO - 11:48:47: 50%|█████ | 5/10 [00:00<00:00, 12.16 it/sec, obj=-3.96e+3] INFO - 11:48:47: Optimization result: INFO - 11:48:47: Optimizer info: INFO - 11:48:47: Status: 8 INFO - 11:48:47: Message: Positive directional derivative for linesearch INFO - 11:48:47: Number of calls to the objective function by the optimizer: 6 INFO - 11:48:47: Solution: INFO - 11:48:47: The solution is feasible. INFO - 11:48:47: Objective: -3963.8622159757956 INFO - 11:48:47: Standardized constraints: INFO - 11:48:47: g_1 = [-0.01805379 -0.0333412 -0.04424541 -0.05183129 -0.05732327 -0.13720865 INFO - 11:48:47: -0.10279135] INFO - 11:48:47: g_2 = 9.423096252181296e-07 INFO - 11:48:47: g_3 = [-0.76777633 -0.23222367 0.00080718 -0.183255 ] INFO - 11:48:47: Design space: INFO - 11:48:47: +-------------+-------------+---------------------+-------------+-------+ INFO - 11:48:47: | Name | Lower bound | Value | Upper bound | Type | INFO - 11:48:47: +-------------+-------------+---------------------+-------------+-------+ INFO - 11:48:47: | x_shared[0] | 0.01 | 0.06000023557740629 | 0.09 | float | INFO - 11:48:47: | x_shared[1] | 30000 | 60000 | 60000 | float | INFO - 11:48:47: | x_shared[2] | 1.4 | 1.4 | 1.8 | float | INFO - 11:48:47: | x_shared[3] | 2.5 | 2.5 | 8.5 | float | INFO - 11:48:47: | x_shared[4] | 40 | 70 | 70 | float | INFO - 11:48:47: | x_shared[5] | 500 | 1500 | 1500 | float | INFO - 11:48:47: | x_1[0] | 0.1 | 0.4 | 0.4 | float | INFO - 11:48:47: | x_1[1] | 0.75 | 0.75 | 1.25 | float | INFO - 11:48:47: | x_2 | 0.75 | 0.75 | 1.25 | float | INFO - 11:48:47: | x_3 | 0.1 | 0.1563708636523273 | 1 | float | INFO - 11:48:47: +-------------+-------------+---------------------+-------------+-------+ INFO - 11:48:47: *** End MDOScenario execution (time: 0:00:00.441449) *** .. GENERATED FROM PYTHON SOURCE LINES 173-177 Save the optimization history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We can save the whole optimization problem and its history for further post-processing: .. GENERATED FROM PYTHON SOURCE LINES 177-179 .. code-block:: Python scenario.save_optimization_history("mdf_history.h5", file_format="hdf5") .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 11:48:47: Exporting the optimization problem to the file mdf_history.h5 .. GENERATED FROM PYTHON SOURCE LINES 180-181 We can also save only calls to functions and design variables history: .. GENERATED FROM PYTHON SOURCE LINES 181-183 .. code-block:: Python scenario.save_optimization_history("mdf_history.xml", file_format="ggobi") .. GENERATED FROM PYTHON SOURCE LINES 184-186 Print optimization metrics ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 186-188 .. code-block:: Python scenario.print_execution_metrics() .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 11:48:47: Scenario Execution Statistics INFO - 11:48:47: Discipline: SobieskiPropulsion INFO - 11:48:47: Executions number: 75 INFO - 11:48:47: Execution time: 0.0194323429823271 s INFO - 11:48:47: Linearizations number: 5 INFO - 11:48:47: Discipline: SobieskiAerodynamics INFO - 11:48:47: Executions number: 92 INFO - 11:48:47: Execution time: 0.03060137801730889 s INFO - 11:48:47: Linearizations number: 5 INFO - 11:48:47: Discipline: SobieskiMission INFO - 11:48:47: Executions number: 5 INFO - 11:48:47: Execution time: 0.0002140649921784643 s INFO - 11:48:47: Linearizations number: 5 INFO - 11:48:47: Discipline: SobieskiStructure INFO - 11:48:47: Executions number: 87 INFO - 11:48:47: Execution time: 0.14735337398815318 s INFO - 11:48:47: Linearizations number: 5 INFO - 11:48:47: Total number of executions calls: 259 INFO - 11:48:47: Total number of linearizations: 20 .. GENERATED FROM PYTHON SOURCE LINES 189-194 Post-process the results ------------------------ Plot the optimization history view ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 194-196 .. code-block:: Python scenario.post_process(post_name="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: Evolution of the 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: Evolution of the inequality constraints :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_005.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 197-200 Note that post-processor settings passed to :class:`.BaseScenario.post_process` can be provided via a Pydantic model (see the example below). For more information, see :ref:`post_processor_settings`. .. GENERATED FROM PYTHON SOURCE LINES 202-204 Plot the basic history view ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 204-210 .. code-block:: Python from gemseo.settings.post import BasicHistory_Settings # noqa: E402 scenario.post_process( BasicHistory_Settings(variable_names=["x_shared"], save=False, show=True) ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_006.png :alt: History plot :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_006.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 211-213 Plot the constraints and objective history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 213-215 .. code-block:: Python scenario.post_process(post_name="ObjConstrHist", save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_007.png :alt: Evolution of the objective and maximum constraint :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 216-218 Plot the constraints history ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 218-225 .. code-block:: Python scenario.post_process( post_name="ConstraintsHistory", constraint_names=["g_1", "g_2", "g_3"], save=False, show=True, ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_008.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_008.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 226-228 Plot the constraints history using a radar chart ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 228-235 .. code-block:: Python scenario.post_process( post_name="RadarChart", 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: Constraints at iteration 4 (optimum) :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 236-238 Plot the quadratic approximation of the objective ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 238-240 .. code-block:: Python scenario.post_process(post_name="QuadApprox", function="-y_4", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_010.png :alt: Hessian matrix SR1 approximation of -y_4 :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_010.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_011.png :alt: plot sobieski mdf example :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_011.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 241-243 Plot the functions using a SOM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 243-245 .. code-block:: Python scenario.post_process(post_name="SOM", save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_012.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_012.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none INFO - 11:48:50: Building Self Organizing Map from optimization history: INFO - 11:48:50: Number of neurons in x direction = 4 INFO - 11:48:50: Number of neurons in y direction = 4 .. GENERATED FROM PYTHON SOURCE LINES 246-248 Plot the scatter matrix of variables of interest ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 248-256 .. code-block:: Python scenario.post_process( post_name="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_013.png :alt: plot sobieski mdf example :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 .. GENERATED FROM PYTHON SOURCE LINES 257-259 Plot the variables using the parallel coordinates ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 259-261 .. code-block:: Python scenario.post_process(post_name="ParallelCoordinates", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_014.png :alt: Design variables history colored by '-y_4' value :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_014.png :class: sphx-glr-multi-img * .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_015.png :alt: Objective function and constraints history colored by '-y_4' value. :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_015.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 262-264 Plot the robustness of the solution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 264-266 .. code-block:: Python scenario.post_process(post_name="Robustness", save=False, show=True) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_016.png :alt: Boxplot of the optimization functions with normalized stddev 0.01 :srcset: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_016.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 267-269 Plot the influence of the design variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 269-272 .. code-block:: Python scenario.post_process( post_name="VariableInfluence", fig_size=(14, 14), save=False, show=True ) .. image-sg:: /examples/formulations/images/sphx_glr_plot_sobieski_mdf_example_017.png :alt: 9 variables explain 99% of -y_4, 5 variables explain 99% of g_1[0], 5 variables explain 99% of g_1[1], 5 variables explain 99% of g_1[2], 5 variables explain 99% of g_1[3], 5 variables explain 99% of g_1[4], 4 variables explain 99% of g_1[5], 4 variables explain 99% of g_1[6], 1 variables explain 99% of g_2, 7 variables explain 99% of g_3[0], 7 variables explain 99% of g_3[1], 3 variables explain 99% of g_3[2], 3 variables explain 99% of g_3[3] :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 - 11:48:54: Output name; most influential variables to explain 0.99% of the output variation INFO - 11:48:54: -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 - 11:48:54: g_1[0]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[1]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[2]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[3]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[4]; x_1[0], x_1[1], x_shared[0], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[5]; x_1[0], x_1[1], x_shared[3], x_shared[5] INFO - 11:48:54: g_1[6]; x_1[0], x_1[1], x_shared[3], x_shared[5] INFO - 11:48:54: g_2; x_shared[0] INFO - 11:48:54: g_3[0]; x_2, x_3, x_shared[0], x_shared[1], x_shared[2], x_shared[4], x_shared[5] INFO - 11:48:54: g_3[1]; x_2, x_3, x_shared[0], x_shared[1], x_shared[2], x_shared[4], x_shared[5] INFO - 11:48:54: g_3[2]; x_3, x_shared[1], x_shared[2] INFO - 11:48:54: g_3[3]; x_3, x_shared[1], x_shared[2] .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 8.970 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 ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_sobieski_mdf_example.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_