我正在尝试使用整数编程优化目标函数,我必须在我的函数中使用Max
运算符,我想知道有没有办法处理它?
实际上我的问题与Using min/max within an Integer Linear Program类似,但在某些方面有所不同:
x4
和x5
分为两个部分。实施例
最小化 (c1 * x1) + (c2 * x2) + (c3 * x3) + Max(c4 * x4, c5 * x5) + (c6 * x4) + (c7 * x5)
受的影响 一些平等和不平等约束
答案 0 :(得分:2)
使用您链接的问题中的方法。表达式
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
或c5 * x5
。引入的变量x6
将始终大于或等于这两个表达式,因此将始终大于或等于总max-expression。正确最小化后,x6将以max-expression的值触底。所以当最小化时,这两种形式是等价的。