標(biāo)簽(空格分隔): 算法學(xué)習(xí)
線性規(guī)劃是日常常用的算法之一,通過線性規(guī)劃的對偶單純性,可以解決最大流,最短路徑等常見的規(guī)劃問題。但是在TSP問題中,所要求得的解釋選擇或者不選擇當(dāng)前的邊,輸出結(jié)果也就是只有0,1兩種結(jié)果,此種問題也被稱為0,1規(guī)劃。或者當(dāng)我們計(jì)算給每條邊分配怎樣的權(quán)重的時(shí)候,最大最小化代價(jià)函數(shù)問題,也被稱為整數(shù)規(guī)劃的問題。
(1)求整數(shù)規(guī)劃的松弛問題最優(yōu)解。 (2)若松弛問題的最優(yōu)解滿足整數(shù)要求,得到整數(shù)規(guī)劃的最優(yōu)解,否則轉(zhuǎn)下一步。 (3)任意選一個(gè)非整數(shù)解的變量,在松弛問題中加上約束及+1組成兩個(gè)新的松弛問題,稱為分支。新的松弛問題具有如下特征:當(dāng)原問題是求最大值時(shí),目標(biāo)值是分支問題的上界;當(dāng)原問題足求最小值時(shí),目標(biāo)值是分支問題的下界。 (4)檢查所有分支的解及目標(biāo)函數(shù)值,若某分支的解是整數(shù)并且目標(biāo)函數(shù)值大于(max)等于其他分支的目標(biāo)值,則將其他分支剪去不再計(jì)算,若還存在非整數(shù)解并且目標(biāo)值大于(max)整數(shù)解的目標(biāo)值,需要繼續(xù)分支,再檢查,直到得到最優(yōu)解 算法的流程圖與說明見下圖所示
程序說明,此程序時(shí)用來接min整數(shù)規(guī)劃,要求解最大值的時(shí)候,需要設(shè)置下界為全局變量。 程序中的線性規(guī)劃的實(shí)現(xiàn)是基于在線開源庫lp_solver
以上過程的實(shí)現(xiàn)可以總結(jié)為0,1規(guī)劃問題。0,1規(guī)劃可以用在線開源庫GLPK進(jìn)行實(shí)現(xiàn)
新聞熱點(diǎn)
疑難解答