拉格朗日乘子法

 

之前两篇blog介绍了等式约束最优化,不等式约束最优化的最优性条件。

http://blog.csdn.net/ice110956/article/details/17557795

http://blog.csdn.net/ice110956/article/details/17562429

了解最优性条件后,我们通过最优性条件的性质可以来求解,或者验证最优解。通常会构造一个拉格朗日乘子,求导构造得到最优性条件的形式来求解。

 

回顾下最优化问题的三个基本形式:

 

无约束问题

可以通过微积分的知识直接求解。

 

等式约束问题


我们可以构造拉格朗日乘子后直接求解,也就是拉格朗日乘子法。如下:

我们可以定义如下的n+l元函数:


称为lagrange函数。也就是把目标函数与约束函数写在一起求解,并用向量的形式来表示。

上式分别对x与lamda求导为零求解后,即为可能极值点。(证明可见开头两篇blog)

不过上述的点可能是鞍点,也可能是极值点,具体判断要用二阶充分条件。

*补充,解析法求导,可以求得拉格朗日函数可能极值点。但是,经证明,拉格朗日函数没有最小值,也就是通过序列迭代法不能得到解。这时候就要用到乘子+罚函数的方法。

 

不等式约束问题


上一篇blog我们得到不等式约束的最优性条件是KKT条件,如下:


上式的第一个式子,我们也可以写成这样的式子:


然后求导,也就是拉格朗日乘子。(证明可见开头两篇blog)

上式虽然我们得出了KKT条件,但是还是解不了的,因为第二个式子理解为lambda=0或者ci(x)=0;也就是单独使用最优性条件无法直接解出不等式约束的最优解。我们只能通过KKT条件来验证某个解是否是最优解。

 不过,前一篇blog中(http://blog.csdn.net/ice110956/article/details/17631765 )提到的外罚函数和内罚函数,把不等式约束问题转化为等式约束问题。然后,我们再通过拉格朗日乘子法来求解等式问题。也就是说,通过罚函数+乘子法,我们可迭代求解不等式约束问题。

小结

通过构造拉格朗日乘子,我们可以解等式约束问题,验证但不可求解不等式约束问题。

拉格朗日乘子法是一种优化算法,应用于具有约束条件的优化问题。它的原理是基于拉格朗日乘子的概念,在求解有约束问题的时候,将约束条件转化为目标函数的一部分,通过求解该新的目标函数,得到问题的最优解。 在使用拉格朗日乘子法时,首先根据问题的约束条件构造拉格朗日函数。拉格朗日函数是由目标函数和约束条件组成的,目标函数会被调整为加入拉格朗日乘子与约束条件的乘积,同时每个约束条件都会有一个对应的拉格朗日乘子。然后,通过求取拉格朗日函数的偏导数,将其等于0,可以得到一组方程,包括目标函数的梯度和约束条件的梯度。将这些方程联立求解,就可以得到问题的最优解。 对于拉格朗日函数的求解,可以采用数值方法,例如使用fmincon算法。fmincon是一种非线性约束最小化算法,可以求解具有非线性约束的优化问题。它的实现基于拉格朗日乘子法,通过迭代的方式逼近最优解。在每一次迭代中,通过求解一组子问题,不断调整拉格朗日乘子的值,直到找到最优解为止。 总之,拉格朗日乘子法是一种基于拉格朗日函数的优化算法,通过将约束条件转化为目标函数的一部分,再利用数值方法求解最优解。而fmincon算法则是一种具体的数值方法实现,可以应用于求解具有非线性约束的优化问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值