Scipy 优化最小化缺少 1 个必需的位置参数
Scipy Optimize Minimize missing 1 required positional argument
我正在努力学习如何使用 scipy.optimize.minimize。我将需要它来处理两个变量的函数,每个变量都有大约一千个项;所以我先想出了一个简单的例子:
from scipy.optimize import minimize
def test_function(x,y):
return x*(x-1)+y*(y-1)
mins=minimize(test_function,x0=(0,0),bounds=[(0,1),(0,1)])
所以我希望得到 x=0.5, y=0.5 的答案。
不幸的是,我收到了以下错误:
TypeError: test_function() missing 1 required positional argument: 'y'
我的测试函数缺少位置参数是什么意思?
设计向量需要是可迭代的。您可以在 objective 函数中将其解压缩到 x 和 y 变量。下面的示例假设 x 和 y 是代码片段中的标量,如果它们是向量,则需要获取 [= 的切片12=]对应你变量的长度。
from scipy.optimize import minimize
def test_function(design_variables):
x = design_variables[0]
y = design_variables[1]
return x*(x-1)*y*(y-1)
mins = minimize(test_function, x0=(0,0), bounds=[(0,1),(0,1)])
print(mins)
优化结果:
fun: 0.0
jac: array([0., 0.])
message: 'Optimization terminated successfully.'
nfev: 4
nit: 1
njev: 1
status: 0
success: True
x: array([0., 0.])
我正在努力学习如何使用 scipy.optimize.minimize。我将需要它来处理两个变量的函数,每个变量都有大约一千个项;所以我先想出了一个简单的例子:
from scipy.optimize import minimize
def test_function(x,y):
return x*(x-1)+y*(y-1)
mins=minimize(test_function,x0=(0,0),bounds=[(0,1),(0,1)])
所以我希望得到 x=0.5, y=0.5 的答案。
不幸的是,我收到了以下错误:
TypeError: test_function() missing 1 required positional argument: 'y'
我的测试函数缺少位置参数是什么意思?
设计向量需要是可迭代的。您可以在 objective 函数中将其解压缩到 x 和 y 变量。下面的示例假设 x 和 y 是代码片段中的标量,如果它们是向量,则需要获取 [= 的切片12=]对应你变量的长度。
from scipy.optimize import minimize
def test_function(design_variables):
x = design_variables[0]
y = design_variables[1]
return x*(x-1)*y*(y-1)
mins = minimize(test_function, x0=(0,0), bounds=[(0,1),(0,1)])
print(mins)
优化结果:
fun: 0.0
jac: array([0., 0.])
message: 'Optimization terminated successfully.'
nfev: 4
nit: 1
njev: 1
status: 0
success: True
x: array([0., 0.])