運(yùn)籌學(xué)基礎(chǔ) 課件 宋志華 第3、4章 線性規(guī)劃、網(wǎng)絡(luò)最優(yōu)化_第1頁(yè)
運(yùn)籌學(xué)基礎(chǔ) 課件 宋志華 第3、4章 線性規(guī)劃、網(wǎng)絡(luò)最優(yōu)化_第2頁(yè)
運(yùn)籌學(xué)基礎(chǔ) 課件 宋志華 第3、4章 線性規(guī)劃、網(wǎng)絡(luò)最優(yōu)化_第3頁(yè)
運(yùn)籌學(xué)基礎(chǔ) 課件 宋志華 第3、4章 線性規(guī)劃、網(wǎng)絡(luò)最優(yōu)化_第4頁(yè)
運(yùn)籌學(xué)基礎(chǔ) 課件 宋志華 第3、4章 線性規(guī)劃、網(wǎng)絡(luò)最優(yōu)化_第5頁(yè)
已閱讀5頁(yè),還剩292頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章線性規(guī)劃3.1約束目標(biāo)標(biāo)準(zhǔn)型3.2從無(wú)窮到有限之基解3.3

單純形法3.4對(duì)偶問題3.5運(yùn)輸問題3.6典型案例

3.1約束目標(biāo)標(biāo)準(zhǔn)型

3.1.1線性規(guī)劃的一般形式

定義3-1線性規(guī)劃(LinearProgramming,LP)是一種凸規(guī)劃問題,它的目標(biāo)函數(shù)為最大化(或者最小化)決策變量的線性多項(xiàng)式,約束條件為決策變量的線性不等式(或者等式),其一般形式為

若記

則其一般形式可以表示為

3.1.2線性規(guī)劃的標(biāo)準(zhǔn)形式

定義3-2線性規(guī)劃的標(biāo)準(zhǔn)形式為

則標(biāo)準(zhǔn)形式可以記為

定理3-1線性規(guī)劃的一般形式可以轉(zhuǎn)換為等價(jià)的標(biāo)準(zhǔn)形式。

對(duì)于目標(biāo)函數(shù),可以通過(guò)將系數(shù)向量取負(fù),將最大化和最小化目標(biāo)函數(shù)進(jìn)行互化。對(duì)于約束條件來(lái)講,不等式可以通過(guò)增加輔助決策變量的方法進(jìn)行轉(zhuǎn)換,遵循以下轉(zhuǎn)換規(guī)則:

(1)對(duì)于小于不等式,在左側(cè)加上一個(gè)輔助決策變量。

(2)對(duì)于大于不等式,在左側(cè)減去一個(gè)輔助決策變量。

例3-1對(duì)于如下線性規(guī)劃模型的一般形式,將其轉(zhuǎn)換為標(biāo)準(zhǔn)形式。

先通過(guò)將系數(shù)向量取負(fù),將目標(biāo)函數(shù)轉(zhuǎn)換為最小化,然后增加一個(gè)輔助決策變量將約束條件不等式轉(zhuǎn)換為等式,得到如下標(biāo)準(zhǔn)形式

3.1.3-整數(shù)線性規(guī)劃

定義3-3-如果線性規(guī)劃的所有決策變量都必須是整數(shù),那么這個(gè)問題稱為整數(shù)規(guī)劃問題。

例3-2有三種物品A、B、C,單位物品的重量分別為1、2、3,單位物品的價(jià)值分別為15、33、50,背包的最大載重為4,請(qǐng)問可裝入背包的物品的最大價(jià)值是多少?

設(shè)裝入背包的三種物品的數(shù)量分別為x1,x2,x3,則可以建立一般形式的線性規(guī)劃模型

其中目標(biāo)函數(shù)代表最大化裝入背包中物品的價(jià)值,第一個(gè)約束條件代表裝入背包中的物品總重量不能超過(guò)背包的最大載重4,第二個(gè)約束條件代表裝入背包中物品的數(shù)量不能為負(fù),第三個(gè)約束條件代表裝入背包中物品的數(shù)量為整數(shù)

定義3-4如果線性規(guī)劃的所有決策變量只能取0或者1,則稱之為0-1整數(shù)規(guī)劃。

3.2從無(wú)窮到有限之基解

3.2.1可行解

定義3-5可行解是滿足約束條件的解。所有可行解的集合稱作可行域。

首先,線性規(guī)劃標(biāo)準(zhǔn)形式約束條件的主體是一個(gè)線性方程組,另外加一個(gè)非負(fù)條件。

若先不考慮非負(fù)條件,這個(gè)線性方程組可變?yōu)?/p>

與線性規(guī)劃問題的可行域有如圖3-1所示對(duì)應(yīng)關(guān)系。

圖3-1線性規(guī)劃可行域與線性方程組解集之間的對(duì)應(yīng)關(guān)系

定理3-2線性規(guī)劃標(biāo)準(zhǔn)形式的可行域等于其約束條件組成的線性方程組的非負(fù)解集。

根據(jù)線性方程組解的理論,線性方程組的解有以下幾種情況:

(1)無(wú)解,R(A)<R(A,b)。

(2)唯一最優(yōu)解,R(A)=R

(A,b)=n。

3)無(wú)窮多最優(yōu)解,R(A)=R(A,b)<n。其中,A=[aij

];b=[bi

];i=1,…,m;j=1,…,n;R(·)代表矩陣的秩。

因此,根據(jù)定理3-2,可以有以下結(jié)論:

(1)若線性規(guī)劃標(biāo)準(zhǔn)形式約束條件構(gòu)成的線性方程組無(wú)解,則線性規(guī)劃問題無(wú)解。

(2)若此線性方程組有唯一非負(fù)解,則這個(gè)解是線性規(guī)劃問題可行解也是最優(yōu)解;若此線性方程組有唯一解,但是負(fù)數(shù),則線性規(guī)劃問題無(wú)解。

(3)若此線性方程組有無(wú)窮多非負(fù)解,則線性規(guī)劃問題有可能有無(wú)窮多可行解,這種情況是線性規(guī)劃研究的重點(diǎn)。

3.2.2基解

在這種情況下,根據(jù)生成測(cè)試范例的樸素優(yōu)化思想,我們可以往可解的方向碰碰運(yùn)氣。如果令任意n-m個(gè)變量取特定值(如取0),把它們看作常量,移動(dòng)到等式的右邊,得

這樣方程組就可解了。

定義3-6如果將n-m個(gè)變量取值為0,對(duì)線性規(guī)劃標(biāo)準(zhǔn)形式約束條件構(gòu)成的線性方程組求解,若能得到唯一解,則稱此解為線性規(guī)劃問題的基解,如果基解滿足非負(fù)條件,則稱為基可行解,取值為0的n-m個(gè)決策變量稱為非基變量,等式左邊的m個(gè)決策變量稱為基變量,基變量對(duì)應(yīng)的系數(shù)矩陣的列稱為基向量,基向量組成的矩陣稱為線性規(guī)劃問題的基。

例如,對(duì)于線性方程組(3-1),若有唯一解,則其所對(duì)應(yīng)的線性規(guī)劃問題的基為

其中,Pi為基向量,與基向量Pi相應(yīng)的變量xi為基變量,否則稱為非基變量。

3.2.3-基解三定理

定理3-3-若線性規(guī)劃問題存在可行域,則一定是凸集。

定理3-4若線性規(guī)劃問題的可行域有界,則一定可在此凸集的頂點(diǎn)上達(dá)到最優(yōu)。

定理3-5線性規(guī)劃的可行域的頂點(diǎn)與基可行解一一對(duì)應(yīng)

(2)若X不是基可行解,則X一定不是可行域的頂點(diǎn)。

3.2.4基解的枚舉

這樣,由于最優(yōu)解一定是基解,基解的數(shù)量是有限的,因此可以使用枚舉法求解線性規(guī)劃標(biāo)準(zhǔn)形式,步驟為:

步驟1:在n個(gè)決策變量中,選擇m個(gè)決策變量作為基變量,其他變量取0,求線性規(guī)劃標(biāo)準(zhǔn)形式隱含的線性規(guī)劃方程組,若得到唯一解,則此唯一解就是基解,若非負(fù),則是基可行解。

步驟2:循環(huán)執(zhí)行步驟1直到找出所有的基可行解,對(duì)比其目標(biāo)函數(shù),使目標(biāo)函數(shù)達(dá)到最優(yōu)的即為最優(yōu)解。

例3-4對(duì)如下的線性規(guī)劃一般形式的模型:

(1)將其可行域在二維坐標(biāo)系中表示出來(lái)。

(2)將一般形式轉(zhuǎn)換為標(biāo)準(zhǔn)形式,并計(jì)算其所有的基解。

