数学模型tricks | 纯Integer变量转化为Binary变量

本文介绍了如何将数学规划中的纯Integer变量通过二进制展开(binary expansion)转换为Binary变量的方法,以简化求解过程。该方法适用于General Mixed-Integer Linear Programs,并详细解释了变量转换的过程。

数学模型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 0ziUziZ+,iI

我们可以引入一个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,..kkd(⌊log2(U/ϵ)⌋+1)

并且令
z i = ∑ j 2 j x i j , ∀ i ∈ I z_i = \sum_j2^jx_{ij}, \forall i \in I zi=j2jxij,iI

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值