在Gurobi-pythonshell中访问目标Q矩阵
我试图在一个优化问题(带有二次约束和二次目标函数)中重新构造一个目标Q矩阵,我正在用Gurobi和Python解决这个问题。Gurobi可以选择添加约束和目标函数作为线性表达式,而不是摆弄矩阵,因此我没有原始矩阵,Gurobi通过我的目标方程和系数为我创建了它 为了分析目标Q矩阵的凸性psd特性,我需要有Q(目标矩阵)和A(约束矩阵)。有人知道gurobi.py shell中是否有命令允许我访问/查看目标Q矩阵吗在Gurobi-pythonshell中访问目标Q矩阵,python,matrix,optimization,psd,gurobi,Python,Matrix,Optimization,Psd,Gurobi,我试图在一个优化问题(带有二次约束和二次目标函数)中重新构造一个目标Q矩阵,我正在用Gurobi和Python解决这个问题。Gurobi可以选择添加约束和目标函数作为线性表达式,而不是摆弄矩阵,因此我没有原始矩阵,Gurobi通过我的目标方程和系数为我创建了它 为了分析目标Q矩阵的凸性psd特性,我需要有Q(目标矩阵)和A(约束矩阵)。有人知道gurobi.py shell中是否有命令允许我访问/查看目标Q矩阵吗 提前感谢您,如有必要,请随时要求澄清 Gurobi优化器没有从模型对象检索矩阵的简
提前感谢您,如有必要,请随时要求澄清 Gurobi优化器没有从
模型
对象检索矩阵的简单函数。但是,您可以通过LinExpr
和QuadExpr
对象以迭代方式获取该数据。下面是一个简单的程序,它迭代线性约束矩阵(a)并打印系数:
from gurobipy import *
m = read('afiro.mps')
for ct in m.getConstrs():
row = m.getRow(ct)
for i in range(row.size()):
print("%s %s %f" % (ct.ConstrName, row.getVar(i).VarName, row.getCoeff(i)))
将其调整为二次目标或二次约束的
QuadExpr
。使用gurobipy 9.x,可以使用(未记录的)Model.getQ()
方法获得目标Q矩阵,如下所示:
from gurobipy import read
m = read('mwe_example.mps')
Q = m.getQ()
Qdense = Q.todense()