【问题标题】:Using min/max operator in integer programming在整数编程中使用 min/max 运算符
【发布时间】:2013-12-29 23:02:23
【问题描述】:

我正在尝试使用整数规划优化目标函数,我必须在我的函数中使用Max 运算符,我想知道有什么方法可以解决这个问题吗?

其实我的问题和Using min/max within an Integer Linear Program类似,但在某些方面有所不同:

  • 所有变量都是二进制的。
  • 请注意,x4x5 出现在两个位置。
  • 一种可能的解决方案是使用辅助变量,如similar question 的答案,但在我的示例中使用此解决方案时我很困惑。

示例:

最小化 (c1 * x1) + (c2 * x2) + (c3 * x3) + Max(c4 * x4, c5 * x5) + (c6 * x4) + (c7 * x5)


一些平等和不平等的限制

【问题讨论】:

  • 可能是@solvingPuzzles 可以帮助我!
  • 当有人在一开始就发布为什么它与类似问题不同时令人耳目一新。
  • @Dennis Meng,对不起,我没明白你的意思,我的问题不够清楚?
  • 一点也不。我在评论你在开始时提到的为什么这与另一个问题不完全一样。那是一件好事。 :)
  • @DennisMeng 感谢您的评论,我编辑了我的问题:)

标签: mathematical-optimization linear-programming maximize


【解决方案1】:

使用您链接的问题中的方法。表达式

Max(c4 * x4, c5 * x5)

可以替换为变量x6,前提是您添加以下附加约束:

x6 >= c4 * x4
x6 >= c5 * x5

所以你的总集变成:

Minimize (c1 * x1) + (c2 * x2) + (c3 * x3) + x6 + (c6 * x4) + (c7 * x5)

受制于:

some equality and inequality constraints

以及新的要求:

x6 >= c4 * x4
x6 >= c5 * x5

这有效,因为Max(c4 * x4, c5 * x5) 将采用值c4 * x4c5 * x5。引入的变量x6 将始终大于或等于这两个表达式,因此将始终大于或等于总的 max-expression。当适当地最小化时,x6 将在 max-expression 的值处触底。所以当最小化时,这两种形式是等价的。

【讨论】:

  • 感谢您非常清楚的解释,我完全明白了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2017-01-01
相关资源
最近更新 更多