(3)對(duì)比基解與可行域在二維坐標(biāo)系中的頂點(diǎn)的關(guān)系。

因?yàn)槊總€(gè)約束條件不等式都代表二維平面上的一個(gè)半平面,因此,這些半平面的交集構(gòu)成線性規(guī)劃問題的可行域,利用軟件QMforWindows畫出來(lái)的可行域如圖3-2所示。圖3-2圖解法實(shí)例

將其轉(zhuǎn)換為標(biāo)準(zhǔn)形式為

利用基解的求解方法可得,基解、基可行解及其對(duì)應(yīng)的目標(biāo)函數(shù)值如表3-1所示。

3.2.5基解的啟發(fā)尋優(yōu)

采用啟發(fā)式算法尋找最優(yōu)解的基本流程如圖3-3所示。圖3-3-基解的啟發(fā)尋優(yōu)過(guò)程框架

3.3-單純形法

3.3.1起點(diǎn)單純形法可以選擇任意基可行解作為搜索的起點(diǎn)。為了方便,可以直接在系數(shù)矩陣中找出或者通過(guò)初等變換得到一個(gè)單位子矩陣,其所對(duì)應(yīng)的變量作為初始可行基變量。

3.3.2鄰域中的改進(jìn)解

1.換入基的確定

根據(jù)約束條件,非基變量可以使用基變量來(lái)表示。因此,在約束條件中,將非基變量移動(dòng)到等式右邊,求得基變量的表達(dá)形式為

換入基操作:利用非基變量表示目標(biāo)函數(shù),非基變量xj的系數(shù)σj作為檢驗(yàn)數(shù),即

檢驗(yàn)數(shù)σj為正的非基變量進(jìn)基.

2.換出基的確定

換出基操作:確定了換入基變量之后,利用

確定換出基變量xl。

3.3.3-終止

當(dāng)所有的檢驗(yàn)數(shù)σj均小于等于0的時(shí)候,非基變量無(wú)法進(jìn)基,目標(biāo)函數(shù)無(wú)法得到進(jìn)一步的改進(jìn),算法終止。

3.3.4算例

例3-5對(duì)于如下的線性規(guī)劃標(biāo)準(zhǔn)形式:

系數(shù)矩陣為

步驟2:通過(guò)換入基和換出基操作,得到一個(gè)改進(jìn)的基可行解。所有與基x3,x4相鄰的基如表3-3所示。

將以上計(jì)算過(guò)程的數(shù)據(jù)整理到單純形表中,如表3-4所示。

將換入基變量x2和換出基變量x4進(jìn)行調(diào)換,得到表3-5。

步驟3:通過(guò)換入基和換出基操作,得到下一個(gè)改進(jìn)的基可行解。所有與基x3,x2相鄰的基如表3-6所示。

根據(jù)約束條件中基變量與非基變量之間的關(guān)系,使用非基變量表示目標(biāo)函數(shù)得

從換基的效果來(lái)講,選擇x1進(jìn)基可以使目標(biāo)函數(shù)值增加,x4進(jìn)基可以使目標(biāo)函數(shù)值降低。因此選擇x1進(jìn)基,當(dāng)前待換入基變量為x1。

將換入基變量x1和換出基變量x3進(jìn)行調(diào)換,得到表3-8。

步驟4:通過(guò)換入基和換出基操作,得到下一個(gè)改進(jìn)的基可行解。所有與基x1,x2相鄰的基如表3-9所示。

根據(jù)約束條件中基變量與非基變量之間的關(guān)系,使用非基變量表示目標(biāo)函數(shù)得

從換基的效果來(lái)講,選擇x3或者x4進(jìn)基均使目標(biāo)函數(shù)值降低,因此算法停止。

對(duì)表3-9進(jìn)行初等變換,令基變量對(duì)應(yīng)的系數(shù)列向量為單位向量,并重新計(jì)算檢驗(yàn)數(shù)

從而得到表3-10。

此時(shí)的基可行解為最優(yōu)解:

3.4對(duì)偶問題

3.4.1機(jī)會(huì)成本與影子價(jià)格定義3-7機(jī)會(huì)成本是當(dāng)投資者、個(gè)人或企業(yè)決策時(shí)選擇某種方案而不是另一種方案時(shí),錯(cuò)過(guò)或放棄的收益。

例3-6假設(shè)你的公司使用A和B兩種原料生產(chǎn)C、D兩種油漆,表3-11提供了基本數(shù)據(jù)。

請(qǐng)問怎么確定最好的C、D油漆產(chǎn)品混合,使你的日總利潤(rùn)最大?

假設(shè)生產(chǎn)C、D油漆的數(shù)量分別為x1和x2,則上述問題可以建立以下線性規(guī)劃模型

利用單純形法可以很容易求得問題的最優(yōu)解為x1=3,x2=1.5,z=21。

但是僅就獲取利潤(rùn)來(lái)講,如果另外一個(gè)經(jīng)理時(shí)刻關(guān)注著原材料的市場(chǎng)價(jià)格y1和y2,當(dāng)市場(chǎng)價(jià)格達(dá)到某個(gè)水平時(shí),他可以選擇不生產(chǎn),而直接賣掉原材料,卻可以獲得更大的利潤(rùn),這個(gè)多獲得的利潤(rùn)就是用原材料進(jìn)行生產(chǎn)而不是直接賣掉的機(jī)會(huì)成本。例如,原材料1和原材料2的價(jià)格滿足以下約束:

則自己生產(chǎn)的利潤(rùn)是要小于直接把原材料賣掉所獲得的利潤(rùn)的,辛辛苦苦生產(chǎn)的還不如將原材料直接賣掉的企業(yè)掙得多,如圖3-4所示。

圖3-4影子價(jià)格

影子價(jià)格使用如下模型求得

而這個(gè)模型,由于和原線性規(guī)劃模型有著十分漂亮和規(guī)整的關(guān)系,稱為原線性規(guī)劃問題的對(duì)偶問題。

3.4.2對(duì)偶問題的模型

一般地,對(duì)于如下線性規(guī)劃模型

其對(duì)偶問題模型為

更為一般地,任意形式的線性規(guī)劃都可以通過(guò)以下變換規(guī)則得到其對(duì)應(yīng)的對(duì)偶問題。

(1)原問題的約束條件和對(duì)偶問題的決策變量一一對(duì)應(yīng),原問題約束條件的右端常數(shù)作為對(duì)偶問題的目標(biāo)函數(shù)系數(shù);

(2)原問題的決策變量和對(duì)偶問題的約束條件一一對(duì)應(yīng),原問題的目標(biāo)函數(shù)系數(shù)作為對(duì)偶問題約束條件的右端常數(shù)項(xiàng),原問題的系數(shù)矩陣轉(zhuǎn)置后等于對(duì)偶問題的系數(shù)矩陣;

(3)原問題為最大化(最小化),則對(duì)偶問題為最小化(最大化);

(4)約束與變量之間對(duì)應(yīng)的不等式方向的變換規(guī)則如表3-12所示。

3.5運(yùn)輸問題

3.5.1真假運(yùn)輸問題1.真運(yùn)輸問題本章所述的運(yùn)輸問題,是最簡(jiǎn)單的運(yùn)輸問題,運(yùn)輸?shù)呢浳锸菃我粺o(wú)差別的,不同的產(chǎn)地產(chǎn)量不同,不同的銷地需求量不同,不同產(chǎn)地和銷地之間的運(yùn)輸費(fèi)用也不同,在這樣的情況下,確定不同產(chǎn)地到不同銷地之間的供應(yīng)量,使運(yùn)輸費(fèi)用最小。

例3-7三個(gè)煉油廠的日煉油能力分別為600萬(wàn)升、500萬(wàn)升和800萬(wàn)升,所供應(yīng)三個(gè)分銷區(qū)域的日需求量分別為400萬(wàn)升、800萬(wàn)升和700萬(wàn)升。汽油通過(guò)輸油管線被運(yùn)送到分銷區(qū)域。管線每公里運(yùn)送1萬(wàn)升的運(yùn)費(fèi)為100元。表3-13給出了煉油廠到分銷區(qū)域的里程表。其中煉油廠1與分銷區(qū)域3-不相連。

例3-8為確保飛行安全,飛機(jī)發(fā)動(dòng)機(jī)需定時(shí)更換進(jìn)行大修?,F(xiàn)有三個(gè)航修廠和四個(gè)機(jī)場(chǎng)。三個(gè)航修廠A1、A2、A3-的月修復(fù)量分別為7臺(tái)、4臺(tái)、9臺(tái);四個(gè)機(jī)場(chǎng)B1、B2、B3、B4的月需求量為3臺(tái)、6臺(tái)、5臺(tái)、6臺(tái)。各航修廠到各機(jī)場(chǎng)的單位運(yùn)價(jià)(萬(wàn)元)如表3-14所示。問應(yīng)如何調(diào)運(yùn)發(fā)動(dòng)機(jī)完成運(yùn)輸任務(wù)而使運(yùn)費(fèi)最省。

