Lingo是一種專門用于線性規(guī)劃、整數(shù)規(guī)劃、非線性規(guī)劃、混合整數(shù)規(guī)劃等數(shù)學(xué)規(guī)劃問(wèn)題求解的軟件。下面介紹Lingo軟件求解簡(jiǎn)單數(shù)學(xué)規(guī)劃模型的一般編程方法:
實(shí)驗(yàn)內(nèi)容(指派問(wèn)題)考慮指派m個(gè)人完成n項(xiàng)任務(wù)(每人單獨(dú)承擔(dān)一項(xiàng)任務(wù)),使所需的總完成時(shí)間(成本)盡可能短已知某指派問(wèn)題的有關(guān)數(shù)據(jù)(每人完成各任務(wù)所需的時(shí)間)如下表所示,試求解該指派問(wèn)題。
這是一個(gè)的指派問(wèn)題,其中。我們可以用lingo來(lái)求解。 首先,定義變量表示第個(gè)工人完成第項(xiàng)任務(wù)的情況,如果完成則為1,否則為0。因此,我們的目標(biāo)是最小化總完成時(shí)間,即: 其中表示第個(gè)工人完成第項(xiàng)任務(wù)所需的時(shí)間。同時(shí),每個(gè)工人只能完成一項(xiàng)任務(wù),每項(xiàng)任務(wù)也只能由一個(gè)工人完成,因此有以下約束條件:
將上述問(wèn)題輸入lingo代碼中,可以得到如下的lingo代碼:
:表示工人的集合, :表示任務(wù)的集合, 變量:表示工人 完成任務(wù) 的指派情況,取值為 或 。 參數(shù):表示工人 完成任務(wù) 所需的時(shí)間。 目標(biāo)函數(shù): 將每個(gè)工人完成任務(wù)所需的時(shí)間加起來(lái),得到總時(shí)間成本。約束條件: 表示每個(gè)工人只能完成一個(gè)任務(wù);表示每個(gè)任務(wù)只能由一個(gè)工人完成. @for(m(i):@sum(n(j):a(i,j))=1); 表示對(duì)于集合 中的每個(gè)元素 ,都要求 ,即每個(gè)工人只能完成一個(gè)任務(wù)。 @for(n(j):@sum(m(i):a(i,j))=1); 表示對(duì)于集合 中的每個(gè)元素 ,都要求 ,即每個(gè)任務(wù)只能由一個(gè)工人完成。 代碼中的 data: x=15 18 21 24 19 23 22 18 26 18 16 19 19 21 23 17; enddata 表示給參數(shù) 賦值,即將前面定義的 的取值寫入代碼中。
這是一個(gè)線性規(guī)劃問(wèn)題的求解結(jié)果,其中求解器已經(jīng)找到了全局最優(yōu)解。以下是各項(xiàng)指標(biāo)的解釋:
在這個(gè)例子中,求解器找到了全局最優(yōu)解,即問(wèn)題的最小值為70。不可行性度量為0,表示該問(wèn)題有可行解。求解器迭代了7次,尋找最優(yōu)解所需的時(shí)間為0.08秒。該問(wèn)題是一個(gè)線性規(guī)劃問(wèn)題,共有16個(gè)變量和9個(gè)約束條件,其中沒(méi)有非線性變量和非線性約束條件??偡橇阍?cái)?shù)為48,其中沒(méi)有非線性元素。 這些指標(biāo)可以幫助我們了解線性規(guī)劃問(wèn)題的求解過(guò)程和結(jié)果,并且可以幫助我們分析問(wèn)題的復(fù)雜度和規(guī)模。在實(shí)際應(yīng)用中,我們可以根據(jù)這些指標(biāo)來(lái)評(píng)估優(yōu)化問(wèn)題的難度和求解器的性能,以便更好地設(shè)計(jì)和優(yōu)化實(shí)際問(wèn)題的解決方案。 線性規(guī)劃問(wèn)題的輸出結(jié)果,其中包含了變量值、降低成本、松弛變量或剩余變量以及對(duì)偶價(jià)格等信息。 變量值(Value)是指在最優(yōu)解下,每個(gè)變量所對(duì)應(yīng)的取值。例如,X(1,1)的變量值為15,表示在最優(yōu)解下,第一行第一列的變量取值為15。 降低成本(Reduced Cost)是指每個(gè)變量在目標(biāo)函數(shù)中的系數(shù),也就是如果增加一個(gè)單位的變量,目標(biāo)函數(shù)將減少的數(shù)量。例如,A(1,3)的降低成本為5,表示如果增加一個(gè)單位的A(1,3)變量,目標(biāo)函數(shù)將減少5。 松弛變量或剩余變量(Slack or Surplus)是指在約束條件中引入的人工變量,用于將不等式約束轉(zhuǎn)化為等式約束。例如,第一行的第6個(gè)松弛變量的值為0,表示該約束條件是等式約束。 對(duì)偶價(jià)格( Dual Price)是指每個(gè)約束條件對(duì)應(yīng)的對(duì)偶變量在對(duì)偶問(wèn)題中的取值,也就是在原始問(wèn)題中增加一個(gè)單位的資源所能提供的最大價(jià)值。例如,第一行的對(duì)偶價(jià)格為-1,表示如果增加一個(gè)單位的第一行資源,目標(biāo)函數(shù)將減少1。對(duì)偶價(jià)格可以用于檢查原始問(wèn)題的靈敏度,即在資源量發(fā)生變化時(shí),目標(biāo)函數(shù)的變化情況。 最后,需要注意的是,這個(gè)輸出結(jié)果中還包含了每個(gè)約束條件的松弛或者剩余量。如果約束條件的松弛或者剩余量為0,表示該約束條件被恰好滿足。如果松弛或者剩余量為正,表示約束條件被過(guò)度滿足,即資源有剩余。如果松弛或者剩余量為負(fù),表示約束條件沒(méi)有被完全滿足,即資源不足。 這些信息可以幫助我們理解線性規(guī)劃問(wèn)題的最優(yōu)解,以及在資源量或者目標(biāo)函數(shù)系數(shù)發(fā)生變化時(shí),問(wèn)題的靈敏度和穩(wěn)定性。 最后得出結(jié)果:第1個(gè)人完成第2項(xiàng),第2人完成第1項(xiàng),第3人完成第3項(xiàng),第4人完成第4項(xiàng)。最短時(shí)間為70。 |
|