拉格朗日松弛求解问题
Posted CodeSavior
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拉格朗日松弛求解问题相关的知识,希望对你有一定的参考价值。
1、概述
直观上拉格朗日松弛方法就是将约束中难解的部分变为目标函数中的一部分,扩大搜索的范围。
拉格朗日松弛方法不仅能够求解非线性规划问题还能求解整数规划问题。
整数规划问题求解方法
- benders decomposition
- dantzg-wolfe decompostion
- lagrangian decompostion
拉格朗日松弛之后得到的问题下界优与等于直接将0,1整数变量松弛为0到1连续变量的下界
拉格朗日松弛之后我们会得到拉格朗日乘子,拉格朗日乘子反映了对偶的信息。
拉格朗日送至可以将约束中耦合的变量分解,转换成独立的子问题,简化原来的问题。
对于拉格朗日松弛后的问题我们需要做两方面内容
第一是求解子问题,第二是拉尔朗日乘子的更新
子问题一般不是NP难的,一般是规模比较小的可以直接求解的,否则证明子问题分解的还不够彻底。一般子问题可以通过求解器直接求解,或者采用动态规划,线性规划等手段求解。
拉格朗日乘子的更新本质上是求解对偶问题,对偶问题是一个非光滑的凸优化问题,可以利用次梯度算法来更新拉格朗日乘子
拉格朗日对偶有一下几个良好的性质
- 无论元问题是否为凸,对偶问题都是凸优化问题
- 对偶问题至少给出了原问题最优解的下界
- 在满足一定条件下,对偶问题和原问题的解完全等价
- 对偶问题通常容易求解
拉格朗日对偶的目标就是将带有约束的优化问题转化为不带约束或者约束简单的凸优化问题
2、拉格朗日函数、拉格朗日对偶函数以及拉格朗日对偶问题
2.1、原问题
对于原问题
其中约束是凸集,但是目标函数不一定是凸函数
2.2、拉格朗日函数
拉格朗日函数:是将约束变为目标函数中的一部分,是一个关于的函数
x是原问题的自变量,,v是拉格朗日乘子是标量。
介绍完拉格朗日函数,它和原问题有什么关系呢??
2.3、拉格朗日函数与原问题
直接抛出结论:最大最小拉格朗日函数和原问题是等价的
我们分开来求,首先是
接下来我们要求,它的解和原问题的解相同。
如前文描述的那样,由于目标函数不一定是凸函数,所以优化问题是难解的,所以自然想到,摆脱自变量x,将问题转化为好解的凸问题,拉格朗日对偶函数由此诞生。
2.4、拉格朗日对偶函数
我们称上面的式子是拉格朗日对偶函数,是对变量求函数L的最小值的问题,
而拉格朗日对偶函数是凹问题,极大化一个凹问题是凸问题,所以我们构造了如下问题
我们定义如上问题为,拉格朗日对偶问题
假设拉格朗日对偶问题的局部最优解为d*,原问题f(x)的最优解为p*
可以证明
参考的文章
拉格朗日对偶详解_左痕生的博客-CSDN博客_拉格朗日对偶
拉格朗日对偶性详解(手推笔记)_见见大魔王的博客-CSDN博客_拉格朗日对偶性
以上是关于拉格朗日松弛求解问题的主要内容,如果未能解决你的问题,请参考以下文章
优化组合基于matlab多种群混沌蚁群算法求解机组组合优化问题含Matlab源码 2017期