【问题标题】:minimization problem TypeError: 'numpy.float64' object is not callable最小化问题 TypeError: 'numpy.float64' object is not callable
【发布时间】:2020-07-13 12:23:12
【问题描述】:

所以我试图使用优化的最小化来最小化给定参数的数组函数,它给了我这个错误:

Traceback(最近一次调用最后一次): 文件“plot2.py”,第 72 行,在 水库=最小化(罗森(al,c),c,args=(al)) 文件“/home/usd/.local/lib/python3.6/site-packages/scipy/optimize/_minimize.py”,第 604 行,最小化 return _minimize_bfgs(fun, x0, args, jac, callback, **options) _minimize_bfgs 中的文件“/home/usd/.local/lib/python3.6/site-packages/scipy/optimize/optimize.py”,第 1003 行 old_fval = f(x0) function_wrapper 中的文件“/home/usd/.local/lib/python3.6/site-packages/scipy/optimize/optimize.py”,第 327 行 返回函数(*(wrapper_args + args)) TypeError: 'numpy.float64' 对象不可调用

这是代码:

def rosen(xi,c):
return sum((xi[1:] - xi[:-1]-c)*(xi[1:] - xi[:-1]-c))

for index, k in enumerate(jo):
    for ko in range(len(alp2[index])):
        al = alp[index]
        al2 = alp[index+1]
        al = np.array(al)
        be = alp2[index][ko]
        be2 = alp2[index][ko] 
        c = 5
        print(rosen(al,c))
        res = minimize(rosen(al,c), c, args=(al))

【问题讨论】:

    标签: python-3.x scipy-optimize-minimize


    【解决方案1】:

    你必须给一个可调用函数作为第一个参数来最小化。在您的情况下,您正在评估函数,因此您将返回值作为第一个参数,这是一个浮点数 - 这是不可调用的,因此是错误。下面是带有工作函数调用的代码的简化示例:

    import numpy as np
    from scipy.optimize import minimize
    
    def rosen(xi,c):
        return sum((xi[1:] - xi[:-1]-c)*(xi[1:] - xi[:-1]-c))
    
    
    c = 5
    res = minimize(rosen, x0=np.zeros(2), args=(c,))
    print(res)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-26
      • 2018-03-31
      • 2021-10-22
      • 1970-01-01
      • 2018-08-21
      • 2018-04-14
      • 2019-03-13
      • 2021-09-26
      相关资源
      最近更新 更多