【问题标题】:Scipy.optimize.minimize giving error when passed a single parameter with argsScipy.optimize.minimize 在使用 args 传递单个参数时给出错误
【发布时间】:2015-05-13 22:46:42
【问题描述】:

给定以下值

a = 100.0
b = 50.0
c = 200.0

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

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

【问题讨论】:

    标签: python scipy minimize


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2022-01-01
      • 1970-01-01
      • 2016-09-14
      相关资源
      最近更新 更多