max函数的线性化方法

    技术2025-11-02  25

    线性化步骤

    参考知乎回答。

    最大值约束式如下(假设 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} zmax{x,y}(1)

    z ≤ max ⁡ { x , y } (2) z \le \max \{ x,y\} \tag {2} zmax{x,y}(2)

    其中约束 ( 1 ) (1) (1)显然可用如下约束式等价:

    z ≥ x z \ge x zx z ≥ y z \ge y zy

    约束 ( 2 ) (2) (2)可用如下约束式等价:

    z ≤ x + M ( 1 − u 1 ) (3) z \le x + M(1 - {u_1}) \tag {3} zx+M(1u1)(3) z ≤ y + M ( 1 − u 2 ) (4) z \le y + M(1 - {u_2}) \tag {4} zy+M(1u2)(4) u 1 + u 2 ≥ 1 (5) {u_1} + {u_2} \ge 1\tag {5} u1+u21(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 zx z ≤ y z \le y zy,在 u = 0 u=0 u=0时被松弛。

    因此针对 u u u的不同取值,式 ( 3 ) (3) (3)、式 ( 4 ) (4) (4)等价为4种可能的情形:

    z ≤ x z \le x zx z ≤ y z \le y zy 同时成立,即 z ≤ min ⁡ { x , y } z \le \min \{ x,y\} zmin{x,y} —— u 1 = 1 , u 2 = 1 {u_1}=1,{u_2}=1 u1=1,u2=1 z ≤ x z \le x zx,即 z ≤ max ⁡ { x , y } z \le \max \{ x,y\} zmax{x,y} —— u 1 = 1 , u 2 = 0 {u_1}=1,{u_2}=0 u1=1,u2=0 z ≤ y z \le y zy —— 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 zx z ≥ y z \ge y zy z ≤ x + M ( 1 − u 1 ) z \le x + M(1 - {u_1}) zx+M(1u1) z ≤ y + M ( 1 − u 2 ) z \le y + M(1 - {u_2}) zy+M(1u2) u 1 + u 2 ≥ 1 {u_1} + {u_2} \ge 1 u1+u21 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)加以解决。没有特别的理论深度,可以称之为小技巧。

    Processed: 0.022, SQL: 9