数学模型tricks | 纯Integer变量转化为Binary变量
问题
在数学规划中, 有时候会碰到纯Integer的变量,这种变量就非常头疼,求解起来也很困难。因此最近就在寻找是否有办法能够将这种纯Integer的变量转化为Binary的变量来代替,因为Binary的变量有很多有趣的用处,比如Bilinear term中的线性化。
解决方法
[1] Owen, J., Mehrotra, S.: On the value of binary expansions for general mixed-integer linear programs.Oper. Res. 50, 810–819 (2002)
[2] Zou J, Ahmed S, Sun X A. Stochastic dual dynamic integer programming[J]. Mathematical Programming, 2019, 175(1): 461-502.
Zou等的文章里面介绍了一种方法叫binary expansion(二进制展开),可以利用二进制变量对整数变量进行近似处理。
假设我们有如下Integer变量
0
≤
z
i
≤
U
z
i
∈
Z
+
,
∀
i
∈
I
0 \leq z_i \leq U\\ z_i \in Z^+, \forall i \in I
0≤zi≤Uzi∈Z+,∀i∈I
我们可以引入一个Binary变量
x
j
x_j
xj
x
j
∈
{
0
,
1
}
,
j
=
1
,
2
,
3
,
.
.
k
k
≤
d
(
⌊
l
o
g
2
(
U
/
ϵ
)
⌋
+
1
)
x_j \in \{0,1\}, j= 1,2,3,..k\\ k \leq d( \lfloor log_{2}(U/\epsilon)\rfloor + 1)
xj∈{0,1},j=1,2,3,..kk≤d(⌊log2(U/ϵ)⌋+1)
并且令
z
i
=
∑
j
2
j
x
i
j
,
∀
i
∈
I
z_i = \sum_j2^jx_{ij}, \forall i \in I
zi=j∑2jxij,∀i∈I
本文介绍了如何将数学规划中的纯Integer变量通过二进制展开(binary expansion)转换为Binary变量的方法,以简化求解过程。该方法适用于General Mixed-Integer Linear Programs,并详细解释了变量转换的过程。
1万+

被折叠的 条评论
为什么被折叠?



