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

Eth*_*xxx 3 python optimization runtime-error scipy

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

import scipy
scipy.optimize.brute(lambda x: x**2, ranges=(-2,3))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: object of type 'int' has no len()
Run Code Online (Sandbox Code Playgroud)

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

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

我的错误在哪里?

oba*_*tos 6

如文档所述:

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

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

scipy.optimize.brute(lambda x: x**2, ranges=((-2,3),) )
Run Code Online (Sandbox Code Playgroud)