线性化步骤
参考知乎回答。
最大值约束式如下(假设 x , y x,y x,y 中的 x x x 为较大值):
z = max { x , y } z = \max \{ x,y\} z=max{x,y}
该约束可等价为以下两个约束:
z
≥
max
{
x
,
y
}
(1)
z \ge \max \{ x,y\} \tag {1}
z≥max{x,y}(1)
z ≤ max { x , y } (2) z \le \max \{ x,y\} \tag {2} z≤max{x,y}(2)
其中约束 ( 1 ) (1) (1)显然可用如下约束式等价:
z ≥ x z \ge x z≥x z ≥ y z \ge y z≥y
约束 ( 2 ) (2) (2)可用如下约束式等价:
z ≤ x + M ( 1 − u 1 ) (3) z \le x + M(1 - {u_1}) \tag {3} z≤x+M(1−u1)(3) z ≤ y + M ( 1 − u 2 ) (4) z \le y + M(1 - {u_2}) \tag {4} z≤y+M(1−u2)(4) u 1 + u 2 ≥ 1 (5) {u_1} + {u_2} \ge 1\tag {5} u1+u2≥1(5) u 1 , u 2 ∈ { 0 , 1 } (6) {u_1},{u_2} \in \{ 0,1\}\tag {6} u1,u2∈{0,1}(6)
其中 M M M为较大常数。
解释如下:
式 ( 3 ) (3) (3)、式 ( 4 ) (4) (4)在 u = 1 u=1 u=1时分别等价为 z ≤ x z \le x z≤x 、 z ≤ y z \le y z≤y,在 u = 0 u=0 u=0时被松弛。
因此针对 u u u的不同取值,式 ( 3 ) (3) (3)、式 ( 4 ) (4) (4)等价为4种可能的情形:
- z ≤ x z \le x z≤x、 z ≤ y z \le y z≤y 同时成立,即 z ≤ min { x , y } z \le \min \{ x,y\} z≤min{x,y} —— u 1 = 1 , u 2 = 1 {u_1}=1,{u_2}=1 u1=1,u2=1
- z ≤ x z \le x z≤x,即 z ≤ max { x , y } z \le \max \{ x,y\} z≤max{x,y} —— u 1 = 1 , u 2 = 0 {u_1}=1,{u_2}=0 u1=1,u2=0
- z ≤ y z \le y z≤y —— u 1 = 0 , u 2 = 1 {u_1}=0,{u_2}=1 u1=0,u2=1
- 无约束 —— u 1 = 0 , u 2 = 0 {u_1}=0,{u_2}=0 u1=0,u2=0
由于已有约束 ( 1 ) (1) (1)的限制,情形1、2、3中只有2可能成立(注意前面已经假设 x x x为较大值),1、3均与约束 ( 1 ) (1) (1)矛盾。
同时注意到情形4会导致我们得不到 z = max { x , y } z = \max \{ x,y\} z=max{x,y}的整体约束效果,而且该种情形和约束 ( 1 ) (1) (1)不矛盾,也就意味着无法通过约束 ( 1 ) (1) (1)的限制作用来消除,因此我们需要进一步添加约束避免情形4的出现。
进一步添加约束 ( 5 ) (5) (5)、 ( 6 ) (6) (6),保证 u 1 , u 2 {u_1},{u_2} u1,u2必须至少有一个为 1 1 1,即不可能出现情形4。
综上,最大值约束可通过如下线性约束等价:
z
≥
x
z \ge x
z≥x
z
≥
y
z \ge y
z≥y
z
≤
x
+
M
(
1
−
u
1
)
z \le x + M(1 - {u_1})
z≤x+M(1−u1)
z
≤
y
+
M
(
1
−
u
2
)
z \le y + M(1 - {u_2})
z≤y+M(1−u2)
u
1
+
u
2
≥
1
{u_1} + {u_2} \ge 1
u1+u2≥1
u
1
,
u
2
∈
{
0
,
1
}
{u_1},{u_2} \in \{ 0,1\}
u1,u2∈{0,1}
其中 M M M为较大常数。
总结
m a x max max 函数体现的是一种选择性,如果a大于b,就选a;反之选b。这类选择性一般都可以通过大M法的思路(0-1变量配合大M)加以解决。没有特别的理论深度,可以称之为小技巧。