使用scipy.optimize.brute:我如何让迷你器超出指定范围?

时间:2014-12-07 20:05:33

标签: python scipy minimization

我只想尝试使用scipy.optimize.brute进行最简单的函数最小化,可以想象:在网格lambda x.x中找到最小的标识函数[1,2,3,...100]。在documentation of scipy.optimize.brute之后,我使用

scipy.optimize.brute(lambda x:x, (slice(1,100,1),))

预期的答案当然是1,但是我的python控制台给了我-6.33825300e+28。为什么它远离预期?

1 个答案:

答案 0 :(得分:2)

指定finish=None

scipy.optimize.brute(lambda x:x, (slice(1,100,1),), finish=None)

默认行为是通过fmin传递输出以改进它。 ranges未传递给fmin;他们似乎被认为是暗示,而不是边界。指定finish=None会使brute直接为您提供强力解决方案。

如果您希望 fmin改善搜索结果,请将界限运用到您的函数中:

scipy.optimize.brute(lambda x: (x if 1 <= x <= 100 else np.inf), (slice(1,100,1),))