大规模优化方法(二)

对于0-1规划问题,分支定界法分支切割法分支定价法都是建立在线性松弛的基础上求解——去掉模型中的整数约束。而拉格朗日松弛则是放松模型中的部分线性约束,保留整数约束和其他的线性约束。

1

拉格朗日松弛算法

被拉格朗日松弛的约束并不是完全去掉,而是利用拉格朗日乘子在目标函数上增加相应的惩罚项,对不满足这些约束条件的解进行较大的惩罚。

CDOT广义分配问题为例,展示拉格朗日松弛问题。

传送门:离散优化模型

其模型表达为:

我们记目标函数为f(x),如果采取拉格朗日松弛保留整数约束和最后三个约束,对前六个等式约束进行松弛,则目标函数变为:

可以看到,可选择的拉格朗日松弛的约束条件可以任意的,但我们的目标是求解模型。因此任何一个合理的松弛问题都应该使得问题更易处理(improved tractability),为此,拉格朗日松弛通过利用对偶乘子尽可能松弛线性约束,使得子问题更容易求解。

采用拉格朗日松弛方法放松一些约束条件,虽然得到的仍然是一个整数规划问题,但是应该使得到的松弛问题具备一定的特殊结构,从而让该问题更加容易求解

为了说明这个原理,假设对CDOTv前六个约束乘子分别取值:

代入目标函数,我们得到模型:

新模型的结构体现在每个决策变量只在目标函数出现一次且只出现在一个约束条件中。如果不考虑目标函数常数项180,该问题还能进一步分解成三个子问题进行求解(图中不同颜色的框)。每个子问题都是最常见的0-1背包问题。

接下来我们就要想办法找到合适的拉格朗日乘子,提高拉个朗日松弛算法求解原问题的效率。其遵循原理:

给定一个整数规划问题,拉格朗日分解策略选择最佳松弛问题时的目标是使得该松弛问题的最优目标函数值是原问题的最好的界。因此,在选择最优乘子的过程中,该策略不断求解乘子对应的拉格朗日松弛问题,并根据得到的结果判断是否可能进一步改进乘子的选择。如果可以,则更新乘子,并重新计算对应的松弛问题;否则终止搜索过程。

这里要稍微解释一下最好的界,根据松弛的定义,我们轻松可以推导出,对于最小化问题,拉格朗日松弛问题的最优目标函数值就是原问题目标函数值的一个下界。因此,惩罚项只会改进最小化问题的目标函数值。

为了避免讨论是最大化还是最小化模型以及不同形式的线性约束,我们只考虑模型:

结合对偶理论,我们有结论:

从一个可行解开始,利用一定搜索算法找到下一个最优解,这里利用一类最简单最常用的算法——次梯度搜索算法,核心的是所有可能的梯度方向的凸组合来得到次梯度:

这样,我们得到了拉格朗日松弛算法流程:

用一个例子理解拉格朗日松弛算法——SMALL案例,考虑如下整数规划问题:

对前面两个约束条件进行松弛,得到拉格朗日松弛问题:

其对偶问题是:

选择对偶问题初始解:

进入步骤1,求解下面线性规划问题:

得到最优解(1,2),然后更新参数:

然后返回步骤1,继续迭代,我们记录下一次的结果:

之后继续更新即可!

2

Dantzing-Wolfe分解算法

求解大规模优化模型的Dantzing-Wolfe算法是以线性规划的先驱乔治丹茨格(George Dantzing)和菲利普沃尔夫(Philip Wolfe)命名的。该算法借助拉格朗日松弛方法,将大量的复杂约束与一个或多个具有易处理的特殊结构的线性约束分解开,分解得到类似分块对角结构的子问题,并通过连接约束联系在一起。

它的基本思想是将一个整体问题分解为一个限制主问题和一个或一系列子问题:限制主问题是一个受限制的原问题的近似问题,它通过生成方法不断扩展自身并逐渐提高对原问题的近似程度;子问题负责提供必要的信息,协助主问题逐步提高对原问题的近似程度,并收敛到原问题的最优解。

为了便于理解,我们用案例说明——Glabal Backpack(GB)算例

假设有一家名为Global Backpack的公司,负责生产和分销书包。GB有两个生产基地——海外基地和国内基地,每个基地均有两个生产线。下表给出了该公司生产优化问题的对角分块形式。

决策变量x1和x2分别表示在海外基地两条生产线的书包产量(单位:千),x3和x4分别表示在国内基地两条生产线的书包产量。

首先是子问题,由于生产书包的原材料供应量已经由生产前基于一定的折扣价签订的合同决定,所以位于海外和国内基地的生产线1的产能均受到限制。同时,位于海外基地的生产线2所需要的原材料可以通过较高的价格在开放市场购买,所以生产线2的产能没有限制,但是,国内基地的工会合同规定下,生产线2的产能也受到限制。根据当地政府规定,两处基地的总生产量均有最低数量要求(单位:千)。

对两个基地的两条生产线,GB估计了单位净利润(每单位数量千美元),即期望销售价格减去生产成本。由于海外劳动成本较低,所以海外基地的净利润更高。GB的决策目标是最大化所有基地的总利润(千美元)。GB的产品运输和处理均由一家独立公司完成,连接约束对应该公司提出的运输成本和处理成本的资金约束。只要生产计划满足资金约束,那么GB就不需要付出额外的费用。由于所有产品必须运回至国内市场销售,所以海外基地单位产品的资金约束高于国内基地的资金约束。

Dantzing-Wolfe算法希望聚焦在仅仅由连接约束构成的限制主问题,只有当需要考虑子问题的约束条件时才会对子问题进行求解。为此,将主问题中的每个原始决策变量表示成各个子问题的极点和极方向的加权求和形式:

注意,以上说的极点和极方向都是相对于子问题的可行域而言(凸集)。看理论比较晦涩难懂,我们借助GB案例来理解一下,首先,海外基地子问题的可行域:

然后是国内基地的可行域:

注:简单理解,顶点就是极点,有界集不存在方向,极方向存在当且仅当凸集无界

子问题的任何可行解均可由极点和极方向表示,比如对于子问题1的点(20,22)和子问题2的点(15,3.4):

在实际解决问题时,利用上述方法得到的新模型会存在大量的极点和极方向,计算会非常困难。因此,需要借鉴列生成算法的思想,在子问题中只生成可能改进限制主问题目标函数值的极点和极方向:

这为了生成主问题的列,或者证明这样的列不存在。这样,我们得到算法的具体步骤:

3

Benders算法

Benders分解算法采取与拉格朗日算法相互补充的策略,它首先对于一些比较复杂的列,通过固定部分决策变量得到一个更易求解的问题,然后限制主问题根据子问题返回的决策变量值决定是否达到最优,子问题从固定的决策变量值集合中,选择可以改进限制主问题目标函数值的决策变量,并传递给限制主问题。该算法多用于求解混合整数线性规划问题,固定复杂的整数决策变量,而保留连续的决策变量:

给定一个BP模型,在第l次迭代时,选取部分整数决策变量y固定相应的值,将模型转化为只包含连续变量的问题:

利用原始模型(BP)和主问题(BPl)中各行的对偶变量v可得到对偶子问题:

求解限制主问题只考虑当前迭代时子问题生成的极点和极方向:

根据此我们得到算法具体步骤:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

整得咔咔响

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值