线性规划中的几种逻辑表达式
线性规划中的几种逻辑表达式
注意: 摘录字刘博士的《数学建模与数学规划》, 以便用时可查。
实际上Gurobi API 中自身放啊变的逻辑表达式函数,下面列出自定义的实现方式。
1 逻辑与
如果
x
1
=
1
x_1 = 1
x1=1,
x
2
=
1
x_2 = 1
x2=1, 那么
y
=
1
y=1
y=1
如果考虑N个变量的逻辑与,则:
2 逻辑或
如果
x
1
=
1
x_1 = 1
x1=1 或者
x
2
=
1
x_2 = 1
x2=1, 那么
y
=
1
y=1
y=1
如果考虑 N个变量的逻辑或, 则:
3 逻辑异或
如果 x 1 = 1 x_1 = 1 x1=1 和 x 2 = 1 x_2 = 1 x2=1中, 当且仅当一个为真时, y = 1 y=1 y=1
如果考虑N个0-1变量的异或, 那么:
4 if-then 约束
当
x
1
>
=
x
2
x_1 >= x_2
x1>=x2 时 v=1;
当
x
1
<
x
2
x_1 < x_2
x1<x2 时, v=0.
考虑上述两个推理的逆否命题。 第一个为 当 v=0 时,有
x
1
<
x
2
x_1 < x_2
x1<x2, 进一步
x
1
−
x
2
<
0
x_1 - x_2 < 0
x1−x2<0, 在数学规划中,一般使用
<
=
<=
<= 或者
>
=
>=
>=, 引入非常小的正数
ϵ
\epsilon
ϵ,使得
x
1
−
x
2
+
ϵ
<
=
0
x_1 - x_2 + \epsilon<= 0
x1−x2+ϵ<=0, 于是写为线性规划约束为:
x
1
−
x
2
+
ϵ
−
M
v
<
=
0
x_1 - x_2 + \epsilon - Mv<= 0
x1−x2+ϵ−Mv<=0
第二个的逆否命题为 当 v=1时,有
x
1
>
=
x
2
x_1 >= x_2
x1>=x2, 进一步
x
2
−
x
1
<
=
0
x_2 - x_1 <= 0
x2−x1<=0,于是写为线性规划约束为:
x
2
−
x
1
−
M
(
1
−
v
)
<
=
0
x_2 - x_1 - M(1-v)<= 0
x2−x1−M(1−v)<=0
其他的常见的建模方法: