我有一个函数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)
然后一切正常。 (sabs
和apNn
是我之前定义的函数。)。
但是,如果我在循环中生成约束并使用:
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循环产生了完全相同的东西,我无法看出这种差异来自何处。