【运筹学】整数规划建模技巧

在整数规划建模中,经常会使用到0-1变量来辅助建模,将模型表述为IP模型或BIP模型,下面是一些常见的整数规划建模技巧

使用辅助0-1变量实现“非此即彼”约束

如下图所示,有两条约束,希望只有其中一条起到约束的作用,该怎么处理呢

【运筹学】整数规划建模技巧_第1张图片
处理方式如下图,M是一个较大的数,当约束的右边加上M时,无论 x 1 x_1 x1 x 2 x_2 x2在取在取值范围之内的任意值,式子都是成立的,即该约束无效,没有起到限制变量取值的作用。那么只需要让其中一个约束失效即可,通过在两个约束的右边分别添加 M y 1 My_1 My1 M y 2 My_2 My2,并让 y 1 + y 2 = 1 y_1+y_2=1 y1+y2=1来实现

【运筹学】整数规划建模技巧_第2张图片

保留N个约束中的K个

要保留N个约束中的K个,原理和上面也是相同的,即在每个约束的右边添加 M y n My_n Myn,然后让 ∑ i = 1 N y i = N − K \sum_{i=1}^{N}{y_i}=N-K i=1Nyi=NK即可,这样有 N − K N-K NK个约束的右边被添加上了M,这些约束失效,能发挥作用的约束只有K个
【运筹学】整数规划建模技巧_第3张图片

函数有N个可能的值

函数有N个可能的值,只需要给每个值乘以一个0-1变量,并通过 ∑ i = 1 N y i = 1 \sum_{i=1}^{N}{y_i}=1 i=1Nyi=1让这些值只有一个生效即可
【运筹学】整数规划建模技巧_第4张图片

固定收费问题

常见的固定收费问题如:当购买了一个设备之后,首先需要支出设备购买的费用,后续还需要支出设备每个周期的回收费用。通过使用 x j ≤ M y j x_j\le My_j xjMyj,当 x j > 0 x_j>0 xj>0 时, y j = 1 y_j=1 yj=1必须成立,限制函数必须加上一个固定费用 k j k_j kj
【运筹学】整数规划建模技巧_第5张图片

二进制表示法代替整数变量

当一个模型存在大量0-1变量和少量整数变量时,无法直接使用高效的BIP算法,这时候可以使用二进制表示法将原有的整数变量分解成多个0-1变量。当一个整数 x x x的范围为[0,u]时,可以参考下图的方式将其分解为N个0-1变量
在这里插入图片描述
具体的案例如下图所示【运筹学】整数规划建模技巧_第6张图片

分段函数建模

当一个函数是一个分段分数时,即处于不同区域的 x x x,其对应的函数表达式 f ( x ) f(x) f(x)是不同的,在处理这种问题的时候,建模的方式如下:
设一个 n 段线性函数 f ( x ) 的分点为 b 1 ≤ ⋯ ≤ b n ≤ b n + 1 ,可以引入 w k 和 z k 将 x 和 f ( x ) 分别表示为   x = ∑ k = 1 n + 1 w k b k f ( x k ) = ∑ k = 1 n + 1 w k f ( b k ) 其中 w k 和 z k 满足下面的关系: w 1 ≤ z 1 ,   w 2 ≤ z 1 + z 2 ,   ⋯   ,   w n ≤ z n − 1 + z n ,   w n + 1 ≤ z n z 1 + z 2 + ⋯ + z n = 1 ,   z k = 0 或 1 w 1 + w 2 + ⋯ + w n + 1 = 1 ,   w k ≥ 0   ( k = 1 , 2 , ⋯   , n + 1 ) \text{设一个}n\text{段线性函数}f\left( x \right) \text{的分点为}b_1\le \cdots \le b_n\le b_{n+1}\text{,可以} \text{引入}w_k\text{和}z_k\text{将}x\text{和}f\left( x \right) \text{分别表示为\\\\\\\\\\\\\\\\\\\\\\\\\ } \\ x=\sum_{k=1}^{n+1}{w_kb_k} \\ f\left( x_k \right) =\sum_{k=1}^{n+1}{w_kf\left( b_k \right)} \\ \text{其中}w_k\text{和}z_k\text{满足下面的关系:} \\ w_1\le z_1,\ w_2\le z_1+z_2,\ \cdots ,\ w_n\le z_{n-1}+z_n,\ w_{n+1}\le z_n \\ z_1+z_2+\cdots +z_n=1,\ z_k=0\text{或}1 \\ w_1+w_2+\cdots +w_{n+1}=1,\ w_k\ge 0\ \left( k=1,2,\cdots ,n+1 \right) \\ 设一个n段线性函数f(x)的分点为b1bnbn+1,可以引入wkzkxf(x)分别表示为 x=k=1n+1wkbkf(xk)=k=1n+1wkf(bk)其中wkzk满足下面的关系:w1z1, w2z1+z2, , wnzn1+zn, wn+1znz1+z2++zn=1, zk=01w1+w2++wn+1=1, wk0 (k=1,2,,n+1)
如果无法理解上面的模型处理方式的话,可以仔细理解下面的图片
【运筹学】整数规划建模技巧_第7张图片

【运筹学】整数规划建模技巧_第8张图片

你可能感兴趣的:(运筹学,运筹学,整数规划)