LP問題進(jìn)階 Part 1 | 單純形法

這一部分對(duì)應(yīng)書上第四章(P16-P26),其難度比前三章大得多琼娘。個(gè)人建議先粗讀了解這個(gè)方法的思路嗦枢,再精讀把握具體技巧攀芯。建議學(xué)習(xí)時(shí)間為2個(gè)小時(shí)。單純形法是求解線性規(guī)劃問題的通用方法文虏,百度百科中有十分詳細(xì)的說(shuō)明侣诺,可以對(duì)照地閱讀學(xué)習(xí)。

為方便查閱氧秘,再link一下教材年鸳。


基本概念

假設(shè)我們討論的LP問題有n_0個(gè)變量與m個(gè)限制條件。

  • 單純形(Simplex) 和代數(shù)拓?fù)渲械膯涡问且粋€(gè)單詞丸相,但是不清楚二者有沒有關(guān)系搔确。這里指的就是可行域在n_0維空間中對(duì)應(yīng)的那個(gè)圖形,這里為求一般性提到了n維空間灭忠,但在學(xué)習(xí)的時(shí)候不妨假設(shè)n_0 = 2膳算,反正書上是這樣默認(rèn)的。此時(shí)單純形對(duì)應(yīng)的就是二維平面中的一個(gè)多邊形弛作。單純形方法不是幾何的(類比之前的作圖法)涕蜂,但是借助幾何可以更好地理解這一解法。

  • LP問題的正則形式(Canonical form)是原LP問題的一種變形映琳,滿足:

    • 所有的限制條件都寫為等號(hào)形式机隙;
    • 所有的變量都是非負(fù)的。
    • 最大值問題
      其將原限制條件(可能是大于等于或小于等于)寫為等式的方法是引入一個(gè)大于零的松弛變量(slack variable)萨西。概念不難有鹿,詳見P16最底下那塊兒。值得注意的是一個(gè)限制條件至多只會(huì)引入一個(gè)松弛變量原杂。
      下圖是將LP化為正則形式的一個(gè)例子。
      將LP問題化為正則形式
  • 基本解(Basic solution) 對(duì)于有n個(gè)變量(包括松弛變量您机,與n_0區(qū)別)與m個(gè)限制條件的正則形式的LP問題穿肄,基本解的定義為至少有n-m個(gè)變量為0的可行解

    • 基本解是一個(gè)重要的概念年局,不妨先不加理解地記住其定義。
    • 基本解對(duì)應(yīng)的是可行域的頂點(diǎn)咸产。(注意矢否,可行解即可行域中的點(diǎn))。
    • 每一個(gè)可行域的頂點(diǎn)都是基本解 這一點(diǎn)非常重要脑溢,但是書上只提到而沒有詳細(xì)說(shuō)明僵朗。下面給出一種證明。

    Proof:
    觀察:可行域的每一個(gè)頂點(diǎn)一定是n_0個(gè)n_0 - 1維平面的交(考慮線性方程組有唯一解的條件屑彻,對(duì)線性代數(shù)不是很熟悉的朋友可以先默認(rèn)這一點(diǎn)验庙。)。注意社牲,反之不然粪薛。
    考慮任意n_0個(gè)限制條件,不妨就考慮前n個(gè)搏恤。 不妨假設(shè)原LP問題的限制條件都為\leq-條件违寿。
    好像沒我想象的那么簡(jiǎn)單,先不寫了熟空。

    • 基本解中被設(shè)置為0的變量被稱為非基本變量(non-basic variable)藤巢,未被設(shè)置為0的則稱為基本變量(basic variable)。這兩個(gè)概念之后也要用到息罗,注意不要記反了掂咒。
    • 所有的基本變量合在一起成為基(basis)
  • 字典(Dictionary)是一種表示阱当、記錄變量的方式俏扩,簡(jiǎn)單點(diǎn)說(shuō)就是用非基本變量表示基本變量和目標(biāo)函數(shù)。如圖所示:

    箭頭右邊就是一種字典表示

    • 字典表示與基本變量的選取有關(guān)弊添。

基本概念部分大概就是這些录淡。第一次看不用要求自己完全理解,不妨先繼續(xù)往下學(xué)習(xí)再慢慢理解這些概念油坝。


思路簡(jiǎn)介

單純形方法的示意圖如下:

單純形方法示意圖

