用LINGO求解線性規劃問題

2022-11-06 07:54:05 字數 6218 閱讀 7090

實驗1 用lingo求解線性規劃問題

lingo使用簡介

lingo軟體是美國的lindo系統公司(lindo system inc)開發的一套用於求解最優化問題的軟體包.lingo除了能用於求解線性規劃和二次規劃外,還可以用於非線性規劃求解以及一些線性和非線性方程(組)的求解.lingo軟體的最大特色在於它允許優化模型中的決策變數為整數,而且執行速度快.

lingo內建了一種建立最優化模型的語言,可以簡便地表達大規模問題,利用lingo高效的求解器可快速求解並分析結果,這裡簡單介紹lingo的使用方法.

lingo可以求解線性規劃、二次規劃、非線性規劃、整數規劃、圖論及網路優化和排隊論模型中的最優化問題等.

乙個lingo程式一般會包含集合段、資料輸入段、優化目標和約束段、初始段和資料預處理段等部分,每一部分有其獨特的作用和語法規則,讀者可以通過查閱相關的參考書或者lingo的help檔案詳細了解,這裡就不展開介紹了.

lingo的主要功能特色為:既能求解線性規劃問題,也有較強的求解非線性規劃問題的能力;輸入模型簡練直觀;運算速度快、計算能力強;內建建模語言,提供幾十個內部函式,從而能以較少語句,較直觀的方式描述大規模的優化模型;將集合的概念引入程式語言,很容易將實際問題轉換為lingo模型;並且能方便地與excel、資料庫等其他軟體交換資料.

lingo的語法規定:

(1)求目標函式的最大值或最小值分別用max=…或min=…來表示;(2)每個語句必須以分號「;」結束,每行可以有許多語句,語句可以跨行;(3)變數名稱必須以字母(a~z)開頭,由字母、數字(0~9)和下劃線所組成,長度不超過32個字元,不區分大小寫;

(4)可以給語句加上標號,例如[obj] max=200*x1+300*x2;(5)以驚嘆號「!」開頭,以分號「;」結束的語句是注釋語句;

(6)如果對變數的取值範圍沒有作特殊說明,則預設所有決策變數都非負;

(7)lingo模型以語句「model:」開頭,以「end」結束,對於比較簡單的模型,這兩個語句可以省略.

實驗目的

1.對於給定的實際應用問題,正確的建立線性規劃問題數學模型,並用lingo求解;2.掌握靈敏度分析以及資源的影子**的相關分析方法.

實驗資料與內容

問題1.1某工廠在計畫期內要安排生產a、b兩種產品,已知生產單位產品所需裝置台時及對甲、乙兩種原材料的消耗,有關資料如表1.1.

問:應如何安排生產計畫,使工廠獲利最大?1資源

1 28台時裝置

4 016公斤甲

0 412公斤乙

單位利潤2元3元

建立線性規劃問題的數學模型,用lingo求出最優解並做相應的分析.

問題1.2某公司飼養實驗用的動物以供**,已知這些動物的生長對飼料中3種營養成分(蛋白質、礦物質和維生素)特別敏感,每個動物每週至少需要蛋白質60g,礦物質3g,維生素8mg,該公司能買到5種不同的飼料,每種飼料1kg所含各種營養成分和成本如表1.2所示,如果每個小動物每週食用飼料不超過52kg,求既能滿足動物生長需要,又使總成本最低的飼料配方.

表1.2配料(食譜)問題的資料飼料

營養蛋白質(g)礦物質(g)維生素(mg)

營養最低要求

0.3 210.61.860

表1.1資源配置問題的資料產品

a b可利用資源

a1a2a3a4a5

0.1 0.050.020.20.050.05 0.10.02 0.20.08

380.5成本(元/kg)0.2 0.7 0.4 0.3

實驗指導

問題1.1設計畫生產a,b兩種產品分別為x1,x2,則建立線性規劃問題數學模型

maxs=2x1+3x2x1+2x2≤8

4x≤4x2≤12x1,x2≥0