2.假運(yùn)輸問題

有一些問題雖然表面上看著不是運(yùn)輸問題,但是可以建立運(yùn)輸問題的類比模型,因此,我們稱之為假運(yùn)輸問題。

例3-9一種小型發(fā)動(dòng)機(jī)未來(lái)五個(gè)月的需求量分別為200臺(tái)、150臺(tái)、300臺(tái)、250臺(tái)、480臺(tái)。生產(chǎn)商對(duì)這五個(gè)月的生產(chǎn)能力估計(jì)為180臺(tái)、230臺(tái)、430臺(tái)、300臺(tái)、300臺(tái)。不允許延期交貨,但在必要的情況下生產(chǎn)商可安排加班滿足當(dāng)前需求。每個(gè)月的加班生產(chǎn)能力是正常生產(chǎn)能力的一半。五個(gè)月的單位生產(chǎn)費(fèi)用分別為100元、96元、116元、102元、106元。加班生產(chǎn)的費(fèi)用比正常生產(chǎn)的費(fèi)用高50%。如果當(dāng)月生產(chǎn)的發(fā)動(dòng)機(jī)在以后月使用,則每臺(tái)發(fā)動(dòng)機(jī)每個(gè)月的額外儲(chǔ)存費(fèi)用為4萬(wàn)元。為問題建立一個(gè)運(yùn)輸模型并確定每個(gè)月正常生產(chǎn)和加班生產(chǎn)發(fā)動(dòng)機(jī)的數(shù)量。

3.5.2運(yùn)輸問題模型

1.線性規(guī)劃模型

設(shè)xij和cij為產(chǎn)地i到銷地j的物品運(yùn)輸量和單位運(yùn)價(jià),si為產(chǎn)地i的產(chǎn)量,dj為銷地j的需求量,則運(yùn)輸問題的線性規(guī)劃模型如下:

其系數(shù)矩陣具有如下形式:

2.表模型

運(yùn)輸表模型,就是在運(yùn)輸費(fèi)用表的基礎(chǔ)上,拓展而成的一個(gè)表,其基本框架如表3-15所示。

因此,例3-7就可以建立如表3-16所示的運(yùn)輸表模型.

例3-8的運(yùn)輸表模型如表3-17所示。

對(duì)于例3-9來(lái)講,要建立運(yùn)輸表模型,就要確定產(chǎn)地、銷地、單位運(yùn)價(jià)以及供應(yīng)量和需求量等表中的基本要素。產(chǎn)地和銷地分別有五個(gè),代表五個(gè)月份,i月到j(luò)月的單位運(yùn)價(jià)就是i月生產(chǎn)一個(gè)發(fā)動(dòng)機(jī)j月用的總的費(fèi)用,這個(gè)總的費(fèi)用要包含正常生產(chǎn)費(fèi)用、加班費(fèi)用、儲(chǔ)存費(fèi)用等因素。其中,空白區(qū)域?qū)?yīng)的產(chǎn)地和銷地?zé)o法到達(dá),所建立的運(yùn)輸表模型如表3-18所示。

3.圖模型

所謂圖模型,就是將產(chǎn)地和銷地用圖上的點(diǎn)來(lái)表示,點(diǎn)上有數(shù)字代表供應(yīng)量或者需求量,使產(chǎn)地和銷地之間的邊來(lái)表示運(yùn)輸關(guān)系,邊上的權(quán)重表示單位運(yùn)價(jià)。

例3-7的運(yùn)輸圖模型如圖3-5所示,其中從s點(diǎn)到煉油廠的邊上的容量為煉油廠的產(chǎn)量,單位運(yùn)價(jià)為0;從分銷區(qū)域到t的邊上的容量為分銷區(qū)域的需求量,單位運(yùn)價(jià)為0;從煉油廠到分銷區(qū)域的其他邊上的容量沒有限制,單位運(yùn)價(jià)為兩者之間的單位運(yùn)價(jià)。

圖3-5例3-7的運(yùn)輸問題圖模型

例3-8的運(yùn)輸圖模型如圖3-6所示。其中從s點(diǎn)到航修廠的邊上的容量為月修復(fù)量,單位運(yùn)價(jià)為0;從機(jī)場(chǎng)到t的邊上的容量為機(jī)場(chǎng)的需求量,單位運(yùn)價(jià)為0;從航修廠到機(jī)場(chǎng)的其他邊上的容量沒有限制,單位運(yùn)價(jià)為兩者之間的單位運(yùn)價(jià)。

圖3-6例3-8的運(yùn)輸問題圖模型

例3-9的運(yùn)輸圖模型如圖3-7所示。其中從s點(diǎn)到煉油廠的邊上的容量為煉油廠的產(chǎn)量,單位運(yùn)價(jià)為0;從分銷區(qū)域到t的邊上的容量為分銷區(qū)域的需求量,單位運(yùn)價(jià)為0;從煉油廠到分銷區(qū)域的其他邊上的容量沒有限制,單位運(yùn)價(jià)為兩者之間的單位運(yùn)價(jià)。

圖3-7例3-9的運(yùn)輸問題圖模型

3.5.3-運(yùn)輸問題算法

1.貪婪啟發(fā)式算法

1)最小元素法

最小元素法中的元素,指的就是運(yùn)價(jià),也就是為產(chǎn)地和銷地之間的貨物制訂匹配運(yùn)輸關(guān)系時(shí),優(yōu)先選擇可運(yùn)輸?shù)娜肿钚∵\(yùn)價(jià)。最小元素法屬于貪婪啟發(fā)式算法,不能保證得到最優(yōu)解,但是可以得到一般意義下的較優(yōu)解。

例如,表3-16的表模型中,運(yùn)用最小元素法的計(jì)算運(yùn)輸方案過(guò)程如下:

(1)在運(yùn)價(jià)表中選擇最小元素,并最大化地滿足其對(duì)應(yīng)的產(chǎn)銷地的剩余產(chǎn)銷量,從而得到表3-19。

(2)在運(yùn)價(jià)表中選擇供需均大于0的最小元素,并最大化地滿足其對(duì)應(yīng)的產(chǎn)銷地的剩余產(chǎn)銷量,從而得到表3-20。

(3)在運(yùn)價(jià)表中選擇供需均大于0的最小元素,并最大化地滿足其對(duì)應(yīng)的產(chǎn)銷地的剩余產(chǎn)銷量,從而得到表3-21。

(4)再一步迭代計(jì)算得到表3-22。

(5)繼續(xù)迭代計(jì)算得到表3-23。

(6)所有的供應(yīng)量和均為0,算法結(jié)束,得到最后結(jié)果如表3-24所示,其中括號(hào)中的數(shù)量為對(duì)應(yīng)產(chǎn)地和銷地之間的運(yùn)量方案。

2)伏格爾法

最小元素法是貪婪算法,特點(diǎn)是只顧眼前。伏格爾法的考慮往前更進(jìn)了一步,如果一個(gè)物品不能按照最小的費(fèi)用運(yùn)輸,而是按照次小的費(fèi)用運(yùn)輸,這就有一個(gè)差額,不妨令gsi代表產(chǎn)地i的差額,gjd代表銷地j的差額。將這個(gè)差額作為一種啟發(fā)信息,對(duì)于差額大的產(chǎn)地或者銷地,優(yōu)先安排最小元素,這樣有可能會(huì)降低貪婪的成本。

步驟4:若產(chǎn)銷地均無(wú)余量可形成運(yùn)輸指派,也即

則算法結(jié)束,否則轉(zhuǎn)步驟2。

2.最優(yōu)性條件

定理3-6對(duì)于貪婪啟發(fā)式算法得到的除最后一個(gè)0+之外的m+n-1個(gè)變量為基變量(包括取值為正以及0+的所有變量),這樣給出的解是運(yùn)輸問題的基解。

證明:首先,算法每使一個(gè)產(chǎn)地的產(chǎn)量或者銷地的需求歸0,就會(huì)增加一個(gè)變量,因此,使所有的產(chǎn)量及銷量歸0,總共增加的變量的個(gè)數(shù)為m+n,而算法最后一步加上的變量的值為0+,除去這個(gè)變量之外的m+n-1個(gè)變量構(gòu)成基變量。

在使用貪婪啟發(fā)式算法確定第一個(gè)變量xi1j1,它對(duì)應(yīng)的系數(shù)列向量為

