.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/api/plot_post.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_api_plot_post.py: Post-processing =============== In this example, we will discover the different functions of the API related to graphical post-processing of scenarios. .. GENERATED FROM PYTHON SOURCE LINES 29-43 .. 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 execute_post from gemseo import get_available_post_processings from gemseo import get_post_processing_options_schema from gemseo.problems.sellar.sellar_design_space import SellarDesignSpace configure_logger() .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 44-49 Get available DOE algorithms ---------------------------- The :func:`.get_available_post_processings` function returns the list of post-processing algorithms available in |g| or in external modules .. GENERATED FROM PYTHON SOURCE LINES 49-51 .. code-block:: Python get_available_post_processings() .. rst-class:: sphx-glr-script-out .. code-block:: none ['Animation', 'BasicHistory', 'Compromise', 'ConstraintsHistory', 'Correlations', 'DataVersusModel', 'GradientSensitivity', 'HighTradeOff', 'MultiObjectiveDiagram', 'ObjConstrHist', 'OptHistoryView', 'ParallelCoordinates', 'ParetoFront', 'Petal', 'QuadApprox', 'Radar', 'RadarChart', 'Robustness', 'SOM', 'ScatterPareto', 'ScatterPlotMatrix', 'TopologyView', 'VariableInfluence'] .. GENERATED FROM PYTHON SOURCE LINES 52-56 Get options schema ------------------ For a given post-processing algorithm, e.g. ``"RadarChart"``, we can get the options; e.g. .. GENERATED FROM PYTHON SOURCE LINES 56-58 .. code-block:: Python get_post_processing_options_schema("RadarChart") .. rst-class:: sphx-glr-script-out .. code-block:: none {'$schema': 'http://json-schema.org/draft-04/schema', 'additionalProperties': False, 'type': 'object', 'properties': {'save': {'description': 'If ``True``, save the figure.', 'type': 'boolean'}, 'show': {'description': 'If ``True``, display the figure.', 'type': 'boolean'}, 'file_path': {'anyOf': [{'description': 'The path of the file to save the figures.\nIf the extension is missing, use ``file_extension``.\nIf ``None``,\ncreate a file path\nfrom ``directory_path``, ``file_name`` and ``file_extension``.', 'type': 'string'}, {'description': 'The path of the file to save the figures.\nIf the extension is missing, use ``file_extension``.\nIf ``None``,\ncreate a file path\nfrom ``directory_path``, ``file_name`` and ``file_extension``.', 'type': 'null'}]}, 'file_extension': {'anyOf': [{'description': "A file extension, e.g. 'png', 'pdf', 'svg', ...\nIf ``None``, use a default file extension.", 'type': 'string'}, {'description': "A file extension, e.g. 'png', 'pdf', 'svg', ...\nIf ``None``, use a default file extension.", 'type': 'null'}]}, 'file_name': {'anyOf': [{'description': 'The name of the file to save the figures.\nIf ``None``, use a default one generated by the post-processing.', 'type': 'string'}, {'description': 'The name of the file to save the figures.\nIf ``None``, use a default one generated by the post-processing.', 'type': 'null'}]}, 'directory_path': {'anyOf': [{'description': 'The path of the directory to save the figures.\nIf ``None``, use the current working directory.', 'type': 'string'}, {'description': 'The path of the directory to save the figures.\nIf ``None``, use the current working directory.', 'type': 'null'}]}, 'fig_size': {'anyOf': [{'description': 'The width and height of the figure in inches, e.g. ``(w, h)``.\nIf ``None``, use the :attr:`.OptPostProcessor.DEFAULT_FIG_SIZE`\nof the post-processor.', 'type': 'null'}, {'minItems': 2, 'maxItems': 2, 'description': 'The width and height of the figure in inches, e.g. ``(w, h)``.\nIf ``None``, use the :attr:`.OptPostProcessor.DEFAULT_FIG_SIZE`\nof the post-processor.', 'type': 'array', 'items': {'type': 'number'}}]}, 'iteration': {'anyOf': [{'description': 'Either an iteration in :math:`-N,\\ldots,-1,1,`ldots,N`\nor the tag :attr:`.OPTIMUM` for the iteration\nat which the optimum is located,\nwhere :math:`N` is the length of the database.', 'type': 'integer'}, {'enum': ['opt'], 'description': 'Either an iteration in :math:`-N,\\ldots,-1,1,`ldots,N`\nor the tag :attr:`.OPTIMUM` for the iteration\nat which the optimum is located,\nwhere :math:`N` is the length of the database.', 'type': 'string'}]}, 'constraint_names': {'anyOf': [{'description': 'The names of the constraints.\nIf ``None``, use all the constraints.', 'type': 'null'}, {'description': 'The names of the constraints.\nIf ``None``, use all the constraints.', 'type': 'array', 'items': {'minItems': 1, 'type': 'string'}}]}, 'show_names_radially': {'description': 'Whether to write the names of the constraints\nin the radial direction.\nOtherwise, write them horizontally.\nThe radial direction can be useful for a high number of constraints.', 'type': 'boolean'}}, 'required': []} .. GENERATED FROM PYTHON SOURCE LINES 59-65 Post-process a scenario ----------------------- The API function :func:`.execute_post` can generate visualizations of the optimization or DOE results. For that, it consider the object to post-process ``to_post_proc``, the post processing ``post_name`` with its ``**options``. E.g. .. GENERATED FROM PYTHON SOURCE LINES 65-70 .. code-block:: Python disciplines = create_discipline(["Sellar1", "Sellar2", "SellarSystem"]) design_space = SellarDesignSpace() scenario = create_scenario(disciplines, "MDF", "obj", design_space, "SellarMDFScenario") scenario.execute({"algo": "NLOPT_SLSQP", "max_iter": 100}) execute_post(scenario, "OptHistoryView", save=False, show=True) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/api/images/sphx_glr_plot_post_001.png :alt: Evolution of the optimization variables :srcset: /examples/api/images/sphx_glr_plot_post_001.png :class: sphx-glr-multi-img * .. image-sg:: /examples/api/images/sphx_glr_plot_post_002.png :alt: Evolution of the objective value :srcset: /examples/api/images/sphx_glr_plot_post_002.png :class: sphx-glr-multi-img * .. image-sg:: /examples/api/images/sphx_glr_plot_post_003.png :alt: Distance to the optimum :srcset: /examples/api/images/sphx_glr_plot_post_003.png :class: sphx-glr-multi-img * .. image-sg:: /examples/api/images/sphx_glr_plot_post_004.png :alt: Hessian diagonal approximation :srcset: /examples/api/images/sphx_glr_plot_post_004.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none /home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/gemseo/algos/design_space.py:467: ComplexWarning: Casting complex values to real discards the imaginary part self.__current_value[name] = array_value.astype( INFO - 00:09:55: INFO - 00:09:55: *** Start SellarMDFScenario execution *** INFO - 00:09:55: SellarMDFScenario INFO - 00:09:55: Disciplines: Sellar1 Sellar2 SellarSystem INFO - 00:09:55: MDO formulation: MDF INFO - 00:09:55: Optimization problem: INFO - 00:09:55: minimize obj(x_local, x_shared) INFO - 00:09:55: with respect to x_local, x_shared INFO - 00:09:55: over the design space: INFO - 00:09:55: +-------------+-------------+-------+-------------+-------+ INFO - 00:09:55: | Name | Lower bound | Value | Upper bound | Type | INFO - 00:09:55: +-------------+-------------+-------+-------------+-------+ INFO - 00:09:55: | x_local | 0 | 1 | 10 | float | INFO - 00:09:55: | x_shared[0] | -10 | 4 | 10 | float | INFO - 00:09:55: | x_shared[1] | 0 | 3 | 10 | float | INFO - 00:09:55: +-------------+-------------+-------+-------------+-------+ INFO - 00:09:55: Solving optimization problem with algorithm NLOPT_SLSQP: INFO - 00:09:55: 1%| | 1/100 [00:00<00:02, 45.93 it/sec, obj=21.8+0j] INFO - 00:09:55: 2%|▏ | 2/100 [00:00<00:03, 32.02 it/sec, obj=101+0j] INFO - 00:09:55: 3%|▎ | 3/100 [00:00<00:02, 47.81 it/sec, obj=4.79+0j] WARNING - 00:09:55: MDAJacobi has reached its maximum number of iterations but the normed residual 0.021964591272283788 is still above the tolerance 1e-06. INFO - 00:09:55: 4%|▍ | 4/100 [00:00<00:03, 30.19 it/sec, obj=0.779-0.0322j] INFO - 00:09:55: 5%|▌ | 5/100 [00:00<00:02, 34.50 it/sec, obj=1.81+0j] INFO - 00:09:55: 6%|▌ | 6/100 [00:00<00:02, 41.33 it/sec, obj=0.54-4.84e-12j] INFO - 00:09:55: 7%|▋ | 7/100 [00:00<00:02, 37.31 it/sec, obj=0.928+0j] INFO - 00:09:55: 8%|▊ | 8/100 [00:00<00:02, 42.57 it/sec, obj=0.537+0j] INFO - 00:09:55: 9%|▉ | 9/100 [00:00<00:02, 36.88 it/sec, obj=0.527+0j] INFO - 00:09:55: 10%|█ | 10/100 [00:00<00:02, 37.67 it/sec, obj=0.527+0j] INFO - 00:09:55: 11%|█ | 11/100 [00:00<00:02, 38.24 it/sec, obj=0.527+0j] ERROR - 00:09:55: NLopt run failed: NLopt roundoff-limited, RoundoffLimited Traceback (most recent call last): File "/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/gemseo/algos/opt/lib_nlopt.py", line 498, in _run nlopt_problem.optimize(x_0.real) File "/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/nlopt/nlopt.py", line 335, in optimize return _nlopt.opt_optimize(self, *args) nlopt.RoundoffLimited: NLopt roundoff-limited INFO - 00:09:55: 12%|█▏ | 12/100 [00:00<00:02, 41.51 it/sec, obj=0.527+0j] INFO - 00:09:55: Optimization result: INFO - 00:09:55: Optimizer info: INFO - 00:09:55: Status: None INFO - 00:09:55: Message: GEMSEO Stopped the driver INFO - 00:09:55: Number of calls to the objective function by the optimizer: 16 INFO - 00:09:55: Solution: INFO - 00:09:55: Objective: (0.5272881441505544+0j) INFO - 00:09:55: Design space: INFO - 00:09:55: +-------------+-------------+-----------------------+-------------+-------+ INFO - 00:09:55: | Name | Lower bound | Value | Upper bound | Type | INFO - 00:09:55: +-------------+-------------+-----------------------+-------------+-------+ INFO - 00:09:55: | x_local | 0 | 3.264394837503948e-13 | 10 | float | INFO - 00:09:55: | x_shared[0] | -10 | 0.581639463870145 | 10 | float | INFO - 00:09:55: | x_shared[1] | 0 | 0 | 10 | float | INFO - 00:09:55: +-------------+-------------+-----------------------+-------------+-------+ INFO - 00:09:55: *** End SellarMDFScenario execution (time: 0:00:00.303329) *** .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.113 seconds) .. _sphx_glr_download_examples_api_plot_post.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_post.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_post.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_