【问题标题】:Change lower bound in Gurobi更改 Gurobi 中的下限
【发布时间】:2021-01-29 01:41:12
【问题描述】:

我有大量的决策变量x[i,j,k,l]。我在 python 中使用gurobi。我想更改列表中i 中的一些x 的下限。由于决策变量的数量,最好的方法是什么?
我想尽可能少地使用 for 循环。目前,我使用以下几行花费太多时间。我可以仅使用 on 循环执行此操作,即列表中的 i 吗?

for i in list:
   for j in J:
     for k in K:
        for l in L:
             model.getVarByName('x[{},{},{},{}]'.format(i,j,k,l)).LB==0

【问题讨论】:

    标签: python gurobi


    【解决方案1】:

    这取决于您如何创建这些变量。如果您将它们作为具有这些索引的多维 multidict 可用,则可以立即访问它们,而无需遍历所有维度和索引。您应该避免按名称获取变量。

    list = ['a','b','c']
    x = model.addVars(list, J, K, L)
    [model.setAttr('LB', x['a',j,k,l], 0) for i in I for k in K for l in L]
    

    您还可以重新考虑 4 维变量是否是为您的问题建模的最有效方法。

    【讨论】:

      【解决方案2】:

      其实你可以用一个简单的语句来设置一堆变量的下限

      model.setAttr("LB", x, 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        相关资源
        最近更新 更多