数学建模过程中,经常会遇到下面的表达式:
x
=
max
{
y
,
0
}
x=\max\{y, 0\}
x=max{y,0}
这是一个非线性表达式,如何将这个表达式转化为线性,进而调用线性规划软件求解呢?通常需要引入一个 0-1 变量
δ
\delta
δ, 一个大常数 M,转化为五个不等式。如下:
x
≤
y
+
(
1
−
δ
)
M
x
≥
y
−
(
1
−
δ
)
M
x
≤
δ
M
y
≤
δ
M
x
≥
0
\begin{aligned} x&\leq y +(1-\delta)M\\ x&\geq y-(1-\delta)M\\ x&\leq \delta M\\ y&\leq \delta M\\ x&\geq 0 \end{aligned}
xxxyx≤y+(1−δ)M≥y−(1−δ)M≤δM≤δM≥0
(不等式
y
≥
−
(
1
−
δ
)
M
y\geq -(1-\delta) M
y≥−(1−δ)M 不需要,因为自动满足)
上面第 2 个不等式也可以更简单地写成:
x
≥
y
x\geq y
x≥y
另外,假如有下面的 0-1 判断条件:
x
=
{
a
z
=
1
b
z
=
0
x=\begin{cases} a\quad &z=1\\ b & z=0 \end{cases}
x={abz=1z=0
则可以转化为下面的线性表达式:
x ≤ a + ( 1 − z ) M x ≥ a − ( 1 − z ) M x ≤ b + z M x ≥ b − z M \begin{aligned} x&\leq a+(1-z)M\\ x&\geq a-(1-z)M\\ x&\leq b+zM\\ x&\geq b-zM \end{aligned} xxxx≤a+(1−z)M≥a−(1−z)M≤b+zM≥b−zM
牢记这个小技巧非常方便!