在scipy.optimize.brute()中指定范围

时间:2017-07-28 06:15:36

标签: python optimization scipy runtime-error

当我尝试使用以下代码使用scipy.minimize.brute()最小化函数时:

import scipy
scipy.optimize.brute(lambda x: x**2, ranges=(-2,3))

我收到以下错误:

TypeError: object of type 'int' has no len()

我想这与范围的规格有关,但我不明白为什么。文档说

  

范围元组的每个组件必须是“切片对象”或形式的范围元组(低,高)。

我的错误在哪里?

1 个答案:

答案 0 :(得分:6)

正如文件所说:

  

范围元组的每个组件必须是“切片对象”或形式的范围元组(低,高)。

因此该函数需要一个元组元组,每个维度的形式(low, high)之一。您只有一个维度,因此您的案例中的正确调用将是

scipy.optimize.brute(lambda x: x**2, ranges=((-2,3),) )