2.7.2.5 全局最优化算法

如果你的问题不允许惟一的局部最低点(很难测试除非是凸函数),如果你没有先前知识来让优化起点接近答案,你可能需要全局最优化算法。

2.7.2.5.1 暴力: 网格搜索

scipy.optimize.brute()在 函数网格内来评价函数,根据最小值返回参数。参数由numpy.mgrid给出的范围来指定。默认情况下,每个方向进行20步:

In [4]:

  1. def f(x): # rosenbrock函数
  2. return .5*(1 - x[0])**2 + (x[1] - x[0]**2)**2
  3. optimize.brute(f, ((-1, 2), (-1, 2)))

Out[4]:

  1. array([ 1.00001462, 1.00001547])