.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/parametric_design_study_manager/02_optimization_on_mop.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_parametric_design_study_manager_02_optimization_on_mop.py: .. _ref_optimization_on_mop: Optimization on MOP with proxy solver ===================================== This example demonstrates how to create and execute optimization on MOP using ``ParametricDesignStudyManager`` It creates multiple parametric systems using ``ProxySolver`` and ``Mopsolver`` nodes as solvers and then runs the created design study. .. GENERATED FROM PYTHON SOURCE LINES 35-38 Perform required imports ------------------------ Perform the required imports. .. GENERATED FROM PYTHON SOURCE LINES 38-58 .. code-block:: Python from math import sin from pathlib import Path import ansys.optislang.core.node_types as nt from ansys.optislang.core.project_parametric import ( Design, DesignVariable, ObjectiveCriterion, OptimizationParameter, Response, ) from ansys.optislang.parametric.design_study import ParametricDesignStudyManager from ansys.optislang.parametric.design_study_templates import ( GeneralAlgorithmTemplate, OptimizationOnMOPTemplate, ProxySolverNodeSettings, ) .. GENERATED FROM PYTHON SOURCE LINES 59-63 Create template inputs ---------------------- Define template inputs, that are used by the parametric design study manager to create and execute the design study. .. GENERATED FROM PYTHON SOURCE LINES 63-97 .. code-block:: Python project_path = Path().cwd() / "design_manager_example.opf" parameters = [ OptimizationParameter(name=f"X{i}", reference_value=0.0, range=(-3.14, 3.14)) for i in range(1, 6) ] responses = [Response(name="Y", reference_value=0.0)] def callback(designs: list[Design]) -> list[Design]: """Calculate coupled function for provided designs.""" results_designs = [] for design in designs: X1 = design.parameters[design.parameters_names.index("X1")].value X2 = design.parameters[design.parameters_names.index("X2")].value X3 = design.parameters[design.parameters_names.index("X3")].value X4 = design.parameters[design.parameters_names.index("X4")].value X5 = design.parameters[design.parameters_names.index("X5")].value Y = 0.5 * X1 + X2 + 0.5 * X1 * X2 + 5 * sin(X3) + 0.2 * X4 + 0.1 * X5 id = design.id # create instance of design with new values output_design = Design( responses=[DesignVariable("Y", Y)], design_id=id, ) results_designs.append(output_design) return results_designs solver_settings = ProxySolverNodeSettings(callback=callback, multi_design_launch_num=-1) .. GENERATED FROM PYTHON SOURCE LINES 98-101 Create AMOP template -------------------- Define template that will be transformed into an AMOP system with proxy solver. .. GENERATED FROM PYTHON SOURCE LINES 101-112 .. code-block:: Python amop_template = GeneralAlgorithmTemplate( parameters=parameters, criteria=[], responses=responses, algorithm_type=nt.AMOP, solver_type=nt.ProxySolver, solver_settings=solver_settings, ) .. GENERATED FROM PYTHON SOURCE LINES 113-116 Create AMOP system ------------------ Instantiate parametric design study manager, create and execute the design study. .. GENERATED FROM PYTHON SOURCE LINES 116-123 .. code-block:: Python design_study_manager = ParametricDesignStudyManager(project_path=project_path) study = design_study_manager.create_design_study(template=amop_template) study.execute() design_study_manager.save() .. GENERATED FROM PYTHON SOURCE LINES 124-128 Create Optimization on MOP -------------------------- Create optimization with MOP solver and validation system, execute. Database from the previous design study is used as an input for the MOP Solver. .. GENERATED FROM PYTHON SOURCE LINES 128-144 .. code-block:: Python criteria = [ObjectiveCriterion("minY", expression="Y")] amop_system = study.managed_instances[0].instance optimization_template = OptimizationOnMOPTemplate( parameters=parameters, criteria=criteria, responses=responses, mop_predecessor=amop_system, callback=callback, ) optimization_study = design_study_manager.create_design_study(optimization_template) optimization_study.execute() design_study_manager.save() .. GENERATED FROM PYTHON SOURCE LINES 145-148 Stop and cancel project ~~~~~~~~~~~~~~~~~~~~~~~ Stop and cancel the project. .. GENERATED FROM PYTHON SOURCE LINES 148-152 .. code-block:: Python design_study_manager.optislang.dispose() .. GENERATED FROM PYTHON SOURCE LINES 153-160 View generated workflow ----------------------- This image shows the generated workflow. .. image:: ../../_static/02_optimization_on_mop.png :width: 1200 :alt: Result of script. .. _sphx_glr_download_examples_parametric_design_study_manager_02_optimization_on_mop.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 02_optimization_on_mop.ipynb <02_optimization_on_mop.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 02_optimization_on_mop.py <02_optimization_on_mop.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: 02_optimization_on_mop.zip <02_optimization_on_mop.zip>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_