w3resource

Perform optimization using SciPy's optimize module to find function minimum


14. Optimization with SciPy's Optimize Module

Write a NumPy program to generate a set of points and perform optimization using SciPy's optimize module to find the minimum of a function.

Sample Solution:

Python Code:

import numpy as np  # Import NumPy library
from scipy.optimize import minimize  # Import minimize function from SciPy's optimize module

# Define the function to be minimized
def objective_function(x):
    return x[0]**2 + x[1]**2 + 3 * np.sin(x[0]) * np.cos(x[1])

# Generate a set of initial points
initial_guess = np.array([1.0, 1.0])

# Perform optimization using SciPy's minimize function
result = minimize(objective_function, initial_guess, method='BFGS')

# Print the optimization results
print("Optimization Result:")
print("Minimum Value of the Function:", result.fun)
print("Point at Minimum:", result.x)
print("Number of Iterations Performed:", result.nit)
print("Convergence Status:", result.success)
print("Optimization Message:", result.message)

Output:

Optimization Result:
Minimum Value of the Function: -1.5404628057094898
Point at Minimum: [-9.14856375e-01 -6.01451321e-08]
Number of Iterations Performed: 8
Convergence Status: True
Optimization Message: Optimization terminated successfully.

Explanation:

  • Import libraries:
    • Import the NumPy library for numerical operations.
    • Import the minimize function from SciPy's optimize module for performing optimization.
  • Define the Objective Function:
    • Create the function objective_function(x) to be minimized. This function takes a point x (array of coordinates) as input and returns the function value.
  • Generate Initial Points:
    • Define an initial guess as a NumPy array [1.0, 1.0] for the starting point of the optimization algorithm.
  • Perform optimization:
    • Use the minimize function from SciPy to find the minimum of the objective function starting from the initial guess. The method parameter is set to 'BFGS', a popular optimization algorithm.
  • Finally print the results of the optimization, including:
    • The minimum value of the function (result.fun).
    • The point at which the minimum occurs (result.x).
    • The number of iterations performed (result.nit).
    • The convergence status (result.success).
    • The optimization message (result.message).

For more Practice: Solve these Related Problems:

  • Write a Numpy program to generate a set of points and use SciPy's optimize.minimize to find the minimum of a nonlinear function.
  • Write a Numpy program to apply SciPy's optimize.curve_fit to a noisy dataset and compare the optimized parameters with theoretical values.
  • Write a Numpy program to use SciPy's optimize.root to solve a system of nonlinear equations derived from generated data.
  • Write a Numpy program to implement constrained optimization on a function using SciPy's optimize.minimize with bounds.

Python-Numpy Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Compute various distance metrics using NumPy and SciPy.
Next: Perform image processing tasks using SciPy's ndimage module.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.