2.7.2.5 全局最优化算法
如果你的问题不允许惟一的局部最低点(很难测试除非是凸函数),如果你没有先前知识来让优化起点接近答案,你可能需要全局最优化算法。
2.7.2.5.1 暴力: 网格搜索
scipy.optimize.brute()在 函数网格内来评价函数,根据最小值返回参数。参数由numpy.mgrid给出的范围来指定。默认情况下,每个方向进行20步:
In [4]:
def f(x): # rosenbrock函数
return .5*(1 - x[0])**2 + (x[1] - x[0]**2)**2
optimize.brute(f, ((-1, 2), (-1, 2)))
Out[4]:
array([ 1.00001462, 1.00001547])