scipy.optimize.minimize中的约束相关问题

时间:2014-12-17 12:26:49

标签: python python-2.7 optimization scipy minimize

我有一个函数g,我根据约束列表coeffs对数组cons进行最小化。

如果我使用

n = 2 
cons2 = [{'type': 'eq', 'fun': lambda cts: 1 - sabs(apNn(n,n,np.roll(cts, - 0 * 2**(n + 1))))},
            {'type': 'eq', 'fun': lambda cts: 1 - sabs(apNn(n,n,np.roll(cts, - 1 * 2**(n + 1))))}]
ans = scipy.optimize.minimize(g, coeffs, constraints=cons2)

然后一切正常。 (sabsapNn是我之前定义的函数。)。

但是,如果我在循环中生成约束并使用:

cons = []
for v in range(2):
    cons.append({'type': 'eq', 'fun': lambda cts: 1 - sabs(apNn(n,n,np.roll(cts, - v * 2**(n + 1))))})
ans = scipy.optimize.minimize(g, coeffs, constraints=cons)

然后优化失败并显示消息Singular matrix C in LSQ subproblem。鉴于for循环产生了完全相同的东西,我无法看出这种差异来自何处。

0 个答案:

没有答案