【问题标题】:How to handle Abs constraints in Gurobi?如何处理 Gurobi 中的 Abs 约束?
【发布时间】:2020-06-15 00:27:09
【问题描述】:

我在 Gurobi 中有一个 abs 约束。我已经查看了官方指南的手册。它提供了两种添加abs约束的方法。

  # x5 = abs(x1)
  model.addGenConstrAbs(x5, x1, "absconstr")

  # overloaded form
  model.addConstr(x5 == abs_(x1), name="absconstr")

我必须使用第二种形式,因为我需要绘制这个约束的对偶值。只有addConstr可以绘制影子价格(双值),所以addGenConstrAbs应该避免。

我的代码是:

    def _build_constraints(self):
        m = self.model
        com = self.data.com
        P_nm3 = self.variables.P_nm3
        agents = self.data.agents

        timewindow = self.data.timewindow             
        windowinterval = self.data.windowinterval      

        absP_n = self.variables.absP_n
        P_n = self.variables.P_n

        self.constraints.absv = {}

        for t1 in timewindow:
            for t2 in windowinterval:
                for i, p in enumerate(agents):
                    if p in self.data.generators:
                        pass
                    else:
#                        self.constraints.absv[t1,t2,p] = m.addGenConstrAbs( absP_n[p,t1,t2], P_n[p,t1,t2]) 
                        self.constraints.absv[t1,t2,p] = m.addConstr( absP_n[p,t1,t2] == abs_(P_n[p,t1,t2]), name="absconstr" )

我得到这样的错误:

AttributeError: 'gurobipy.Model' object has no attribute 'abs_'

Gurobi 的版本是 V9.0。似乎提到的方法根本不起作用。

我该如何解决这个问题?

非常感谢!

【问题讨论】:

    标签: python python-3.x optimization gurobi


    【解决方案1】:

    您需要确保您还导入了 abs_ 函数 - 以防您没有导入 from gurobipy import *。所以你要么需要做

    from gurobipy import abs_
    model.addConstr(x == abs_(y))
    

    import gurobipy as gp
    model.addConstr(x == gp.abs_(y))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多