在求解最優(yōu)化問題中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)條件是兩種最常用的方法。在有等式約束時使用拉格朗日乘子法移稳,在有不等約束時使用KKT條件巨双。
我們這里提到的最優(yōu)化問題通常是指對于給定的某一函數(shù),求其在指定作用域上的全局最小值(因?yàn)樽钚≈蹬c最大值可以很容易轉(zhuǎn)化迅涮,即最大值問題可以轉(zhuǎn)化成最小值問題)添怔。提到KKT條件一般會附帶的提一下拉格朗日乘子湾戳。對學(xué)過高等數(shù)學(xué)的人來說比較拉格朗日乘子應(yīng)該會有些印象贤旷。二者均是求解最優(yōu)化問題的方法广料,不同之處在于應(yīng)用的情形不同。
一般情況下幼驶,最優(yōu)化問題會碰到一下三種情況:
(1)無約束條件
這是最簡單的情況艾杏,解決方法通常是函數(shù)對變量求導(dǎo),令求導(dǎo)函數(shù)等于0的點(diǎn)可能是極值點(diǎn)盅藻。將結(jié)果帶回原函數(shù)進(jìn)行驗(yàn)證即可购桑。
(2)等式約束條件
設(shè)目標(biāo)函數(shù)為f(x),約束條件為h_k(x)氏淑,形如:
s.t. 表示subject to 勃蜘,“受限于”的意思,l表示有l(wèi)個約束條件假残。
則解決方法是消元法或者拉格朗日法缭贡。消元法比較簡單不在贅述,這里主要講拉格朗日法辉懒,因?yàn)楹竺嫣岬降腒KT條件是對拉格朗日乘子法的一種泛化阳惹。
拉格朗日乘數(shù)法的基本思想
作為一種優(yōu)化算法,拉格朗日乘子法主要用于解決約束優(yōu)化問題眶俩,它的基本思想就是通過引入拉格朗日乘子來將含有n個變量和k個約束條件的約束優(yōu)化問題轉(zhuǎn)化為含有(n+k)個變量的無約束優(yōu)化問題莹汤。拉格朗日乘子背后的數(shù)學(xué)意義是其為約束方程梯度線性組合中每個向量的系數(shù)。
如何將一個含有n個變量和k個約束條件的約束優(yōu)化問題轉(zhuǎn)化為含有(n+k)個變量的無約束優(yōu)化問題颠印?拉格朗日乘數(shù)法從數(shù)學(xué)意義入手纲岭,通過引入拉格朗日乘子建立極值條件抹竹,對n個變量分別求偏導(dǎo)對應(yīng)了n個方程,然后加上k個約束條件(對應(yīng)k個拉格朗日乘子)一起構(gòu)成包含了(n+k)變量的(n+k)個方程的方程組問題荒勇,這樣就能根據(jù)求方程組的方法對其進(jìn)行求解柒莉。
首先定義拉格朗日函數(shù)F(x):
然后解變量的偏導(dǎo)方程:
(3)不等式約束條件
我們上述討論的問題均為等式約束優(yōu)化問題,但等式約束并不足以描述人們面臨的問題沽翔,不等式約束比等式約束更為常見兢孝,大部分實(shí)際問題的約束都是不超過多少時間,不超過多少人力仅偎,不超過多少成本等等跨蟹。所以有幾個科學(xué)家拓展了拉格朗日乘數(shù)法,增加了KKT條件之后便可以用拉格朗日乘數(shù)法來求解不等式約束的優(yōu)化問題了橘沥。
設(shè)目標(biāo)函數(shù)f(x)窗轩,不等式約束為g(x),有的教程還會添加上等式約束條件h(x)座咆。此時的約束優(yōu)化問題描述如下:
則我們定義不等式約束下的拉格朗日函數(shù)L痢艺,則L表達(dá)式為:
其中f(x)是原目標(biāo)函數(shù),hj(x)是第j個等式約束條件介陶,λj是對應(yīng)的約束系數(shù)堤舒,gk是不等式約束,uk是對應(yīng)的約束系數(shù)哺呜。
常用的方法是KKT條件舌缤,同樣地,把所有的不等式約束某残、等式約束和目標(biāo)函數(shù)全部寫為一個式子L(a, b, x)= f(x) + ag(x)+bh(x)国撵,
首先,我們先介紹一下什么是KKT條件玻墅。
KKT條件是指在滿足一些有規(guī)則的條件下, 一個非線性規(guī)劃(Nonlinear Programming)問題能有最優(yōu)化解法的一個必要和充分條件. 這是一個廣義化拉格朗日乘數(shù)的成果. 一般地, 一個最優(yōu)化數(shù)學(xué)模型的列標(biāo)準(zhǔn)形式參考開頭的式子, 所謂 Karush-Kuhn-Tucker 最優(yōu)化條件介牙,就是指上式的最優(yōu)點(diǎn)x?必須滿足下面的條件:
1). 約束條件滿足gi(x?)≤0,i=1,2,…,p, 以及,hj(x?)=0,j=1,2,…,q
2). ?f(x?)+∑i=1μi?gi(x?)+∑j=1λj?hj(x?)=0, 其中?為梯度算子;
3). λj≠0且不等式約束條件滿足μi≥0,μigi(x?)=0,i=1,2,…,p。