其中,ei1是第i1個(gè)元素為1的單位列向量。

例3-10檢驗(yàn)例3-7的結(jié)果(見表3-25)是不是最優(yōu)解。

因?yàn)榛兞康臋z驗(yàn)數(shù)為0,所以有

可見,非基變量的檢驗(yàn)數(shù)有非負(fù)的,即

3.5.4從不平衡到平衡

例3-11在例3-7的基礎(chǔ)上,假設(shè)煉油廠3的日生產(chǎn)能力增大為1000萬(wàn)升,那么必然有銷地得不到完全滿足,在這種情況下,建立相應(yīng)的運(yùn)輸模型,使三個(gè)煉油廠的煉油最大化地運(yùn)輸,并且總的運(yùn)費(fèi)最小。

可以建立一個(gè)虛擬的銷地,其銷量為200萬(wàn)升,并設(shè)煉油廠到此虛擬銷地的運(yùn)價(jià)取較大的數(shù),例如1000000,可建立運(yùn)輸問題的表模型如表3-27所示。

3.6典型案例

3.6.1投資方案的規(guī)劃1.問題描述良好的投資規(guī)劃,對(duì)國(guó)民生產(chǎn)產(chǎn)生直接推動(dòng)作用,對(duì)國(guó)民收入有著正相關(guān)的積極影響。在投資方案的規(guī)劃過(guò)程中既要考慮實(shí)現(xiàn)投資方案的可行性,又要考慮投資方案的盈利率。這里考慮一個(gè)經(jīng)過(guò)抽象和定義過(guò)的案例。

2.問題分析

單從收益率來(lái)講,計(jì)劃B具有明顯的優(yōu)勢(shì),因此,根據(jù)啟發(fā)式規(guī)則,我們要將盡量多的錢投入B計(jì)劃中。投資周期為三年,B計(jì)劃以兩年為周期,因此在三年的周期中,計(jì)劃B只能投資一次,若第一年全部投到B計(jì)劃中,則在第二年末收回本金和收益共計(jì)300萬(wàn)元之后,還剩下一年,只能投資于A計(jì)劃,到第三年末總共收益321萬(wàn)元。

為了讓B計(jì)劃能有更多的資金,獲取更高的收益,我們可以讓100萬(wàn)元第一年先投資于A計(jì)劃,第二年得到總計(jì)107萬(wàn)元之后,再將其全部投入B計(jì)劃中,這樣第三年末得到的總收入是321萬(wàn)元。

3.建立模型

設(shè)決策變量如表3-28所示。

表3-28決策變量及其含義

整理得如下線性規(guī)劃模型:

4.求解

應(yīng)用Matlab的線性規(guī)劃求解函數(shù)linprog,求解的代碼及得到的最優(yōu)解如下所示:

5.單純形表求解

利用單純形法進(jìn)行計(jì)算,首先要將線性規(guī)劃轉(zhuǎn)化成標(biāo)準(zhǔn)形式如下:

(1)列出初始單純形表如表3-29所示。

(2)選定檢驗(yàn)數(shù)σj最大的非基變量之一作為進(jìn)基變量,這里可選擇x1B進(jìn)基,在其所在的列,按照換出基確定的規(guī)則,可選擇y1或者y2作為出基變量,這里不妨選y1作為出基變量,從而得到表3-30。

(3)通過(guò)初等變換,將x1B所在的列變?yōu)閱挝幌蛄?更新檢驗(yàn)數(shù)基右端常數(shù)項(xiàng),從而得到表3-31。

(4)同樣地,選定檢驗(yàn)數(shù)σj最大的非基變量x2B進(jìn)基,在其所在的列,按照換出基確定的規(guī)則,選擇y2作為出基變量,從而得到表3-32。

(5)通過(guò)初等變換,將x2B所在的列變?yōu)閱挝幌蛄?更新檢驗(yàn)數(shù)基右端常數(shù)項(xiàng),從而得到表3-33。

(6)選定檢驗(yàn)數(shù)σj最大的非基變量x1A進(jìn)基,在其所在的列,按照換出基確定的規(guī)則,選擇x1B

作為出基變量,從而得到表3-34。

(7)通過(guò)初等變換,將x1A所在的列變?yōu)閱挝幌蛄?更新檢驗(yàn)數(shù)基右端常數(shù)項(xiàng),從而得到表3-35。

(8)選定檢驗(yàn)數(shù)σj最大的非基變量x3A進(jìn)基,在其所在的列,按照換出基確定的規(guī)則,選擇y3作為出基變量,從而得到表3-36。

6.討論

模型不考慮盈利率波動(dòng),以及資金的時(shí)間價(jià)值等在實(shí)際的投資中會(huì)考慮的一些重要因素。

軟件計(jì)算和使用單純形表手工計(jì)算得出來(lái)的分配方案并不相同,但是最優(yōu)目標(biāo)函數(shù)值是一樣的,這說(shuō)明模型的最優(yōu)解不唯一。

3.6.2防御兵力的部署

1.問題描述

藍(lán)軍試圖入侵由紅軍防御的領(lǐng)地。紅軍有三條防線和200個(gè)正規(guī)戰(zhàn)斗單位,并且還能抽調(diào)出200個(gè)預(yù)備單位。藍(lán)軍計(jì)劃進(jìn)攻兩條前線(南線和北線);紅軍設(shè)置三條東西防線

(Ⅰ、Ⅱ、Ⅲ),防線Ⅰ和防線Ⅱ各自要至少阻止藍(lán)軍進(jìn)攻4天以上,并盡可能延長(zhǎng)總的戰(zhàn)斗持續(xù)時(shí)間。藍(lán)軍的前進(jìn)時(shí)間由下列經(jīng)驗(yàn)公式估計(jì)得到:

戰(zhàn)斗持續(xù)天數(shù)的經(jīng)驗(yàn)公式的系數(shù)如表3-37所示。

紅軍的預(yù)備單位能夠且只能用在防線Ⅱ上,藍(lán)軍分配到三條防線的單位數(shù)由表3-38給出。

紅軍應(yīng)如何在北線/南線和三條防線上部署他的軍隊(duì)?

2.問題分析

定義八個(gè)決策變量xij(i=1,2;j=1,2,3),分別表示各個(gè)防線上的正規(guī)兵力部署數(shù)量,yij表示部署在防線Ⅱ上的預(yù)備兵力的數(shù)量。那么我們就可以依據(jù)經(jīng)驗(yàn)公式計(jì)算各個(gè)防線上的戰(zhàn)斗持續(xù)時(shí)間。

案例要求盡可能延長(zhǎng)總的戰(zhàn)斗持續(xù)時(shí)間,這只是戰(zhàn)術(shù)要求的具體量化抽象,在不同的戰(zhàn)術(shù)場(chǎng)景中,對(duì)總的戰(zhàn)斗持續(xù)時(shí)間也有不同的具體計(jì)算方式。

以下的目標(biāo)函數(shù)適合類似“拖延戰(zhàn)”的戰(zhàn)術(shù)場(chǎng)景,也就是作戰(zhàn)的目的是拖住敵方的兵力,使其無(wú)法騰出手來(lái)攻擊其他目標(biāo)。

3.建立模型

兵力的分配要受到以下約束:

正規(guī)戰(zhàn)斗單位總數(shù)為200個(gè),因此有

4.求解

采用目標(biāo)函數(shù)一的時(shí)候,數(shù)學(xué)模型是線性規(guī)劃模型,可以使用Matlab求解。

5.討論

線性規(guī)劃的模型和算法都很標(biāo)準(zhǔn)化、程序化,可以快速方便地求解很多復(fù)雜和大型的問題。但是,我們?nèi)匀恍枰谛睦锢斡?這并不能替代優(yōu)化決策系統(tǒng)過(guò)程中的其他環(huán)節(jié)。

3.6.3-火車站售票的規(guī)劃

1.問題描述

從城市A到城市B開通了一條新的客運(yùn)鐵路,總共有N個(gè)站點(diǎn),各站點(diǎn)依次編號(hào),A市站點(diǎn)編號(hào)1,B市站點(diǎn)編號(hào)N。這列火車的最大載客量是n人。為提高客運(yùn)能力,增加收益,在對(duì)歷史數(shù)據(jù)進(jìn)行了統(tǒng)計(jì)分析以及對(duì)未來(lái)一段時(shí)間進(jìn)行了預(yù)測(cè)的基礎(chǔ)上,得出了不同站點(diǎn)之間客運(yùn)需求的數(shù)量。如果因客運(yùn)量限制而不能接受所有訂單,則會(huì)拒絕部分訂單。現(xiàn)在要根據(jù)這些數(shù)據(jù),確定鐵路售票的規(guī)劃,使可能的總收益最大化,一個(gè)已接受訂單的收益是訂單中乘客人數(shù)和火車票價(jià)格的乘積。總收益是所有已接受訂單的收益之和。

