【问题标题】:How to linearize constraints in Gurobi如何在 Gurobi 中线性化约束
【发布时间】:2019-05-03 23:10:19
【问题描述】:

我正在使用 Gurobi

我有 2 个决策变量 xy,我想线性化一些约束,这是我的代码:

m.addConstr( x == max(0, y) )
m.addConstr( x >= 0 )

【问题讨论】:

  • “线性化”到底是什么意思? x 是什么数据结构?您的代码是否有效?如果不是,您遇到的问题行为是什么?请按照How to Ask 修改您的问题,并发布minimal reproducible example
  • 如果max 部分给您建模带来了麻烦,请查看gurobipy.max_ 函数。如果您没有成功,请按照上面的建议修改您的问题。

标签: python optimization gurobi


【解决方案1】:

假设目标函数是一个最小化,而您只想跟踪某物的最大值,比如能量峰值,

如果 m.addConstr( x >= 0 ) 是一个真正的要求, 那么你可以只设置 y=x,这没有任何意义,因为 x 本身会保持非负数,不需要 y

你可以使用

m.addConstr(x>=0)
m.addConstr(x>=y)

并将 x 放入具有正成本系数的目标函数中。这将使 x 绑定到 max(0,y)

参考https://orinanobworld.blogspot.com/2011/01/max-and-min-functions-in-mip.html

【讨论】:

  • 这并没有达到@hungkai 想要的(虽然问题不是很清楚):你的约束只保证x >= max(0, y),但问题要求x == max(0,y)
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多