使用args传递单个参数时,Scipy.optimize.minimize给出错误

时间:2015-05-13 22:46:42

标签: python scipy minimize

给出以下值

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

以下代码有效(它没有做任何有趣的事情)

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

但以下代码产生错误<< TypeError:只能将元组(不是" float")连接到元组>>。但唯一的区别似乎是我只传递了一个参数而不是两个参数。

bsearch()

1 个答案:

答案 0 :(得分:0)

现在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]