例如,假設(shè)從城市A到城市B的站點(diǎn)數(shù)目為N=6,火車最大載客量n=2000,不同站點(diǎn)之間的客運(yùn)需求已知數(shù)據(jù)如表3-39所示。

2.問題分析與建模

3.求解

3.6.4武器目標(biāo)分配問題

1.問題描述

在時(shí)刻t,某單位有3個(gè)武器系統(tǒng),每個(gè)武器系統(tǒng)均有2個(gè)目標(biāo)通道,要射擊6批目標(biāo),武器系統(tǒng)對(duì)目標(biāo)的射擊有利度數(shù)據(jù)如表3-41所示,要進(jìn)行目標(biāo)分配,使總的射擊有利度達(dá)到最大,請(qǐng)建立數(shù)學(xué)模型。

2.問題分析與建模

為了簡(jiǎn)化起見,將上述模型進(jìn)行轉(zhuǎn)化,每個(gè)通道視為一個(gè)單獨(dú)的武器,建立武器目標(biāo)分配問題的射擊有利度矩陣如表3-42所示。第4章網(wǎng)絡(luò)最優(yōu)化4.1最小支撐樹問題4.2最短路問題4.3最大流問題4.4

最小費(fèi)用流問題4.5二分匹配問題

4.1最小支撐樹問題

定義4-3連通圖G=(V,E)的最小支撐樹T(G)就是圖的權(quán)重之和最小的支撐樹。

其中,cij是邊(i,j)的權(quán)重。

例4-1某公司中標(biāo)為“一帶一路”上某國(guó)家的六個(gè)居民點(diǎn)提供寬帶建設(shè)服務(wù),圖4-1給出了鋪設(shè)通信線路的可能情況及相應(yīng)距離。請(qǐng)確定最經(jīng)濟(jì)的通信線路鋪設(shè)方案,使六個(gè)居民點(diǎn)可以連接起來(lái)。

圖4-1寬帶網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)問題的輸入

記六個(gè)居民點(diǎn)及相應(yīng)的可能連接方式組成的圖為G=(V,E),設(shè)xij為決策變量,xij=1代表點(diǎn)i與點(diǎn)j之間鋪設(shè)的通信線路,否則不鋪設(shè)。此問題可以表示為以下線性規(guī)劃模型

本問題可以使用線性規(guī)劃求解,但是對(duì)于點(diǎn)的數(shù)量較多的問題,使用線性規(guī)劃求解的話就不可行了。例如,對(duì)于有60個(gè)點(diǎn)的圖,要用線性規(guī)劃模型求解最小支撐樹,需要的約束條件數(shù)量比地球上的原子數(shù)量還多。

支撐樹使用了最少數(shù)量的邊連通了圖的所有點(diǎn),從數(shù)量方面是網(wǎng)絡(luò)連通優(yōu)化設(shè)計(jì)問題的最優(yōu)方案,而最小支撐樹是邊的總長(zhǎng)度之和最小的支撐樹,因此,從數(shù)量和質(zhì)量方面都是最優(yōu)的網(wǎng)絡(luò)連通設(shè)計(jì)方案。

4.1.2兩個(gè)屬性

1.Cut屬性

在最小支撐樹的線性規(guī)劃模型中,式(4-2)代表連通性約束,不等式左側(cè)的表達(dá)式表示圖的截集中至少有一條邊要保留。

定義4-4-圖G=(V,E)中,對(duì)于?S?V,所有的一端在S中、一端不在S中的邊構(gòu)成的集合稱為圖的截集。

例4-2圖4-1的截集數(shù)量為6!/2,其中兩個(gè)如圖4-2所示。圖4-2圖的截集示例

最小支撐樹的Cut屬性:連通圖G任意截集的最小邊必屬于最小支撐樹。

2.Cycle屬性

最小支撐樹的另外一個(gè)屬性是無(wú)圈的,因此,任意圈上肯定有一條邊不屬于最小支撐樹,依據(jù)“貪婪法”的啟發(fā)式規(guī)則,我們猜測(cè)圈上的最大邊不屬于最小支撐樹。

最小支撐樹的Cycle屬性:圖中圈上若只有單一最大邊,則此最大邊一定不屬于最小支撐樹;若有多條最大邊,則去掉任意一條最大邊,不影響得到最小支撐樹。總之,去掉圈上一條最大邊,仍然可以得到最小支撐樹。

算法的步驟如下:

例4-3利用Prim算法求解圖4-1的最小支撐樹。

步驟1:首先令S={6},則Cut(S)={(6,3),(6,4)},E(T)=?,得到最小邊為emin=(6,4),如圖4-3所示。

步驟2:(6,4)是最小支撐樹上的邊,令E(T)=E(T)∪emin={(6,4)},S=S∪V(emin)={6,4},則

Cut(S)={(6,3),(4,1),(4,2),(4,3),(4,5)}

得到最小邊emin=(4,2),如圖4-4所示。

圖4-3例4-3求解步驟1的結(jié)果

圖4-4-例4-3求解步驟2的結(jié)果

步驟3:(4,2)是最小支撐樹上的邊,令E(T)=E(T)∪emin={(6,4),(4,2)},S=S∪V(emin)={6,4,2},則

Cut(S)={(6,3),(4,1),(4,3),(4,5),(2,1),(2,3),(2,5)}

得到最小邊emin=(1,2),如圖4-5所示。

圖4-5例4-3求解步驟3的結(jié)果

步驟4:(1,2)是最小支撐樹上的邊,令E(T)=E(T)∪emin={(6,4),(4,2),(1,2)},S=S∪V(emin)={6,4,2,1},則

Cut(S)={(6,3),(4,3),(4,5),(2,3),(2,5),(1,3),(1,5)}

得到最小邊有三條,emin=(2,3)、(2,5)、(4,3),如圖4-6所示。

圖4-6例4-3求解步驟4的結(jié)果

步驟5:可以任選一條最小邊加入E(T),如(2,3)。令E(T)=E(T)∪emin

={(6,4),(4,2),(1,2),(2,3)},S=S∪V(emin

)={6,4,2,1,3},則

Cut(S)={(4,5),(2,5),(1,5)}

得到最小邊emin

=(2,5),如圖4-7所示。

圖4-7例4-3求解步驟5的結(jié)果

步驟6:(2,5)是最小支撐樹上的邊。令E(T)=E(T)∪emin

={(6,4),(4,2),(1,2),(2,3),(2,5)},S=S∪V(emin

)={6,4,2,1,3,5},算法結(jié)束,如圖4-8所示。圖4-8例4-3求解步驟6的結(jié)果

2.Kruskal算法

從構(gòu)造的角度考慮,在選擇一部分邊時(shí),只要避免將圈上的最大邊選上就可以了。

Kruskal從構(gòu)造的角度提出了尋找最小支撐樹的方法。

Kruskal法將所有的邊從圖中取出來(lái),從小到大依次考慮重新加回到圖中,如果不產(chǎn)生圈則留下,否則拋棄掉,這也是一種“貪婪算法”。

例4-4-利用Kruskal算法求解圖4-1的最小支撐樹。

步驟1:令E(T)=?,當(dāng)前圖中的最小邊為

如圖4-9所示。圖4-9例4-4求解步驟1的結(jié)果

步驟2:(1,2)選作最小支撐樹上的邊,令E(T)=E(T)∪emin={(1,2)},E=E-{(1,2)},剩下圖中的最小邊為圖4-10例4-4求解步驟2的結(jié)果

步驟3:(6,4)選作最小支撐樹上的邊,令E(T)=E(T)∪emin

={(1,2),(6,4)},E=E-{(6,4)},剩下圖中的最小邊為

如圖4-11所示。圖4-11例4-4求解步驟3的結(jié)果

步驟4:(2,4)選作最小支撐樹上的邊,令E(T)=E(T)∪emin

={(1,2),(6,4),(2,4)},E=E-{(2,4)},剩下圖中的最小邊有三條,emin

=(2,3)、(2,5)、(4,3),如圖4-12所示。圖4-12例4-4求解步驟4的結(jié)果

步驟5:可以任選一條最小邊加入E(T),如(2,3)。令E(T)=E(T)∪emin={(1,2),(6,4),(2,4),(2,3)},E=E-{(2,3)},剩下圖中的最小邊有兩條,emin=(2,5)、(4,3),如圖4-13所示。圖4-13例4-4求解步驟5的結(jié)果

步驟6:可以任選一條最小邊加入E(T),如(2,5)。令E(T)=E(T)∪emin

