与this问题(以及交叉发布的here)有点关系,我试图在^{x
,并基于x
的组件填充符号函数表达式的矩阵A
。更具体地说,我希望做如下(c)部分:
from casadi import *
opti = Opti()
n = 3
B = np.random.normal(size=[n, n])
D = np.random.normal(size=[n, n])
D = np.dot(D.T, D)
##(a) variables and expressions
x = opti.variable(n); opti.set_initial(x, x0)
A = opti.variable(n, n) # or would A = MX(n, n) be better?
##(b) objective
opti.minimize(sum(x[i]**2 for i in range(n))) # generic objective
##(c) populate symbolic matrix constraint
yi = MX.sym('yi')
yj = MX.sym('yj')
f_Aij = Function('f_Aij', [yi, yj], [(yi+yj)**2], ['yi', 'yj'], ['Aij'])
for i in range(n):
for j in range(n):
xi = x[i]
xj = x[j]
A[i,j] = f_Aij(xi, xj)
##(d) matrix inverse constraint
opti.subject_to(diag(solve(A,B) @ D @ solve(A, B).T) <= bounds)
##(e) solve
opti.solver('ipopt')
sol = opti.solve()
print(sol.value(x))
但我得到一个错误:
^{pr2}$我认为我没有正确初始化A
,因为xi
和{x
的向量变量{x.is_symbolic()
返回{NaN
错误?在
目前没有回答
相关问题 更多 >
编程相关推荐