解决约束优化问题——拉格朗日乘数法
拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程。
拉格朗日乘数法的基本思想
作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。
如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。
解决的问题模型为约束优化问题:
min/max a function f(x,y,z), where x,y,z are not independent and g(x,y,z)=0.
即:min/max f(x,y,z)
s.t. g(x,y,z)=0
数学实例
首先,我们先以麻省理工学院数学课程的一个实例来作为介绍拉格朗日乘数法的引子。
【麻省理工学院数学课程实例】求双曲线xy=3上离远点最近的点。
解:
首先,我们根据问题的描述来提炼出问题对应的数学模型,即:
min f(x,y)=x2+y2(两点之间的欧氏距离应该还要进行开方,但是这并不影响最终的结果,所以进行了简化,去掉了平方)
s.t. xy=3.
根据上式我们可以知道这是一个典型的约束优化问题,其实我们在解这个问题时最简单的解法就是通过约束条件将其中的一个变量用另外一个变量进行替换,然后代入优化的函数就可以求出极值。我们在这里为了引出拉格朗日乘数法,所以我们采用拉格朗日乘数法的思想进行求解。
我们将x2+y2=c的曲线族画出来,如下图所示,当曲线族中的圆与xy=3曲线进行相切时,切点到原点的距离最短。也就是说,当f(x,y)=c的等高线和双曲线g(x,y)相切时,我们可以得到上述优化问题的一个极值(注意:如果不进一步计算,在这里我们并不知道是极大值还是极小值)。
现在原问题可以转化为求当f(x,y)和g(x,y)相切时,x,y的值是多少?
如果两个曲线相切,那么它们的切线相同,即法向量是相互平行的,▽f//▽g.
由▽f//▽g可以得到,▽f=λ*▽g。
这时,我们将原有的约束优化问题转化为了一种对偶的无约束的优化问题,如下所示:
原问题:min f(x,y)=x2+y2 对偶问题:由▽f=λ*▽g得,
s.t. xy=3 fx=λ*gx,
fy=λ*gy,
xy=3.
约束优化问题 无约束方程组问题
通过求解右边的方程组我们可以获取原问题的解,即
2x&#