={(1,2),(6,4),(2,4),(2,3),(2,5)},E=E-{(2,5)},剩下圖中的最小邊為emin

=(4,3),如圖4-14所示。圖4-14-例4-4求解步驟6的結(jié)果

步驟7:此時(shí),E(T)中已經(jīng)有5條邊滿足支撐樹點(diǎn)數(shù)和邊數(shù)的關(guān)系,算法停止??梢钥吹?此時(shí),若再加入任意邊,都會(huì)產(chǎn)生圈。

算法的步驟可以總結(jié)為口訣:“一邊一邊地連,先連最小邊,不能產(chǎn)生圈”。

3.破圈法

破圈法是指利用Cycle屬性,逐步去掉圈上的最大邊,最終得到最小支撐樹。其步驟總結(jié)為口訣:“一圈一圈地破,破掉圈上最大邊”。

對(duì)于連通圖G=(V,E),破圈法的步驟總結(jié)如下:

4.1.4-拓展應(yīng)用:k-聚類分析

聚類就是一種尋找數(shù)據(jù)之間一種內(nèi)在結(jié)構(gòu)的技術(shù)。聚類把全體數(shù)據(jù)實(shí)例組織成不同的組,處于相同分組中的數(shù)據(jù)實(shí)例彼此相近,處于不同分組中的實(shí)例彼此相遠(yuǎn)。對(duì)一個(gè)集合

V={v1,v2,…,vn}中的對(duì)象,在已知對(duì)象之間差異性度量的情況下,將其分為由類似的對(duì)象組成的多個(gè)類Vi的過(guò)程,稱為聚類分析,其中

使用最小支撐樹進(jìn)行k-聚類分析的步驟如下:

步驟1:將聚類的對(duì)象集合V看作圖G=(V,E)的點(diǎn)集,將對(duì)象之間的差異性dij作為點(diǎn)之間邊(i,j)∈E的權(quán)重。

步驟2:求解G的最小支撐樹T=(V,E')。

步驟3:去掉T上的k-1條最大邊,得到k個(gè)相互不連通的連通子圖Gi=(Vi,Ei

')i=1,…,k,則Vi是第i類的點(diǎn)集合。

例4-5某電子企業(yè)需要在10臺(tái)機(jī)器上生產(chǎn)15種電子零件。企業(yè)準(zhǔn)備將機(jī)器分成若干組,使零件在不同機(jī)器上生產(chǎn)的“差異”最小。零件i在機(jī)器j上生產(chǎn)的“差異”定義為

其中,nij表示機(jī)器i和機(jī)器j上都可以生產(chǎn)的零件數(shù)量;mij表示只能在機(jī)器i和機(jī)器j其中之一生產(chǎn)的零件數(shù)量。根據(jù)表4-1給出的數(shù)據(jù),求將機(jī)器分成兩組和三組的解。

步驟1:將不同機(jī)器生產(chǎn)的零件按照表4-1所示的對(duì)應(yīng)關(guān)系輸入Matlab的cell結(jié)構(gòu)變量中,可以得到:

步驟2:按照差異的定義,計(jì)算dij:

步驟3:將d作為鄰接矩陣,求解圖的最小支撐樹:

結(jié)果如圖4-15所示。

圖4-15機(jī)器差異性最小支撐樹

步驟4:若要將機(jī)器分成2組,則去掉最小支撐樹上的一條最大邊就可以達(dá)到目的(見圖4-16(a)),若要將機(jī)器分成3組,再去掉一條最大邊即可(見圖4-16(b)),以此類推。圖4-16利用最小支撐樹對(duì)圖上的點(diǎn)進(jìn)行2-聚類和3-聚類

4.1.5拓展應(yīng)用:戰(zhàn)備通信節(jié)點(diǎn)的建設(shè)問題

1.問題描述

構(gòu)建將N個(gè)城市作為節(jié)點(diǎn)的有線通信網(wǎng)絡(luò),在每個(gè)城市內(nèi)設(shè)置一架專用網(wǎng)絡(luò)連接設(shè)備,請(qǐng)?jiān)O(shè)計(jì)通信網(wǎng)絡(luò)的最經(jīng)濟(jì)連接方案。同時(shí),為了增加抗毀性,可以在N個(gè)城市之外的地方構(gòu)建一定數(shù)量的戰(zhàn)備節(jié)點(diǎn),戰(zhàn)備節(jié)點(diǎn)平時(shí)不工作,當(dāng)出現(xiàn)應(yīng)急突發(fā)情況、通信網(wǎng)絡(luò)中斷時(shí),可以啟用戰(zhàn)備節(jié)點(diǎn),迅速地恢復(fù)通信網(wǎng)絡(luò)的連通性,請(qǐng)?jiān)O(shè)計(jì)戰(zhàn)備節(jié)點(diǎn)的建設(shè)方案。設(shè)計(jì)時(shí)應(yīng)充分考慮經(jīng)濟(jì)性和抗毀性。經(jīng)濟(jì)性是指要考慮節(jié)省網(wǎng)絡(luò)連接的總費(fèi)用,而抗毀性是指要提高網(wǎng)絡(luò)在節(jié)點(diǎn)故障的情況下仍然保持連通的能力。

現(xiàn)已知138個(gè)城市(見圖4-17)建設(shè)網(wǎng)絡(luò)節(jié)點(diǎn)的選址的經(jīng)緯度坐標(biāo),請(qǐng)為通信網(wǎng)絡(luò)的優(yōu)化設(shè)計(jì)提供優(yōu)化方法。圖4-17需要建立通信網(wǎng)絡(luò)連接的138個(gè)節(jié)點(diǎn)分布

2.問題分析

若只考慮經(jīng)濟(jì)性指標(biāo),這是一個(gè)網(wǎng)絡(luò)最優(yōu)化決策中的最小支撐樹問題(參見4.1節(jié)),輸入是點(diǎn)以及點(diǎn)之間的連接費(fèi)用。給定的N個(gè)城市作為網(wǎng)絡(luò)上的點(diǎn),點(diǎn)之間的通信連接費(fèi)用可以用點(diǎn)之間的通信連接長(zhǎng)度來(lái)代替。

3.最經(jīng)濟(jì)的連通方案

根據(jù)已知通信網(wǎng)絡(luò)節(jié)點(diǎn)的選址經(jīng)緯度坐標(biāo),可以計(jì)算相互之間的距離,這是一種簡(jiǎn)要的代替節(jié)點(diǎn)之間通信連接建設(shè)費(fèi)用的方法。然后利用網(wǎng)絡(luò)最優(yōu)化中的最小支撐樹求解算

法,求解通信線路總長(zhǎng)度最短的建設(shè)方案。假設(shè)將N個(gè)城市的經(jīng)緯度坐標(biāo)(度)存儲(chǔ)到N×2維變量Cord中,其第一列存儲(chǔ)的是點(diǎn)的緯度信息,第二列存儲(chǔ)的是經(jīng)度信息,共有N行,每行對(duì)應(yīng)一個(gè)城市選址點(diǎn),可得到:

求得的以距離度量的最經(jīng)濟(jì)的通信線路建設(shè)方案如圖4-18所示。

圖4-18以距離度量的最經(jīng)濟(jì)的通信線路建設(shè)方案

4.最經(jīng)濟(jì)的恢復(fù)方案

預(yù)備建設(shè)戰(zhàn)備節(jié)點(diǎn)的集合為Nb,使通信節(jié)點(diǎn)Nd?V被破壞的情景下,網(wǎng)絡(luò)G'=(V-Nd

,E-E(Nd

)),可以對(duì)網(wǎng)絡(luò)進(jìn)行連通性分析

例如,去掉第53、56和105個(gè)城市之后,網(wǎng)絡(luò)分成相互不連通的4個(gè)部分,如圖4-19所示。Matlab代碼如下:

圖4-19破壞掉3個(gè)節(jié)點(diǎn)后,通信網(wǎng)絡(luò)分成4個(gè)獨(dú)立的部分

4.2最短路問題4.2.1線性規(guī)劃模型在網(wǎng)絡(luò)G=(V,E)中,邊(i,j)∈E的權(quán)值(長(zhǎng)度、時(shí)間、費(fèi)用等的抽象)為cij,尋找從起點(diǎn)s∈V到終點(diǎn)t∈V的最短路P,就稱為最短路問題。目標(biāo)函數(shù)是位于最短路上的邊的總長(zhǎng)度最短,即其中,xij∈{0,1}是決策變量,xij=1代表邊(i,j

)是最短路上的邊,否則不是。

約束條件是,對(duì)于起點(diǎn)s來(lái)講

對(duì)于終點(diǎn)t來(lái)講

對(duì)于網(wǎng)絡(luò)中的其他點(diǎn)k∈V-s-t來(lái)講

