在 scipy.optimize 中添加参数
Add argument in scipy.optimize
我正在尝试使用 scipy.optimize.minimize(单纯形法)来最小化以下函数
argmin (sum(i=0 to 9) (a*i - b_i)**2)
我想获取a的值。我有 10 个 b_i 的值(我已经在函数外计算了)我想插入函数
def f(a, b):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out= optimize.minimize(f, init, method='nelder-mead')
它给出一个错误提示:f() missing 1 required positional argument: 'b'
我怎样才能做到运行。
这个怎么样:
def f(a):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out= optimize.minimize(f, init, method='nelder-mead')
正如您所说,您的目标变量是 a
并且您有 b
的值,那么我猜您需要使用一个参数构造 Obj 函数。
scipy.optimize.minimize
中有一个名为 args()
的可选参数,您可以使用该参数将参数作为元组传递给 objective 函数。您可以按如下方式执行此操作:
from scipy.optimize import minimize
b = [1,2,3,4,5,6,7,8,9,10] # for example
def f(a, b):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out = minimize(f, init, args=(b), method='nelder-mead')
print(out)
我正在尝试使用 scipy.optimize.minimize(单纯形法)来最小化以下函数
argmin (sum(i=0 to 9) (a*i - b_i)**2)
我想获取a的值。我有 10 个 b_i 的值(我已经在函数外计算了)我想插入函数
def f(a, b):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out= optimize.minimize(f, init, method='nelder-mead')
它给出一个错误提示:f() missing 1 required positional argument: 'b'
我怎样才能做到运行。
这个怎么样:
def f(a):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out= optimize.minimize(f, init, method='nelder-mead')
正如您所说,您的目标变量是 a
并且您有 b
的值,那么我猜您需要使用一个参数构造 Obj 函数。
scipy.optimize.minimize
中有一个名为 args()
的可选参数,您可以使用该参数将参数作为元组传递给 objective 函数。您可以按如下方式执行此操作:
from scipy.optimize import minimize
b = [1,2,3,4,5,6,7,8,9,10] # for example
def f(a, b):
func = 0
for i in range(10):
func+= (a*i - b[i])**2
return func
init = [1]
out = minimize(f, init, args=(b), method='nelder-mead')
print(out)