等式约束与不等式约束(KKT)

等式约束本质是将约束问题转为无约束问题,求解无约束函数的极值点参数(由原问题参数和拉格朗日乘子参数组成),抽取原问题的极值点(极大或极小)。

以下为等式约束: 这其实就是求L的极值点的方程组,满足上述条件的点一定是原问题的极值点,证明: 设当前已有的一组拉格朗日乘子,在当前这组乘子下的极值点(参数值)为(x0,y0,z0),若客观上存在另一极值点(x1,y1,z1)满足所有等式约束,并且使得L1更优于L0,那么在已有的这组拉格朗日乘子下,仍有L1的参数偏导数全为0这一事实,但这个极值点必然在既有解中。

通常拉格朗日参数不为0,因为这样相当于约束无效。 求解过程可以通过求解方程组本身解开,但这样的点可能是极小,可能是极大,如上图。

以下为不等式约束: 其拉格朗日函数为: max min L= min max L 求解过程利用拉格朗日对偶性(确定原问题的下界) 将 min max L 转换为 max min L 的方式解开,对应原问题的极小值。这里极值点不一定是 L 的极值,等式约束是 L 的极值。

最优解满足以下条件(即KKT条件),这也是充要条件: min max L 转换为 max min L,求得的值满足KKT,理解上从等式约束出发,考虑从客观事实上,解存在于全部不等式约束内部、全部不等式约束边界、或者部分不等式约束边界,部分不等式约束内部三种情况,对于(3)(6),若在内部,则人为至该不等式拉格朗日乘子为0,不等式约束无效,若在边界上,退化为等式约束,因为原函数(极小化)的梯度和约束函数的梯度是反的,所以(3)必为正。 拉格朗日乘子为0的情况需要枚举比较。 总之,三种情况都有KKT成立。

经验分享 程序员 微信小程序 职场和发展