首页 文章

在Gurobi Python Shell中访问Objective Q矩阵

提问于
浏览
0

我正在尝试在Gurobi和Python解决的优化问题(具有二次约束和二次目标函数)中重新构造一个Objective Q矩阵 . Gurobi可以选择将约束和目标函数作为线性表达式添加而不是摆弄矩阵,因此我没有原始矩阵,Gurobi通过我的客观方程和系数为我创建它 .

为了对Objective Q矩阵的凸性psd性质进行分析,我需要有Q(目标矩阵)和A(约束矩阵) . 有谁知道gurobi.py shell中是否有一个命令允许我访问/查看Objective Q矩阵?

提前感谢您,如有必要,请随时要求澄清!

1 回答

  • 0

    Gurobi Optimizer没有简单的函数来从 Model 对象中检索矩阵 . 但是,您可以通过 LinExprQuadExpr 对象迭代获取该数据 . 这是一个简单的程序,它遍历线性约束矩阵(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 .

相关问题