Python';s fmin“u cobyla”;ValueError:使用序列设置数组元素。";
我的Python';s fmin“u cobyla”;ValueError:使用序列设置数组元素。";,python,optimization,scipy,Python,Optimization,Scipy,我的fmin\u cobyla有点问题。我的约束函数就是问题所在,因为它会产生错误。我收到以下错误消息: File "C:/Users/daniel/Documents/Python Scripts/GST_physics\ML_GST.py", line 85, in ML_GST x_opt=scipy.optimize.fmin_cobyla(objectiveFunction,parameters,ConstrainFunction) File "C:\Users\daniel\
fmin\u cobyla
有点问题。我的约束函数就是问题所在,因为它会产生错误。我收到以下错误消息:
File "C:/Users/daniel/Documents/Python Scripts/GST_physics\ML_GST.py", line 85, in ML_GST
x_opt=scipy.optimize.fmin_cobyla(objectiveFunction,parameters,ConstrainFunction)
File "C:\Users\daniel\Anaconda\lib\site-packages\scipy\optimize\cobyla.py", line 171, in fmin_cobyla **opts)
File "C:\Users\daniel\Anaconda\lib\site-packages\scipy\optimize\cobyla.py", line 246, in _minimize_cobyla
dinfo=info)
File "C:\Users\daniel\Anaconda\lib\site-packages\scipy\optimize\cobyla.py", line 240, in calcfc con[k] = c['fun'](x, *c['args'])
ValueError: setting an array element with a sequence.
下面是约束函数的代码。我没有发布所有的代码,因为有很多用户定义的函数没有意义。大部分代码涉及量子计算工作的qutip
包
此函数中出现问题G
是矩阵列表,rho
和E
是数组,pauli_基
是Qobjs
的列表
def ConstrainFunction(x):
[G_chol,r,E]=ParamToGate(x,parameterSizes)
G=[qptInv(np.transpose(np.conj(g))*g,op_basis) for g in G_chol]
G=[np.transpose(np.conj(g))*g for g in G]
c=[]
ceq=np.zeros((len(pauli_basis),len(G)))
for ii in range(len(G)):
for rr in range(len(pauli_basis)):
for mm in range(len(G)):
for nn in range(len(G)):
ceq[rr,ii]=ceq[rr,ii]+G[ii][mm,nn]*(pauli_basis[mm]*pauli_basis[rr]*pauli_basis[nn]).tr()
ceq[rr,ii]=ceq[rr,ii]-kroneckerDelta(0,rr)*(2**(num_qubits*2))
ceq=np.matrix(ceq)
ceq=np.array(mat2vec(ceq))
lengthCEQ=len(ceq)
rho=np.transpose(np.conj(r))*r
traceerror=np.trace(rho)-1.0
ceq=np.vstack([np.array(ceq),np.array([[traceerror.real]])])
return ceq
x_opt=scipy.optimize.fmin_cobyla(objectiveFunction,parameters,ConstrainFunction)
文档中说
cons
关键字包含一个函数或一系列函数:约束函数;必须全部>=0(如果只有1个约束,则为单个函数)。每个函数都将参数x作为其第一个参数。
-您确定您所做的实际上是符合api的吗?如果我正确解释了您的代码,那么您返回的函数具有多维输出,从文档字符串判断,这可能不受支持。