python - 在python的约束中索引gurobi矩阵变量的问题
问题描述
我正在研究一个优化问题。我在约束部分中索引 gurobi 矩阵变量时遇到问题。我无法解决矩阵维度问题。有人可以看看我的脚本并指导我如何修复它吗?
#In the nested loop of the constraint part:
Ts*np.linalg.inv(M)@Bu@dDelta)@useq[i-k-2]+s1[:,k]
由于 s1 变量,我收到不兼容的尺寸错误。但是,我将 s1 矩阵 3 x 1 切片,其大小已定义为 3x5。我不明白我错在哪里。非常感谢您提前。
#python code
N=5
m=gp.Model("matrix")
Ts=0.2
M=np.eye(3)
D=np.eye(3)
C=np.eye(3)
Bu=np.array((3,4)
pos=np.array([0,0,0]).T
u=np.array([0,0,0,0]).T
xseq=[]
xseq.append(pos)
useq=[]
#1st loop
for i in range (1,N+1):
xseq.append(pos)
useq.append(u)
#2nd loop
for i in range(N+1,7):
s1=m.addMVar((3,N)) #s1 matrix of 3x5
A=np.eye(3)
deltaBut1=m.addVar(1)
deltaBut2=m.addVar(1)
deltaBut3=m.addVar(1)
deltaBut4=m.addVar(1)
deltaBut=np.array([deltaBut1,deltaBut2,deltaBut3,deltaBut4]).T
dDelta=np.diag(deltaBut)
obj1=0
for k in range(0,N): # N=5
m.addConstr(xseq[i-k-1]-A@xseq[i-k-2]==(Ts*np.linalg.inv(M)@Bu@dDelta)@useq[i-k-2]+s1[:,k])
obj1=obj1+s1[:,k]@s1[:,k]
m.setObjective(10**3*(obj1))
m.optimize
我正在实施的约束如下图所示:
目前,我不考虑这Bu*f(t-1)
部分。
在约束部分,左侧给出 3x1 形状,而右侧给出形状 (3,) 的 MLinExpr。有人可以帮助我吗?
解决方案
推荐阅读
- c# - 无法在 MVC 5 中检查授权和使用会话超时
- javascript - 尝试使用 Function 对象使用尾递归
- javascript - 有没有办法使用 Three.js 将 3D 模型导出为 PNG 图像
- shell - 有没有一种方法可以让我在另一台服务器上使用 shell 脚本访问、使用和操作来自一台服务器的文件>
- firebase - 如何优化每次应用启动时的 Firestore 读取
- python - 在 python 中安装任何包时出错:HTTPError: 404 Client Error: Not Found for url
- mysql - MySQL/MariaDB 更新计数器组按
- protocol-buffers - 从 protobuf 生成的 Java 类有编译错误
- c# - linq:如何检查一个属性的值是否存在
- javascript - 如何让画布动画代码与多个元素一起使用?