M為足夠大的正數(shù), 起"懲罰"作用, 稱之為罰因子, F(x, M )稱為罰函數(shù).
創(chuàng)新互聯(lián)公司主營沾化網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),沾化h5微信小程序開發(fā)搭建,沾化網(wǎng)站營銷推廣歡迎沾化等地區(qū)企業(yè)咨詢
如果目標(biāo)函數(shù)或約束條件中包含非線性函數(shù),就稱這種規(guī)劃問題為非線性規(guī)劃問 題。一般說來,解非線性規(guī)劃要比解線性規(guī)劃問題困難得多。而且,也不象線性規(guī)劃有單純形法這一通用方法,非線性規(guī)劃目前還沒有適于各種問題的一般算法,各個方法都有自己特定的適用范圍。
如果線性規(guī)劃的優(yōu)解存在,其優(yōu)解只能在其可行域的邊界上達到(特別是可行 域的頂點上達到);而非線性規(guī)劃的優(yōu)解(如果優(yōu)解存在)則可能在其可行域的任意一點達到。
Matlab 中非線性規(guī)劃的數(shù)學(xué)模型寫成以下形式
其中 是非線性函數(shù)
Matlab 中的命令是
X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
NONLCON 是用 M 文件定義的非線性向量函數(shù)
給出例子如下
求解程序:
當(dāng)用迭代法求函數(shù)的極小點時,常常用到一維搜索,即沿某一已知方向求目標(biāo)函數(shù)的極小點。一維搜索的方法很多,常用的有:
下面有兩個通過不斷地縮短區(qū)間[a,b]的長度,來搜索得到近似優(yōu)解的兩個方法。
迭代法大體上分為兩點:一是用到函數(shù)的一階導(dǎo)數(shù)或二階導(dǎo)數(shù), 稱為解析法。另一是僅用到函數(shù)值,稱為直接法。
帶有約束條件的極值問題稱為約束極值問題,也叫規(guī)劃問題。 求解約束極值問題要比求解無約束極值問題困難得多。為了簡化其優(yōu)化工作,可采用以下方法:將約束問題化為無約束問題;將非線性規(guī)劃問題化為線性規(guī)劃問題,以及能將復(fù)雜問題變換為較簡單問題的其它方法。 庫恩—塔克條件是非線性規(guī)劃領(lǐng)域中重要的理論成果之一,是確定某點為優(yōu)點的必要條件,但一般說它并不是充分條件(對于凸規(guī)劃,它既是優(yōu)點存在的必要條件, 同時也是充分條件)。
若某非線性規(guī)劃的目標(biāo)函數(shù)為自變量 x的二次函數(shù),約束條件又全是線性的,就稱 這種規(guī)劃為二次規(guī)劃。
【例】求解如下的例子
【注意】要提出
利用罰函數(shù)法,可將非線性規(guī)劃問題的求解, 轉(zhuǎn)化為求解一系列無約束極值問題 , 因而也稱這種方法為序列無約束小化技術(shù)
罰函數(shù)法求解非線性規(guī)劃問題的思想是,利用問題中的約束函數(shù)作出適當(dāng)?shù)牧P函數(shù),由此構(gòu)造出帶參數(shù)的增廣目標(biāo)函數(shù),把問題轉(zhuǎn)化為無約束非線性規(guī)劃問題。主要有 兩種形式,一種叫 外罰函數(shù)法 ,另一種叫 內(nèi)罰函數(shù)法 ,下面介紹外罰函數(shù)法。
取一個充分大的數(shù)M0,構(gòu)造函數(shù)如下:
直觀上可以理解為若 則給這個目標(biāo)函數(shù)一個很大的懲罰,而如果 則對該目標(biāo)函數(shù)無影響.
或者寫成:
【例】
或者寫成矩陣形式:
其中的 min([x';zeros(1,2)]) 表示 都大于0
再在命令行中輸入
可以看出兩次的效果略有偏差。但是我們不滿足于此,由于問題的規(guī)模較小,嘗試使用 fmincon 求得精確得最優(yōu)解
可以看出罰函數(shù)法雖然收斂速度快,但是精確度不是很高。當(dāng)問題規(guī)模較大,不好求解時,可以考慮使用。
其中約束條件為:
當(dāng)使用梯度求解上述問題時,效率更高并且結(jié)果更準(zhǔn)確。 題目中目標(biāo)函數(shù)的梯度為(對 分別求偏導(dǎo)數(shù)):
在命令行中輸入optimtool可以打開圖形界面
對于上一個問題,只要選擇方法(solver)后,在相應(yīng)位置輸入@fun10,@fun11,點擊start就可以
一、作用不同:
懲罰函數(shù)法在M越來越大的情況下,函數(shù)F趨近于病態(tài),乘子法克服這個缺點根據(jù)拉格朗日分解加了一個uih(x)M變?yōu)榱薱/2。
主要思想是引入一個新的參數(shù)λ(即拉格朗日乘子),將約束條件函數(shù)與原函數(shù)聯(lián)系到一起,使能配成與變量數(shù)量相等的等式方程。
二、定義不同:
基本的拉格朗日乘子法(又稱為拉格朗日乘數(shù)法),就是求函數(shù)f(x1,x2,)在g(x1,x2,)=0的約束條件下的極值的方法。
罰函數(shù)法是從非可行解出發(fā)逐漸移動到可行區(qū)域的方法。罰函數(shù)法在理論上是可行的,在實際計算中的缺點是罰因子M的取值難于把握,太小起不到懲罰作用;太大則由于誤差的影響會導(dǎo)致錯誤。
三、使用方法不同:
在進化計算中,研究者選擇外部罰函數(shù)法的原因主要是該方法不需要提供初始可行解。需要提供初始可行解則是內(nèi)部罰函數(shù)法的主要缺點。由于進化算法應(yīng)用到實際問題中可能存在搜索可行解就是NP難問題,因此這個缺點是非常致命的。
基本的拉格朗日乘子法就bai是求函數(shù)f(x1,x2,...)在約束條件g(x1,x2,...)=0下的極值的方法。其主要思想是將約束條件函數(shù)與原函數(shù)聯(lián)立,從而求出使原函數(shù)取得極值的各個變量的解。
擴展資料:
如果這個實際問題的最大或最小值存在,一般說來駐點只有一個,于是最值可求。
條件極值問題也可以化為無條件極值求解,但有些條件關(guān)系比較復(fù)雜,代換和運算很繁,而相對來說“拉格朗日乘數(shù)法”不需代換,運算簡單一點,這就是優(yōu)勢。
條件φ(x,y,z)一定是個等式,不妨設(shè)為φ(x,y,z)=m
則再建一個函數(shù)g(x,y,z)=φ(x,y,z)-m
g(x,y,z)=0以g(x,y,z)代替φ(x,y,z)
在許多極值問題中,函數(shù)的自變量往往要受到一些條件的限制,比如,要設(shè)計一個容積為 V的長方體形開口水箱,確定長、寬和高,使水箱的表面積最小.。設(shè)水箱的長、寬、高分別為 x,y,z, 則水箱容積V=xyz。
參考資料來源:百度百科-拉格朗日乘數(shù)法