簡(jiǎn)單地說(shuō)就是先找到一個(gè)可行解(假如存在的話)嫉戚,之后再不斷地優(yōu)化這個(gè)解。
具體地澈圈,為了對(duì)可行解進(jìn)行優(yōu)化彬檀,書上提到了一種操作。由于書上沒有為這個(gè)操作命名瞬女,為方便起見窍帝,在此我們管這種操作叫“優(yōu)化操作”。優(yōu)化操作是單純形方法的核心步驟诽偷,單純形法說(shuō)白了就是對(duì)一個(gè)基本解實(shí)施若干次優(yōu)化操作后得到最優(yōu)解的過(guò)程坤学。下面我們來(lái)討論什么是優(yōu)化操作疯坤。

優(yōu)化操作

我們先從一下四點(diǎn)直觀的認(rèn)識(shí)入手。

  • 首先深浮,優(yōu)化操作將一個(gè)可行解變?yōu)榱硗庖粋€(gè)可行解压怠。
  • 由于之前提到過(guò)可行域的頂點(diǎn)一定對(duì)應(yīng)一個(gè)基本解,因此優(yōu)化操作一定將基本解變換為基本解飞苇。
  • 回憶基本解的定義菌瘫,自然地可以想到優(yōu)化操作調(diào)整變量的取值,將非基本變量變?yōu)榛咀兞坎伎ǎ瑢⒒咀兞孔優(yōu)榉腔咀兞俊?/strong>
  • 更加自然地可以想到:優(yōu)化操作使得目標(biāo)函數(shù)的取值增加雨让。注意,一個(gè)解對(duì)應(yīng)著目標(biāo)函數(shù)的一個(gè)取值羽利。

由于書上根本就沒有優(yōu)化操作的概念宫患,所以在此我自己給出其定義:

定義 優(yōu)化操作
優(yōu)化操作給某一個(gè)非基本變量一非負(fù)增量,使得目標(biāo)函數(shù)增加且使一個(gè)基本變量變?yōu)?这弧。除此之外娃闲,不存在比該增量更小的增量使得該非基本變量加上此增量后存在一個(gè)基本變量為0。

我們稱增加的這個(gè)非基本變量為輸入變量匾浪,變?yōu)?的這個(gè)基本變量為輸出變量皇帮。因?yàn)檩斎胱兞咳〈溯敵鲎兞砍蔀樾碌幕#ɑ亩x可以在前面找到蛋辈。)
通俗一點(diǎn)地說(shuō)就是選擇一個(gè)非基本變量属拾,讓其不斷增加,要求:

  • 目標(biāo)函數(shù)增加冷溶。注意渐白,非基本變量增加時(shí)目標(biāo)函數(shù)不一定增加。
  • 當(dāng)某一個(gè)基本變量變?yōu)?時(shí)停止逞频。此即定義的第二句話纯衍。
    注意,由于如果一個(gè)變量的增加導(dǎo)致目標(biāo)函數(shù)的增加以及另一個(gè)變量的減少苗胀,那么假如減少的變量可以無(wú)限制地減襟诸,則目標(biāo)函數(shù)就會(huì)無(wú)限制地增。好在由定義可知每個(gè)變量都必須是非負(fù)的基协,所以這種情況不會(huì)發(fā)生歌亲。

回到主題。之前提到單純形法即對(duì)一個(gè)基本解實(shí)施若干次優(yōu)化操作后得到最優(yōu)解的過(guò)程澜驮。我們先不考慮最優(yōu)解的存在性陷揪,且斷言:任意非基本變量增加不使得目標(biāo)函數(shù)增加等價(jià)于目標(biāo)函數(shù)取得最大值。這是因?yàn)橛捎诜?hào)的限制,非基本變量只能增加悍缠,而所有的變量都可以被非基本變量表示揩慕。因此非基本變量的增加包含了所有變量的各種變化。

當(dāng)無(wú)法再進(jìn)行優(yōu)化操作時(shí)有兩種可能扮休。一種是任意非基本變量的增加不使得目標(biāo)函數(shù)增加。此時(shí)目標(biāo)函數(shù)取最大值拴鸵。另外一種情況是任意非基本變量的增加不使得某一基本變量變?yōu)?玷坠。注意,LP問題的標(biāo)準(zhǔn)形式中對(duì)于變量的所有限制最終都會(huì)歸結(jié)于符號(hào)限制劲藐,因此若基本變量不會(huì)變?yōu)?八堡,則非基本變量可以無(wú)限地增加。此時(shí)LP問題無(wú)界聘芜。

還有一點(diǎn)需要注意的是優(yōu)化操作一定會(huì)在有限步后結(jié)束兄渺,之后會(huì)講到這一點(diǎn)。