在lingo的model視窗內輸入如下模型:model:

max=2*x1+3*x2;x1+2*x2<=8;4*x1<=16;4*x2<=12;end

選選單lingo|solve(或按ctrl+s),或用滑鼠點選「求解」按紐,如果模型有語法錯誤,則彈出乙個標題為「lingo error message」(錯誤資訊)的視窗,指出在哪一行有怎樣的錯誤,每一種錯誤都有乙個編號(具體含義可查閱相關文獻或lingo的help).改正錯誤以後再求解,如果語法通過,lingo用內部所帶的求解程式求出模型的解,然後彈出乙個標題為「lingo solver status」(求解狀態)的視窗,其內容為變數個數、約束條件個數、優化狀態、耗費記憶體、所花時間等資訊,點選close關閉視窗,螢幕上出現標題為「solution report」(解的報告)的資訊視窗,顯示優化計算(線性規劃中換基迭代)的步數、優化後的目標函式值、列出各變數的計算結果.求解結果:

2global optimal solution found at iteration:5objectivevalue: 14.00000

variablevaluereduced costx14.0000000.000000x22.

0000000.000000row slackorsurplus dualprice114.000001.

00000020.0000001.50000030.

0000000.125000044.0000000.

000000

該報告說明:執行5步找到全域性最優解,目標函式值為14,變數值分別為x1=4,x2=2.「reduced cost」的含義是需縮減成本係數或需增加利潤係數(最優解中取值非零的決策變數的reduced cost值等於零).

「row」是輸入模型中的行號,目標函式是第一行;「slack orsurplus」的意思是鬆弛或剩餘,即約束條件左邊與右邊的差值,對於「≤」的不等式,右邊減左邊的差值為slack(鬆弛),對於「≥」的不等式,左邊減右邊的差值為surplus(剩餘),當約束條件兩邊相等時,鬆弛或剩餘的值等於零.「dual price」的意思是對偶**(或稱為影子**),上述報告中row2的鬆弛值為0,表明生產甲產品4單位、乙產品2單位,所需裝置8台時已經飽和,對偶**1.5的含義是:

如果裝置增加1台時,能使目標函式值增加1.5.報告中row4的鬆弛值為4,表明生產甲產品4單位、乙產品2單位,所需原材料乙8公斤還剩餘4公斤,因此增加原材料乙不會使目標函式值增加,所以對偶**為0.

問題1.2設需要飼料a1,a2,a3,a4,a5分別為x1,x2,x3,x4,x5kg,則建立線性規劃數學模型:

mins=0.2x1+0.7x2+0.4x3+0.3x4+0.5x50.3x1+2x2+x3+0.6x4+1.8x5≥60

0.1x+0.05x+0.02x+0.2x+0.05x≥3

12345

2345

1x1,x2,x3,x4,x5≥0

在lingo的model視窗內輸入如下模型:

min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;

0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;

0.1*x1+0.05*x2+0.

02*x3+0.2*x4+0.05*x5>3;0.

05*x1+0.1*x2+0.02*x3+0.

2*x4+0.08*x5>8;x1+x2+x3+x4+x5<52;求解輸出結果如下:

global optimal solution found at iteration:4objectivevalue: 22.40000

variablevaluereduced costx10.0000000.7000000x212.

000000.000000x30.0000000.

6166667x430.000000.000000x510.

000000.000000

3row slackorsurplus dualprice122.40000-1.00000020.

000000-0.583333334.1000000.

00000040.000000-4.16666750.

0000000.8833333

因此,每週每個動物的配料為飼料a2、a4、a5分別為12kg、30kg和10kg,合計為

52kg,可使得飼養成本達到最小,最小成本為22.4元;不選用飼料a1和a3的原因是因為這兩種飼料的**太高了,沒有競爭力.「reduced cost」分別等於0.

7和0.617,說明當這不僅選用這兩種飼料而且使得飼養成本降兩種飼料的**分別降低0.7元和0.

62元以上時,

