Python Scipy.optimize.minimize在传递带有args的单个参数时给出的错误

Python Scipy.optimize.minimize在传递带有args的单个参数时给出的错误,python,scipy,minimize,Python,Scipy,Minimize,给定以下值 a = 100.0 b = 50.0 c = 200.0 以下代码有效(它没有做任何有趣的事情) 但是下面的代码会产生错误>。但唯一的区别似乎是我只传递了一个论点,而不是两个 def excessRevenue2(taxH,blah1): return taxH**2 + blah1 print optimize.minimize( excessRevenue2,c,args=(a) ).x 现在Python认为args参数是一个浮点,而不是元组,所以只需添加一个逗号 p

给定以下值

a = 100.0
b = 50.0
c = 200.0
以下代码有效(它没有做任何有趣的事情)

但是下面的代码会产生错误>。但唯一的区别似乎是我只传递了一个论点,而不是两个

def excessRevenue2(taxH,blah1):
    return taxH**2 + blah1
print optimize.minimize( excessRevenue2,c,args=(a) ).x

现在Python认为
args
参数是一个浮点,而不是元组,所以只需添加一个逗号

print optimize.minimize( excessRevenue2,c,args=(a,)).x
因此,现在该函数将按预期工作,即:

from scipy import optimize

a = 100.0
b = 50.0
c = 199.9

def excessRevenue1(taxH,blah1,blah2):
    return taxH**2 + blah1 + blah2

def excessRevenue2(taxH,blah1):
    return taxH**2 + blah1

print optimize.minimize( excessRevenue2,c,args=(a,)).x
print optimize.minimize(excessRevenue1,c,args=(a,b)).x
将返回:

>>> print optimize.minimize( excessRevenue2,c,args=(a,)).x
[ -1.65480420e-07]
>>> print optimize.minimize(excessRevenue1,c,args=(a,b)).x
[ -1.65480420e-07]
>>> print optimize.minimize( excessRevenue2,c,args=(a,)).x
[ -1.65480420e-07]
>>> print optimize.minimize(excessRevenue1,c,args=(a,b)).x
[ -1.65480420e-07]