4.2.2最優(yōu)性條件

在圖G=(V,E)上,為每個(gè)點(diǎn)vj引入一個(gè)標(biāo)號(hào){dj,vj},dj代表從s出發(fā)到達(dá)vj的某條已知道路的長(zhǎng)度,vi是這條道路上與vj鄰接的上一個(gè)點(diǎn)。

最優(yōu)性條件:如果圖上的所有的點(diǎn)的標(biāo)號(hào)滿足以下條件:

則圖上任意點(diǎn)vi的標(biāo)號(hào)dj都代表從s點(diǎn)到當(dāng)前點(diǎn)vi的最短路長(zhǎng)度。

4.2.3標(biāo)號(hào)法

1.標(biāo)號(hào)更新操作

假設(shè)對(duì)于圖上的某個(gè)邊(vi,vj

),其長(zhǎng)度為cij,兩個(gè)端點(diǎn)的標(biāo)號(hào)分別為{di,vi1},{dj,vj1},如圖4-20所示。曲線邊代表從s到箭頭端點(diǎn)的某條路,值代表這條路的長(zhǎng)度;直線邊代表圖上的邊,值代表這條邊的長(zhǎng)度。

可以執(zhí)行標(biāo)號(hào)更新操作

代表的含義是從s出發(fā)到點(diǎn)vj,找到了一條更短的路。

圖4-20標(biāo)號(hào)示意圖

2.標(biāo)號(hào)固定操作

假設(shè)圖上的邊的長(zhǎng)度均非負(fù),那么在任意時(shí)刻,圖上的最小標(biāo)號(hào)對(duì)應(yīng)的點(diǎn)為

此時(shí),可以將vmin的標(biāo)號(hào)固定下來(lái),不再考慮更新,也可稱其為永久標(biāo)號(hào)。因?yàn)楦鶕?jù)標(biāo)號(hào)更新操作的條件,永久標(biāo)號(hào)不可能再更新。對(duì)于任意其他點(diǎn)的標(biāo)號(hào),有

不可能存在標(biāo)號(hào)更新條件:

直觀理解就是,從s出發(fā)到任意其他與vj鄰接的點(diǎn)vi,再經(jīng)過(guò)邊(vi,vj)到永久標(biāo)號(hào)點(diǎn)vj,都不可能更短了。但是確定永久標(biāo)號(hào)的前提是cij≥0,當(dāng)圖中有負(fù)邊的時(shí)候,不能確定永久標(biāo)號(hào)。

3.標(biāo)號(hào)設(shè)定法

所謂標(biāo)號(hào)設(shè)定法(Dijkstra算法),就是針對(duì)圖上不存在負(fù)值邊的G,在求解最短路的時(shí)候,每次更新標(biāo)號(hào)后,都確定一個(gè)最小的標(biāo)號(hào)點(diǎn)作為永久標(biāo)號(hào)點(diǎn),不再考慮標(biāo)號(hào)的更新,直到所有的標(biāo)號(hào)都固定下來(lái)后,算法結(jié)束。標(biāo)號(hào)設(shè)定法的步驟如下:

例4-6在圖4-21中,求解從S=1到t=5的最短路。圖4-21例4-6圖

步驟1:設(shè)起點(diǎn)的標(biāo)號(hào)為(0,?),其他點(diǎn)的標(biāo)號(hào)為(∞,?),

S={v1},如圖4-22所示。圖4-22例4-6求解步驟1的結(jié)果

步驟2:更新{vj|(vi,vj)∈E,vi∈S}的標(biāo)號(hào),找到最小標(biāo)號(hào)vmin=v2,將其標(biāo)號(hào)固定下來(lái),令S=S∪{vmin}={v1,v2},如圖4-23所示。圖4-23例4-6求解步驟2的結(jié)果

步驟3:更新{vj|(vi,vj)∈E,vi∈S}的標(biāo)號(hào),找到最小標(biāo)號(hào)vmin=v3,將其標(biāo)號(hào)固定下來(lái),S=S∪{vmin}={v1,v2,v3},如圖4-24所示。圖4-24-例4-6求解步驟3的結(jié)果

步驟4:更新{vj|(vi,vj)∈E,vi∈S}的標(biāo)號(hào),找到最小標(biāo)號(hào)vmin=v4,將其標(biāo)號(hào)固定下來(lái),令S=S∪{vmin}={v1,v2,v3,v4},如圖4-25所示。圖4-25例4-6求解步驟4的結(jié)果

步驟5:更新{vj|(vi,vj)

∈E,vi∈S}的標(biāo)號(hào),找到最小標(biāo)號(hào)vmin=v5,將其標(biāo)號(hào)固定下來(lái),令S=S∪{vmin}={v1,v2,v3,v4,v5}。S=V,算法停止,如圖4-26所示。圖4-26例4-6求解步驟5的結(jié)果

4.標(biāo)號(hào)更新法

所謂標(biāo)號(hào)更新法,是指在求解最短路的時(shí)候,迭代地應(yīng)用標(biāo)號(hào)更新操作,直到所有的點(diǎn)的標(biāo)號(hào)都無(wú)法更新為止,也就是滿足dj≤di+cij。標(biāo)號(hào)更新法的步驟如下:

步驟1:設(shè)起點(diǎn)的標(biāo)號(hào)為{0,?},其他點(diǎn)的標(biāo)號(hào)為{∞,?}。

步驟2:更新{vj|(vi,vj)∈E}的標(biāo)號(hào)。

步驟3:如果沒有標(biāo)號(hào)可以更新,則算法停止,否則轉(zhuǎn)步驟2。

例4-7在圖4-27中,求解從S=1到t=5的最短路。圖4-27例4-7圖

步驟1:設(shè)起點(diǎn)的標(biāo)號(hào)為{0,?},其他點(diǎn)的標(biāo)號(hào)為{∞,?},如圖4-28所示。圖4-28例4-7求解步驟1的結(jié)果

步驟2:更新{vj|(vi,vj)∈E}的標(biāo)號(hào),如圖4-29所示。圖4-29例4-7求解步驟2的結(jié)果

步驟3:更新{vj|(vi,vj)∈E}的標(biāo)號(hào),沒有標(biāo)號(hào)可更新,算法停止,如圖4-30所示。圖4-30例4-7求解步驟3的結(jié)果

4.2.4-拓展應(yīng)用:數(shù)據(jù)約減

1.問題描述

數(shù)據(jù)包含信息,但是并不代表數(shù)據(jù)越多信息量越多。因此,對(duì)數(shù)據(jù)進(jìn)行約減,可方便信息的存儲(chǔ)、讀取、分析等,同時(shí),數(shù)據(jù)所包含的信息量沒有損失或者損失最小化,這個(gè)問題稱為數(shù)據(jù)約簡(jiǎn)問題。

假設(shè)vi和vj(i<j)之間的點(diǎn)都被約減掉,那么,節(jié)省的存儲(chǔ)空間可以度量為

2.模型建立

如果要完全地羅列出圖G的所有弧,由于點(diǎn)的總數(shù)N很大,因此為了存儲(chǔ)所有的弧所需的空間仍然很大。為了降低計(jì)算對(duì)存儲(chǔ)空間的需求,可以采用降度的思路,迭代完成數(shù)據(jù)的約減,每步迭代只構(gòu)造圖G的部分弧。

3.計(jì)算實(shí)例分析

假設(shè)有一組按時(shí)間序列記錄的數(shù)據(jù),三個(gè)參數(shù)分別為A、B和C,數(shù)據(jù)如表4-2所示。

首先對(duì)數(shù)據(jù)進(jìn)行無(wú)量綱化處理,得到的結(jié)果如圖4-31所示。圖4-31對(duì)飛參數(shù)據(jù)進(jìn)行無(wú)量綱化處理后的數(shù)據(jù)

按照間隔為2的跨度建立最短路問題模型,則對(duì)于這個(gè)樣本數(shù)據(jù)來(lái)講,無(wú)損數(shù)據(jù)約減后(令α=1,β=1000000)剩余33個(gè)點(diǎn),也就是有5個(gè)點(diǎn)是完全信息量意義下的冗余點(diǎn)(見圖4-32),這5個(gè)點(diǎn)的序號(hào)分別是17,18,19,20,21。

圖4-32無(wú)損數(shù)據(jù)約減后得到的數(shù)據(jù)序列,使用*標(biāo)識(shí)

如果信息可以有損失,則可以有更多的點(diǎn)被約減掉,令α=1,則隨著β值的變化,被約減的點(diǎn)的數(shù)量統(tǒng)計(jì)如圖4-33所示。

圖4-33α=1情況下,隨著β值的增加,可以約減飛參數(shù)據(jù)的個(gè)數(shù)