低.從「slack or surplus」可以看出,蛋白質和維生素剛達到最低標準,礦物質超過最低標準

4.1g;從「dual price」可以得到降低標準蛋白質1單位可使飼養成本降低0.583元,降低標準維生素1單位可使飼養成本降低4.

167元,但降低礦物質的標準不會降低飼養成本,如果動物的進食量減少,就必須選取精一些的飼料但要增加成本,大約進食量降低1kg可使得飼養成本增加0.88元.

對於目標函式係數和約束條件右端常數項的靈敏度分析,可以通過lingo軟體求解的靈敏度分析給出.如果要看靈敏度分析結果,必須啟用靈敏度計算功能才會在求解時給出靈必須執行lingo|options…命令,敏度分析結果,預設情況下這項功能是關閉的.想要啟用它,選擇gengral solver,在dual computation列表框中,選擇prices and ranges選項並確定.

對於例1.1問題進行靈敏度分析,結果如下:

以下是靈敏度分析的結果

ranges in which the basis is unchanged:

objective coefficient ranges

current allowable allowable

variable coefficient increase decrea***12.000000infinity0.5000000x2 3.

000000 1.000000 3.000000

righthand side ranges

row current allowable allowable

rhsincrease decrease

2 8.000000 2.000000 4.

0000003 16.00000 16.00000 8.

000000412.00000infinity4.000000

對於例1.2問題進行靈敏度分析,結果如下:ranges in which the basis is unchanged:objective coefficient ranges

current allowable allowable

variable coefficient increasedecrea***10.2000000infinity0.7000000x20.

7000000infinity0.1358974x30.4000000infinity0.

6166667x4 0.3000000 1.400000 1.

000000x5 0.5000000 0.1247059 infinityrighthand side ranges

row current allowable allowable

rhs increase decrease

2 60.00000 4.800000 4.

80000033.0000004.100000infinity4 8.

000000 0.3428571 0.4800000

45 52.00000 1.846154 1.411765

思考題某投資公司擬制定今後5年的投資計畫,初步考慮下面四個投資專案:

專案a:從第1年到第4年每年年初可以投資,於次年年末收回成本,並可獲利潤15%;專案b:第3年年初可以投資,到第5年年末可以收回成本,並獲得利潤25%,但為了保證足夠的資金流動,規定該項目的投資金額上限為不超過總金額的40%;

專案c:第2年年初可以投資,到第5年年末可以收回成本,並獲得利潤40%,但公司規定該項目的最大投資金額不超過總金額的30%;

專案d:5年內每年年初可以購買公債,於當年年末可以歸還本金,並獲利息6%.該公司現有投資金額100萬元,請幫助該公司制定這些專案每年的投資計畫,使公司到第5年年末核算這5年投資的收益率達到最大.

建立線性規劃問題的數學模型,並用lingo求解.5

用matlab求解線性規劃問題

實驗四用matlab求解線性規劃問題 一 實驗目的 了解matlab的優化工具箱,能利用matlab求解線性規劃問題。二 實驗內容 線性規劃的數學模型有各種不同的形式,其一般形式可以寫為 目標函式 約束條件 這裡稱為目標函式,稱為價值係數,稱為價值向量,為求解的變數,由係數組成的矩陣 稱為不等式約束...

利用Matlab求解線性規劃問題

15.利用matlab求解線性規劃問題 線性規劃是一種優化方法,matlab優化工具箱中有現成函式linprog對如下式描述的lp問題求解 min f x s.t 約束條件 ax b 等式約束條件 aeqx beq lb x ub linprog函式的呼叫格式如下 x linprog f,a,b x...

線性規劃問題建模與求解

一 實驗目的 1 掌握線性規劃問題建模基本方法。2 熟練應用excel 規劃求解 功能對線性規劃問題進行建模與求解。3 掌握線性規劃問題的對偶理論和靈敏度分析。二 實驗裝置 硬體 pc機。軟體 microsoft excel。三 實驗內容 1 建立線性規劃問題的數學模型。2 利用excel 規劃求解...