scipy.optimize.fim错误:需要超过1个值才能解开包装



我知道有很多与我的帖子相似的帖子,但我真的不设法将它们应用于我的情况,所以请我寻求您的帮助。基本上,我的代码如下:

def Black_min(f, k, ann, vol, ex, cp):
    d1=(math.log(f/k)+0.5*vol**2*ex)/math.sqrt(vol**2*ex)
    d2=(math.log(f/k)-0.5*vol**2*ex)/math.sqrt(vol**2*ex)
    Price=cp*(f*norm.cdf(cp*d1)-k*norm.cdf(cp*d2))*ann*20000
    return Price
banana = lambda x: (Price_Cube[0][4]-Black_min(F[0], K[0][4], Annuity[0], x, Expiry[0], CP[4]))**2
xopt, fopt = scipy.optimize.fmin(func=banana, x0=[Vol_Cube[0][0]],  disp=False)

Price_cube,K是内部数字,年金,有效期和CP的列表,只是列表。当我运行代码时,我会得到此。

    xopt, fopt = scipy.optimize.fmin(func=banana, x0=[Vol_Cube[0][0]],  disp=False)
ValueError: need more than 1 value to unpack

我知道这是一个愚蠢的错误,但我真的看不到。任何帮助将不胜感激,谢谢。

问题是,您尝试将fmin的返回值分配给两个变量xoptfopt,但默认情况下fmin仅返回xopt。您应该尝试

xopt = scipy.optimize.fmin(func=banana, x0=[Vol_Cube[0][0]])

如果您也希望最少以功能值设置,则必须将full_output设置为True,然后还将获得更多诊断:

xopt, fopt, iter, funccalls, warnflags = scipy.optimize.fmin(func=banana, x0=[Vol_Cube[0][0]], full_output=True)

相关内容

  • 没有找到相关文章

最新更新