我正在尝试使用整数规划优化目标函数,我必须使用Max
我的函数中的运算符,我想知道有什么办法可以处理这个问题吗?
其实我的问题类似于使用最小/最大within整数线性规划 https://stackoverflow.com/questions/10792139/using-min-max-within-an-integer-linear-program?answertab=oldest#tab-top但在某些方面有所不同:
- 所有变量都是二进制的。
- 注意
x4
and x5
呈现在两个地方。
- 一种可能的解决方案是使用辅助变量,例如答案类似的问题 https://stackoverflow.com/questions/10792139/using-min-max-within-an-integer-linear-program?answertab=oldest#tab-top,但在我的示例中使用此解决方案时我感到很困惑。
Example:
Minimize (c1 * x1) + (c2 * x2) + (c3 * x3) + Max(c4 * x4, c5 * x5) + (c6 * x4) + (c7 * x5)
受
一些平等和不平等的约束
使用您链接的问题中的方法。表达方式
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 * x4
or c5 * x5
。引入的变量x6
将始终大于或等于这两个表达式,因此将始终大于或等于总的最大表达式。当正确最小化时,x6 将触底于 max 表达式的值。因此,当最小化时,这两种形式是等效的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)