python - 如何使用 Gurobi 在 Python 中将变量矩阵乘以系数矩阵
问题描述
我想将下面的两个矩阵相乘并设置为我的模型的目标:
m = gp.Model("matrix")
x = m.addMVar((9, 9), vtype=GRB.BINARY, name="x")
c = np.random.rand(9,9)
m.setObjective(x @ c, GRB.MINIMIZE)
这是我想要实现的目标
这给了我以下错误:
错误代码 -1:变量不是一维 MVar 对象
我该如何解决?我想 Gurobi 不接受 2D Mvar 对象乘法
解决方案
正如评论中已经提到的,请注意,两个矩阵的乘积又是一个矩阵,并且评估的目标需要是一个标量,所以这可能不是您想要做的。根据您的图片,您的目标是简单的线性表达式,而不是矩阵乘积。因此,使用 Gurobi 的代数建模接口要容易得多,即Var
s 而不是MVars
:
import gurobipy as gp
from gurobipy import GRB, quicksum as qsum
import numpy as np
M, N = 9, 9
m = gp.Model("matrix")
x = m.addVars(M, N, vtype="B", name="x")
c = np.random.rand(M, N)
m.setObjective(qsum(c[i,j]*x[i,j] for i in range(M) for j in range(N)), GRB.MINIMIZE)
推荐阅读
- java - 获取 rtc 中文件的基线和历史信息的 API
- regex - 从 -999 到 999 的数字的正则表达式,但不是 -0
- winapi - 使用多个调色板绘制 4bpp 2D 瓷砖的最佳方法是什么?
- node.js - 试图在命令上运行 execsync 但不断得到...不被识别为内部
- ffmpeg - ffmpeg rtsp 记录段和文件夹-文件名
- python - 从 Python 和 PostgreSQL 中提取星期几时的差异,有什么解决方案吗?
- python - 如何使用 OCR Pytesseract 删除文本提取后出现的箭头符号
- amazon-web-services - AWS CLI:api gateway get-usage 不返回所有密钥的使用情况
- javascript - 如何在 Amp 上创建添加到主屏幕?
- reactjs - prevstate 有什么用?