4.3最大流問題

4.3.1線性規(guī)劃模型在圖G=(V,E)中,邊(i,j)∈E帶有容量uij和流量xij兩個(gè)參數(shù),最大流問題就是求解從起點(diǎn)s到終點(diǎn)t可以通過(guò)的最大流量。

目標(biāo)函數(shù)是網(wǎng)絡(luò)流量的最大化,也就是從s發(fā)出的流量最大,或者流入t的流量最大,即

對(duì)于圖上的點(diǎn)k∈V-{s,t},滿足以下流量守恒約束

任意邊上的流量還要滿足容量約束

4.3.2剩余容量圖

為了更加直觀地在圖上使用標(biāo)號(hào)法求解圖的最大流,將容量流量標(biāo)號(hào)變換為剩余容量標(biāo)號(hào)。從容量流量標(biāo)號(hào)到剩余容量標(biāo)號(hào)的方法如圖4-34所示。圖4-33α=1情況下,隨著β值的增加,可以約減飛參數(shù)據(jù)的個(gè)數(shù)

4.3.3增廣鏈法

利用剩余容量圖法,計(jì)算圖上從s到t的最大流的步驟如下:

步驟1:將圖G=(V,E)的邊都轉(zhuǎn)化為剩余容量標(biāo)號(hào)。

步驟2:在剩余容量圖上找到一條從s到t的任意路p,若找不到,則轉(zhuǎn)步驟4;否則計(jì)算

例4-8在圖4-35所示的容量圖中,求從S到t的最大流。圖4-35例4-8圖

步驟1:將圖G=(V,E)的邊都轉(zhuǎn)化為剩余容量標(biāo)號(hào),在剩余容量圖上找到一條從s到t的任意路p,并計(jì)算最大可擴(kuò)充流量rmin=5,如圖4-36所示。圖4-36例4-8求解步驟1的結(jié)果

步驟2:在p上擴(kuò)充流量,即執(zhí)行以下運(yùn)算:

結(jié)果如圖4-37所示。

圖4-37例4-8求解步驟2的結(jié)果

步驟3:在剩余容量圖上找到一條從s到t的任意路p,并計(jì)算最大可擴(kuò)充流量,如圖4-38所示。圖4-38例4-8求解步驟3的結(jié)果

步驟4:在p上擴(kuò)充流量,即執(zhí)行以下運(yùn)算:

結(jié)果如圖4-39所示。圖4-39例4-8求解步驟4的結(jié)果

步驟5:在剩余容量圖上找不到一條從s到t的路p,算法停止,將剩余容量圖上所有的邊,轉(zhuǎn)換為容量流量標(biāo)號(hào)。也就是對(duì)于邊(i,j),其容量為uij,流量xij=rji=uij-rij,得到網(wǎng)絡(luò)最大流為6,結(jié)果如圖4-40所示。圖4-40例4-8求解步驟5的結(jié)果

4.3.4-拓展應(yīng)用:彈藥目標(biāo)最大化匹配問題

不同類型的彈藥適合轟炸不同類型的目標(biāo),如果匹配不得當(dāng),轟炸效果會(huì)大打折扣。在某次空中進(jìn)攻作戰(zhàn)任務(wù)規(guī)劃中,有A、B、C、D、E五類彈藥各一個(gè)單位,計(jì)劃打擊6個(gè)

目標(biāo)。6個(gè)目標(biāo)最適合使用的彈藥如表4-3所示。

請(qǐng)問最多能打擊幾個(gè)目標(biāo)?

將待打擊目標(biāo)和彈藥都看作圖上的點(diǎn),彈藥和目標(biāo)之間有一條邊,容量為1,代表彈藥目標(biāo)的匹配關(guān)系,增加一個(gè)虛擬的起始點(diǎn)s和一個(gè)虛擬的終點(diǎn)t,建立最大流模型如圖4-41所示,則圖上的從s到t的任意一個(gè)單位流,都代表一個(gè)彈藥目標(biāo)匹配,最大流是由單位流組成的,代表最大的匹配關(guān)系。

圖4-41彈藥目標(biāo)匹配問題的最大流

步驟1:根據(jù)表4-3建立圖模型:

步驟2:求解圖上的最大流,得到最優(yōu)匹配方案:

4.3.5拓展應(yīng)用:最大投送能力評(píng)估問題

最大投送能力是機(jī)動(dòng)能力的重要度量。現(xiàn)假定需要從三個(gè)倉(cāng)庫(kù)6、7、8將后勤物資運(yùn)送到目的地1。道路上的容量取決于這條路上可用運(yùn)輸工具的數(shù)量、容量以及往返次數(shù)。表

4-4給出了相應(yīng)路線上的每天的最大運(yùn)輸能力,也就是容量。請(qǐng)?jiān)u估三個(gè)倉(cāng)庫(kù)到目的地的最大投送能力。

若將倉(cāng)庫(kù)和目的地都看作圖上的點(diǎn),倉(cāng)庫(kù)到目的地之間的道路投送容量設(shè)為邊上的容量值,為圖4-42增加一個(gè)虛擬的起點(diǎn)s連接到所有的倉(cāng)庫(kù),增加一個(gè)虛擬的終點(diǎn)t連接到所有的營(yíng)地,則可以使用最大流模型進(jìn)行求解。

步驟1:建立容量網(wǎng)絡(luò),將表4-4的數(shù)據(jù)存儲(chǔ)到CapacityA矩陣中,在Matlab中建立有向圖模型:

結(jié)果如圖4-42所示。圖4-42投送能力評(píng)估的容量圖模型

步驟2:求解從9到1的最大流:

求得結(jié)果如圖4-43所示。

圖4-43最大投送能力的解

4.4-最小費(fèi)用流問題4.4.1線性規(guī)劃模型在圖G=(V,E)中,邊(i,j)∈E上的參數(shù)包括容量uij、單位流量費(fèi)用cij和實(shí)際流量xij,一些稱為源點(diǎn)或者匯點(diǎn)的點(diǎn)上具有參數(shù)bi,代表點(diǎn)上純供應(yīng)流量或者純消耗流量,供應(yīng)點(diǎn)的供應(yīng)流量要流經(jīng)網(wǎng)絡(luò)到達(dá)需求點(diǎn)滿足其需求,最小費(fèi)用流問題就是求解從源點(diǎn)s到匯點(diǎn)t的最小費(fèi)用流方案??梢员硎緸橐韵戮€性規(guī)劃模型

4.4.2三個(gè)最優(yōu)性條件

1.負(fù)圈最優(yōu)性條件

定理4-1一個(gè)網(wǎng)絡(luò)流方案是最小費(fèi)用流的充分必要條件是,剩余容量圖中不存在單位流量費(fèi)用為負(fù)的增廣圈。

證明:首先證明必要性。若剩余容量圖中存在增廣圈,且其擴(kuò)充流量的費(fèi)用為負(fù),則可以在這個(gè)圈上擴(kuò)充流量,總的費(fèi)用下降,因此,必要性得證。

2.勢(shì)差最優(yōu)性條件

定理4-2對(duì)每個(gè)點(diǎn)增加一個(gè)勢(shì)值π(i),i∈V,如果存在一組勢(shì)值使以下不等式成立

則網(wǎng)絡(luò)上的可行流為最小費(fèi)用流,且可稱

的勢(shì)差。

證明:對(duì)于網(wǎng)絡(luò)上的可行流x*,若存在勢(shì)值使勢(shì)差c

成立,則網(wǎng)絡(luò)上任意增廣圈W上的勢(shì)差之和,即

不存在負(fù)值增廣圈。因此,根據(jù)負(fù)圈最優(yōu)性條件,充分性得證。

3.互補(bǔ)松弛最優(yōu)性條件

定理4-3一個(gè)網(wǎng)絡(luò)流方案x*是最小費(fèi)用流的充分必要條件是,存在這么一組勢(shì)值使以下條件成立:

4.4.3兩個(gè)算法

1.負(fù)圈消除算法

根據(jù)負(fù)圈最優(yōu)性條件,不含負(fù)圈的可行流即為最小費(fèi)用流,因此,可以通過(guò)消除負(fù)圈的辦法,找到最小費(fèi)用流。算法的步驟如下:

2.連續(xù)最短路算法

記網(wǎng)絡(luò)上的一個(gè)非飽和可行流x={xij|0≤xij≤uij},假設(shè)存在一組勢(shì)π,使其滿足勢(shì)差最優(yōu)性條件。令d代表從某個(gè)點(diǎn)s在剩余容量圖上到其他點(diǎn)的最短路(邊(i,j)的長(zhǎng)度用cπij表示),則以下性質(zhì)成立:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論