混合整数规划(Mixed Integer Programming)

混合整数规划(Mixed Integer Programming)

混合整数规划问题是运筹优化中经常遇到的一类问题。在这类问题中自变量的类型可能是整数也可能不是整数。相比于连续优化,混合整数规划很多时候会更难求解。在学术界混合整数规划一直是一个活跃的研究领域。

Branch and Bound(分支定界法)

分支定界法是求解整数规划和混合整数规划类问题的一种经典算法。其中包含了分支(branch)和定界(bound)两个部分。分支部分作用是将问题分解为子问题,定界部分作用是寻找一个松弛过后的最优解,进而判断能否将某分支进行修剪。

我们以一个简单的背包问题为例:

在这里插入图片描述

我们需要在给定背包容量的约束下最大化背包里装的物品的价值。上面这个问题中有三种物品可以选择。对于物品而言,只有0和1两种选择。但假如我们要放入的是巧克力呢,那么我们就可以将大巧克力分成小巧克力使得背包恰好被装满。在这种情况下,我们需要将单位价值更高的巧克力先放到背包里,这样才能够保证包里装的东西价值最高。当物品是巧克力时,我们相当于将原本的整数变量进行了松弛,以达到最优。

我们也可以在混合整数规划中参照上面的思路,我们可以在定界的时候对原本限制为整数的变量松弛,得到松弛过后的最优解。实际的最优解是没有松弛过后的最优解好的,即松弛过后的最优解是实际的最优解的上界(在背包问题中,目标函数需要最大化)。假如在某一分支松弛过后的最优解仍然没有当前的最优好,代表这一分支可以被舍弃。经过松弛,我们可以更好地进行剪枝,加速分支定界法的算法执行。

Cutting Planes(割平面法)

割平面法也是在混合整数规划中经常会用到的方法,其中怎么割平面有很多种方法,在这里主要介绍Gomory cuts。在割平面法中,线性规划起到了很大的作用
在这里插入图片描述

假设有上述问题,我们首先对整数变量进行松弛。松弛过后原本的整数规划问题可以看作是一个线性规划问题。对于线性规划问题我们可以使用单纯形法这个经典的算法进行多项式时间内的求解(大部分情况)。对原问题进行松弛过后进行线性规划求解得到的解不一定为原问题的解,因为求出来的解可能不是整数。

在这里插入图片描述

这时我们需要对解空间进行切割,切割需要满足两个条件

  • 切割过后的解空间中不包含上一次线性规划求出来的解

  • 切割没有将可行解切割掉

切割过后继续使用线性松弛,重复上面的步骤,最终得出最优解。

初看割平面法可能有些懵,在这里介绍一下Gomory Cut。还是以上面的这个问题为例子。

在这里插入图片描述

我们首先使用单纯形法,求得线性规划的最优解。我们可以求得以下的结果

在这里插入图片描述

从图中我们可以看出,求出来的解x2为分整数,我们需要进行第一次Gomory cut。分别将等式两边的小数部分取出来,我们可得到

1 4 x 3 + 1 4 x 4 ≥ 1 2 \frac{1}{4}x_3+\frac{1}{4}x_4 \geq \frac{1}{2} 41x3+41x421

可能有人会对这个不等式的由来有些疑问,其实是这样的。

在这里插入图片描述
在这里插入图片描述

当我们切了之后相当于原本的优化问题又添加了一个不等式。接着我们需要使用对偶单纯型法进行求解。注意,s1是新引入的松弛变量。

在这里插入图片描述

反复重复上面的过程,最终我们能够求出问题的最优解。

参考资料:

  • coursera discrete optimization
  • 20
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
混合整数规划(Mixed Integer Programming, MIP)是一种数学规划问题,其中自变量既包含整数变量也包含连续变量。混合整数规划问题被认为是数学规划中最难解决的问题之一,通常需要使用近似解或局部最优解的方法来求解。常见的混合整数规划问题包括背包问题、广义指派问题和集合覆盖问题。 由于整数变量的离散性和不可微性,混合整数规划问题的求解难度较大。连续优化问题可以使用微积分的工具建立最优性条件,但整数规划问题由于整数的不连续性和离散性,无法使用微积分工具,也无法满足凸性。因此,需要使用特殊的方法来解决混合整数规划问题。 常用的混合整数规划求解算法包括: 1. 分支定界法(Branch and Bound):将问题分解为子问题,通过限定变量的取值范围,逐步缩小搜索空间,直到找到最优解。 2. 割平面法(Cutting Plane):通过添加一系列线性约束,将可行解空间进一步限制,直到找到最优解。 3. 列生成法(Column Generation):通过逐步生成新的决策变量列,不断改进模型,直至找到最优解。 4. 拉格朗日松弛法(Lagrangian Relaxation):通过将整数约束松弛为连续约束,将问题分解为一个主问题和多个子问题,通过迭代求解主问题和子问题来获得最优解。 5. 蒙特卡罗法(Monte Carlo):通过随机采样和统计方法,通过模拟得到一组解,并通过评估函数来选择最优解。 6. 隐枚举法(Implicit Enumeration):对于0-1整数规划问题,通过枚举所有可能的解来找到最优解,但随着问题规模增大,这种方法的计算复杂度会急剧增加。 这些算法可以根据问题的特性和具体要求选择使用。混合整数规划问题的求解是一个复杂而重要的研究领域,不同的算法和技术会在不同的问题上产生不同的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值