运筹优化 拉格朗日松弛和对偶理论

简介

        由于大规模混合整数规划问题/整数规划问题往往是NP-hard的,所以我们直接对这些问题求解,每当遇到这些复杂问题的时候,一个基本思想就是对复杂的优化问题进行分解(decomposition),关于整数规划问题的分解主流包括三种方法

        1 BD (主要思路是行生成+割平面)

        2 DW分解 (主要思想就是列生成)

        3 Lagrangian decomposition (主要思想就是LR)

        前两种方法不是今天的主角,下面主要介绍LR

LR求解整数规划问题基本思想

        1 把约束放到目标上去,达到化繁为简的目的

        2 尽量松弛掉linked / coupling constraints 让不可分问题变得可分

拉格朗日松弛与对偶问题

        如上图所示,整数规划问题P1中含有一类重要但是复杂的约束

        第一种做法是直接将复杂约束丢掉,这样虽然好求解,但是求解质量太差,难以获得有用信息。

        第二种方法就是将约束添加到目标函数中,同时添加一个惩罚项(拉格朗日乘子)来表示违反约束的代价(拉格朗日松弛问题),如下图所示

        P2是P1的一个松弛问题,因此P2问题的最优解是P1的一个上界(max问题)。

        为了获得更多的信息,我们想知道最小的上界在哪,也就引入了拉格朗日对偶问题(希望找到一个最好的u使得P2最小)

拉格朗日迭代算法与收敛性分析

        前面讲到了希望求解拉格朗日对偶问题(找到最好的u)来找到最小的上界,关于这部分的求解主要包括两部分,1是松弛后子问题的求解;2是拉格朗日乘子的更新(对偶问题求解)

        1. 拉格朗日松弛问题求解(此时乘子是固定的)

        松弛后的子问题求解,一般要根据子问题的具体性质来确定求解方式。在整数规划问题中采用拉格朗日松弛后的子问题一般最好不要是NP-hard的或者一般问题规模很小可以进行暴力求解,否则子问题的求解还需要进一步特殊处理。所以一般我们求解子问题可以直接让求解器(Gurobi\Cplex等)直接求解即可,也可以根据具体情况采用动态规划,线性规划等手段帮助求解。

        2. 拉格朗日对偶问题求解(也可以说是乘子更新)

        拉格朗日乘子更新本质上是要求对偶问题。由于对偶问题是一个非光滑凸优化问题,我们这里采用次梯度算法来更新拉格朗日乘子。

        乘子得更新主要包括两个部分,1是步长;2是次梯度方向

        关于次梯度的选取,一般直接由松弛约束得到   gk = d - DX(对应为约束的松弛变量)

        关于步长的选取,一般是由 ø * (UB - P1的目标值) / 次梯度2范数给出

       

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值