首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gurobi模型中求极值矩阵系数的有效方法

Gurobi模型中求极值矩阵系数的有效方法
EN

Stack Overflow用户
提问于 2022-01-10 13:23:06
回答 1查看 110关注 0票数 0

我正在寻找一种更有效的方法来识别Gurobi模型(!)中的极值矩阵系数。模型已经建立。对于“极端”,我指的是特别小或大的系数,这些系数对模型的数值性能有负面影响。以下代码非常慢,因为它查询所有系数:

代码语言:javascript
复制
    mdl.update()
    for c in mdl.getConstrs():
        c_name = c.ConstrName
        for v in mdl.getVars():
            v_name = v.VarName
            coefficient = mdl.getCoeff(c, v)
            if (coefficient != 0.0 and abs(coefficient) < 10e-4) or abs(coefficient) > 10e7:
                # Do something

我认为Model.getA()可能会有所帮助,但由于某种原因,调用该函数会引发错误。

EN

回答 1

Stack Overflow用户

发布于 2022-01-10 19:25:16

如果只需要矩阵的最大值和/或最小系数值,只需分别查询MaxCoeffMinCoeff属性。或者,如果您需要检查所有矩阵系数,则需要对所有系数进行迭代,但只需对非零系数进行迭代就可以更有效地完成。我相信这能满足你的需要:

代码语言:javascript
复制
for c in mdl.getConstrs():
  row = mdl.getRow(c)
  for i in range(row.size()):
    coefficient = row.getCoeff(i)
    if (coefficient != 0.0 and abs(coefficient) < 1e-4) or abs(coefficient) > 1e7:
      bigvar = row.getVar(i)
      # Do something
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70653109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档