如何处理Gurobi中的Abs约束?

2024-06-16 11:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在古洛比有腹肌约束。我已经查阅了官方指南手册。它提供了两种添加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。看来上面提到的方法根本不起作用

我怎样才能解决这个问题

非常感谢


Tags: inselfdatamodelabsvariablest1x1
1条回答
网友
1楼 · 发布于 2024-06-16 11:11:59

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

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

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

相关问题 更多 >