解释如何使用SciPy Python实现Nelder-Mead算法?

SciPy库可用于快速高效地执行复杂的科学计算。Nelder-Mead算法也称为简单搜索算法。

它被认为是可用于解决参数估计问题和统计问题的最佳算法之一。与在函数的值不确定或与之相关的噪声很大的情况下使用此算法有关。

该算法还可用于处理统计中经常出现的不连续函数。这是一个简单的算法,也很容易理解。在多维无约束优化的情况下,用于最小化非线性函数的参数。

不建议使用此算法来找到最佳梯度值,因为它可能需要很长时间。

让我们看一个例子-

示例

import numpy as np
from scipy.optimize import minimize
def f(x):
   return .6*(1 - x[0])**2
scipy.optimize.minimize(f, [2, -1], method="Nelder-Mead")

输出结果

final_simplex: (array([[ 1. , -1.27109375],
   [ 1. , -1.27118835],
   [ 1. , -1.27113762]]), array([0., 0., 0.]))
   fun: 0.0
   message: 'Optimization terminated successfully.'
      nfev: 147
      nit: 69
   status: 0
   success: True
x: array([ 1. , -1.27109375])

说明

  • 所需的库已导入。

  • 定义了函数“ f”,该函数以一个值作为参数,并对其执行一些数学计算。

  • 该函数在函数定义之外被调用以计算值的“ f”函数。

  • 该函数作为参数传递给“ scipy”库的“ optimize”类中存在的“ minimize”函数。

  • 此输出显示在控制台上。