0
失败scipy.minimize我想用scipy.minimize多个约束
def lower_bound(x, mu, r, sigma):
mu_h = mu_hat(x, mu, r)
sigma_h = sigma_hat(x, sigma)
gauss = np.polynomial.hermite.hermgauss(10)
return (1 + mu_h + math.sqrt(2) * sigma_h * min(gauss[1]))
所有相关功能进行测试,以尽量减少下面的函数和预期的返回值。现在为了设置最小化过程,我定义了
cons = ({"type": "ineq",
"fun": mu_hat,
"args": (mu, r)},
{"type": "ineq",
"fun": lambda x, sigma: -1.0*sigma_hat(x, sigma),
"args": (sigma)},
{"type": "ineq",
"fun": lambda x: x},
{"type": "ineq",
"fun": lambda x: 1-np.dot(np.ones(x.size), x)})
作为约束条件。当我运行此代码scipy.minimize给我以下错误消息的约束:
File "/usr/local/lib/python3.5/dist-packages/scipy/optimize/slsqp.py", line 312, in <listcomp>
mieq = sum(map(len, [atleast_1d(c['fun'](x, *c['args'])) for c in cons['ineq']]))
TypeError: <lambda>() argument after * must be an iterable, not float
什么是不正确的定义约束?