如何使用 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])

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

解释

  • 导入所需的库。

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

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

  • 将此函数作为参数传递给 SciPy 库“optimize”类中的“minimize”函数。

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

更新于: 2020-12-10

569 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告