python - scipy.optimize.fim错误: need more than 1 value to unpack

标签 python optimization scipy minimum fminsearch

我知道有很多与我类似的帖子,但我真的无法将它们应用到我的情况,所以请我请求你的帮助。基本上,我的代码如下:

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 是内部有数字的列表的列表,Annuity、Expiry 和 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)

关于python - scipy.optimize.fim错误: need more than 1 value to unpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524524/

相关文章:

javascript - 合并和缩小多个 CSS/JS 文件

python - 在 MATLAB 中检查梯度而不解决优化问题

python - imgur 上的图像格式

python - 替换json中未知键的值

c - 这是 Clang 优化器错误还是未定义的行为?

python - 在 Python 中将函数应用于 numpy 数组

python - 如何获取 Scipy 稀疏矩阵(csr_matrix 和 csc_matrix)中每一行的总和和每一列的总和?

Python以交替方式组合两个不等长的列表

python re.split() 可疑结果

python - 在 Python 中连接字符串的最有效方法