經(jīng)過(guò)上述討論我們對(duì)單純形算法的核心步驟應(yīng)該有一個(gè)大致的了解了汰现。

單純形算法:實(shí)施步驟

下面是一個(gè)小小的總結(jié)

1. 準(zhǔn)備工作

  • 將LP問題化為正則形式挂谍。
  • 找到一個(gè)基本解,建立初始字典瞎饲。(具體方法書上P23有講口叙。)

2. 優(yōu)化操作

  • 如果目標(biāo)函數(shù)中所有變量的系數(shù)都是負(fù)的,那么目標(biāo)函數(shù)已經(jīng)取最大值嗅战。此時(shí)將非基本變量設(shè)為0妄田,借此解出基本變量與目標(biāo)函數(shù)的值。返回這組值驮捍。
  • 如果目標(biāo)函數(shù)中存在正系數(shù)變量疟呐,取之為輸入變量。如果無(wú)法進(jìn)行優(yōu)化操作东且,則LP問題無(wú)界启具。如果可以進(jìn)行優(yōu)化操作,那就進(jìn)行一下優(yōu)化操作苇倡。
  • 建立對(duì)應(yīng)的新字典富纸,重復(fù)之前步驟。

單純形算法到此結(jié)束

習(xí)題(P20)

  1. 要挑選哪個(gè)變量作為輸入變量旨椒,哪個(gè)作為輸出變量晓褪?
    滿足定義就行。
  2. 優(yōu)化操作是否會(huì)在有限步后結(jié)束综慎?
    是涣仿。因?yàn)閮?yōu)化操作本質(zhì)上是對(duì)可行域頂點(diǎn)的枚舉,而頂點(diǎn)只有有限個(gè),且不重復(fù)取到好港。不重復(fù)的原因是每一個(gè)頂點(diǎn)唯一地對(duì)應(yīng)著目標(biāo)函數(shù)的一個(gè)值愉镰,而優(yōu)化算法使得目標(biāo)函數(shù)增加。
  3. 如何將其他LP問題形式轉(zhuǎn)化為標(biāo)準(zhǔn)形式钧汹?
    這在第二章中講過(guò)丈探。
  4. 如何找到初始字典?
    見書上第23頁(yè)拔莱。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碗降,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塘秦,更是在濱河造成了極大的恐慌讼渊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尊剔,死亡現(xiàn)場(chǎng)離奇詭異爪幻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)须误,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門挨稿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人京痢,你說(shuō)我怎么就攤上這事叶组。” “怎么了历造?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵甩十,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我吭产,道長(zhǎng)侣监,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任臣淤,我火速辦了婚禮橄霉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘邑蒋。我一直安慰自己姓蜂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布医吊。 她就那樣靜靜地躺著钱慢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卿堂。 梳的紋絲不亂的頭發(fā)上束莫,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天懒棉,我揣著相機(jī)與錄音,去河邊找鬼览绿。 笑死策严,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饿敲。 我是一名探鬼主播妻导,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怀各!你這毒婦竟也來(lái)了栗竖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤渠啤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后添吗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沥曹,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年碟联,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓美。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鲤孵,死狀恐怖壶栋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情普监,我是刑警寧澤贵试,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凯正,受9級(jí)特大地震影響毙玻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜廊散,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一桑滩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧允睹,春花似錦运准、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至米者,卻和暖如春听哭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工陆盘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留普筹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓隘马,卻偏偏與公主長(zhǎng)得像太防,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酸员,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載請(qǐng)注明出處 http://www.reibang.com/p/dd0761a2fdfd作者:@貳拾貳畫生 單純...
    貳拾貳畫生閱讀 50,774評(píng)論 10 38
  • ?一般來(lái)說(shuō)凸優(yōu)化(Convex Optimization, CO)中最一般的是錐規(guī)劃 (Cone Programm...
    史春奇閱讀 5,074評(píng)論 1 6
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • “寂寞的女人穿絲襪蜒车,寂寞的男人打DOTA ♂`拢” 這句話已經(jīng)過(guò)時(shí)了酿愧,現(xiàn)在是寂寞的女人做主播,寂寞的男人看直播邀泉。 近年...
    紅唇科技閱讀 215評(píng)論 0 1
  • 當(dāng)花兒凋落嬉挡,當(dāng)太陽(yáng)升起,有些人汇恤,在你的生命中庞钢,就是有著非凡的意義。 最好的閨蜜就是她家里有我的牙刷因谎,我知道她所有的...
    吐槽星人233閱讀 381評(píng)論 0 2