.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_numerical_methods/optimization/plot_optimization_bonmin.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_auto_numerical_methods_optimization_plot_optimization_bonmin.py: Optimization using bonmin ========================= .. GENERATED FROM PYTHON SOURCE LINES 8-10 In this example we are going to explore mixed-integer non linear problems optimization using OpenTURNS' `bonmin `_ interface. %% .. GENERATED FROM PYTHON SOURCE LINES 10-13 .. code-block:: default import openturns as ot ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 14-15 List available algorithms .. GENERATED FROM PYTHON SOURCE LINES 15-18 .. code-block:: default for algo in ot.Bonmin.GetAlgorithmNames(): print(algo) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none B-BB B-OA B-QG B-Hyb B-iFP .. GENERATED FROM PYTHON SOURCE LINES 19-20 Details and references on bonmin algorithms are available `here `_ . .. GENERATED FROM PYTHON SOURCE LINES 22-52 Setting up and solving a simple problem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following example will demonstrate the use of bonmin "BB" algorithm to solve the following problem: .. math:: \min - x_0 - x_1 - x_2 such that: .. math:: \begin{array}{l} (x_1 - \frac{1}{2})^2 + (x_2 - \frac{1}{2})^2 \leq \frac{1}{4} \\ x_0 - x_1 \leq 0 \\ x_0 + x_2 + x_3 \leq 2\\ x_0 \in \{0,1\}^n\\ (x_1, x_2) \in \mathbb{R}^2\\ x_3 \in \mathbb{N} \end{array} The theoretical minimum is reached for :math:`x = [1,1,0.5,0]`. At this point, the objective function value is :math:`-2.5` N.B.: OpenTURNS requires equality and inequality constraints to be stated as :math:`g(x) = 0` and :math:`h(x) \geq 0`, respectively. Thus the inequalities above will have to be restated to match this requirement: .. math:: \begin{array}{l} -(x_1 - \frac{1}{2})^2 - (x_2 - \frac{1}{2})^2 + \frac{1}{4} \geq 0\\ -x_0 + x_1 \geq 0 \\ -x_0 - x_2 - x_3 + 2 \geq 0\\ \end{array} .. GENERATED FROM PYTHON SOURCE LINES 54-55 Definition of objective function .. GENERATED FROM PYTHON SOURCE LINES 55-87 .. code-block:: default objectiveFunction = ot.SymbolicFunction( ['x0', 'x1', 'x2', 'x3'], ['-x0 -x1 -x2']) # Definition of variables bounds bounds = ot.Interval([0, 0, 0, 0], [1, 1e99, 1e99, 5], [ True, True, True, True], [True, False, False, True]) # Definition of constraints # Constraints in OpenTURNS are defined as g(x) = 0 and h(x) >= 0 # No equality constraint -> nothing to do # Inequality constraints: h = ot.SymbolicFunction(['x0', 'x1', 'x2', 'x3'], [ '-(x1-0.5)^2 - (x2-0.5)^2 + 0.25', 'x1 - x0', '-x0 - x2 - x3 + 2']) # Definition of variables types variablesType = [ot.OptimizationProblemImplementation.BINARY, ot.OptimizationProblemImplementation.CONTINUOUS, ot.OptimizationProblemImplementation.CONTINUOUS, ot.OptimizationProblemImplementation.INTEGER] # Setting up Bonmin problem problem = ot.OptimizationProblem(objectiveFunction) problem.setBounds(bounds) problem.setVariablesType(variablesType) problem.setInequalityConstraint(h) bonminAlgorithm = ot.Bonmin(problem, 'B-BB') bonminAlgorithm.setMaximumEvaluationNumber(10000) bonminAlgorithm.setMaximumIterationNumber(1000) bonminAlgorithm.setStartingPoint([0, 0, 0, 0]) ot.ResourceMap.AddAsString('Bonmin-mu_oracle', 'loqo') ot.ResourceMap.AddAsScalar('Bonmin-bonmin.time_limit', 5) .. GENERATED FROM PYTHON SOURCE LINES 88-89 Running the solver .. GENERATED FROM PYTHON SOURCE LINES 89-96 .. code-block:: default bonminAlgorithm.run() # Retrieving the results result = bonminAlgorithm.getResult() print(" -- Optimal point = " + result.getOptimalPoint().__str__()) print(" -- Optimal value = " + result.getOptimalValue().__str__()) print(" -- Evaluation number = " + result.getInputSample().getSize().__str__()) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none -- Optimal point = [1,1,0.500141,0] -- Optimal value = [-2.50014] -- Evaluation number = 147 .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.035 seconds) .. _sphx_glr_download_auto_numerical_methods_optimization_plot_optimization_bonmin.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_optimization_bonmin.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_optimization_bonmin.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_