數(shù)學(xué)建模參考lingo_第1頁(yè)
數(shù)學(xué)建模參考lingo_第2頁(yè)
數(shù)學(xué)建模參考lingo_第3頁(yè)
數(shù)學(xué)建模參考lingo_第4頁(yè)
數(shù)學(xué)建模參考lingo_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

1Lingo既能求解線性規(guī)劃問(wèn)題

也能求解非線性規(guī)劃問(wèn)題還能求解線性和非線性方程組輸入模型簡(jiǎn)練直觀運(yùn)行速度快、計(jì)算能力強(qiáng)LingoLingo軟件的主窗口(用戶(hù)界面)所有Lingo窗口都在這個(gè)窗口內(nèi)Lingo的界面狀態(tài)行(最左邊顯示“Ready”表示“準(zhǔn)備就緒”)模型窗口(Model

Window)用于輸入LINGO優(yōu)化模型

(即LINGO程序)當(dāng)前光標(biāo)的位置當(dāng)前時(shí)間2LingoLingo工具欄File|Open(F3)打開(kāi)文件File|Print(F7)打印文件Edit|Copy(Ctrl+C)復(fù)制Edit|Undo(Ctrl+Z)取消操作Edit|Find(Ctrl+F)查找Edit|Match(Ctrl+P)匹配括號(hào)LINGO|Solution(Alt+O)顯示解答LINGO|OptionsParenthesis(Ctrl+I)選項(xiàng)設(shè)置Window|CloseAll(Alt+X)關(guān)閉所有窗口File|New(F2)新建文件File|Save(F4)保存文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)

粘貼Edit|Redo(Ctrl+Y)恢復(fù)操作LINGO|Solve(Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型圖示W(wǎng)indow|Send

to

Back(Ctrl+B)窗口后置Window|Tile(Alt+T)平鋪窗口上下文相關(guān)的幫助Help|Contents(F1)在線幫助Edit

|

GoTo

Line(Ctrl+T)定位某行3Lingo4例1.用LINGO程序求解非線性方程組

LINGO在求解非線性方程組的解時(shí),內(nèi)核自動(dòng)采取比較好的迭代方法,只需要把非線性方程組寫(xiě)上,一般都非常方便。尤其是當(dāng)知道解在什么范圍內(nèi),寫(xiě)上適當(dāng)?shù)某踔?,更為快?2x2

+

y2

=

22x

+

x

+

y

+

2

y

=

6例如Lingo5點(diǎn)擊這里運(yùn)行程序22x2

+

y2

=

22x

+

x

+

y

+

2

y

=

6Lingo此窗口顯示當(dāng)前運(yùn)行狀態(tài)6當(dāng)前模型的類(lèi)型:LP(線性規(guī)劃模型)QP(二次規(guī)劃模型)ILP(混合整數(shù)線性規(guī)劃模型)IQP(混合整數(shù)二次規(guī)劃模型)PILP(純整數(shù)線性規(guī)劃模型)PIQP(純整數(shù)二次規(guī)劃模型)NLP(非線性規(guī)劃模型)INLP(混合整數(shù)非線性規(guī)劃模型)PINLP(純整數(shù)非線性規(guī)劃模型)求解器狀態(tài)框7Lingo這個(gè)量中沒(méi)有考慮用上下界命令形式給出的約束)迭代次數(shù)當(dāng)前解的狀態(tài):"Global

Optimum"(全局最優(yōu)解)"Local

Optimum"(局部最優(yōu)解)"Feasible"(可行解)

"Infeasible"(不可行)"Unbounded"(無(wú)界)"Interrupted"(中斷)"Undetermined"(未解決)當(dāng)前已得到的不可行解的總量:實(shí)數(shù)(即使該值=0,當(dāng)

解的目標(biāo)函數(shù)值目前為止的

前解也可能不可行,因?yàn)?Lingo擴(kuò)展的求解器(求解程序)狀態(tài)框使用的特殊求解程序:B-and-B(分枝定界算法)Global(全局最優(yōu)求解程序)Multistart(用多個(gè)初始點(diǎn)求解的程序)目前為止找到的可行解的最佳目標(biāo)函數(shù)值目標(biāo)函數(shù)值的邊界特殊求解程序當(dāng)前運(yùn)行步數(shù):分枝數(shù)(對(duì)B-and-B程序);子問(wèn)題數(shù)(對(duì)Global程序);初始點(diǎn)數(shù)(對(duì)Multistart程序)有效步數(shù)9LingoVariables(變量數(shù)量):變量總數(shù)(Total)非線性變量數(shù)(Nonlinear)整數(shù)變量數(shù)(Integer)Constraints(約束數(shù)量):約束總數(shù)(Total)非線性約束個(gè)數(shù)(Nonlinear)Nonzeros(非零系數(shù)數(shù)量):總數(shù)(Total)非線性項(xiàng)系數(shù)個(gè)數(shù)(Nonlinear)Generator

Memory

Used

(K)(內(nèi)存使用量)Elapsed

Runtime

(hh:mm:ss)(求解花費(fèi)的時(shí)間)10Lingo找到可行解不可行程度擴(kuò)展的求解步驟總的求解迭代次數(shù)求解結(jié)果松弛或剩余第1個(gè)等式左右誤差第2個(gè)等式左右誤差11Lingo例2.編寫(xiě)一個(gè)簡(jiǎn)單的LINGO程序求解下面的二次規(guī)劃規(guī)劃問(wèn)題max 98x1

+227x2

-

x1

-

0.3x1x2

-

2x2

;2

2s.t.x1

+

2x2≤200,x1≤x2,x1,x2≥0

為整數(shù)12Lingo整型變量求最大值max 98x1

+

227x2

-

x12

-

0.3x1x2

-

2x22;s.t.x1

+

2x2≤200,x1≤x2,x1,x2≥0

為整數(shù)語(yǔ)句的順序

可以任意擺放Lingo中默認(rèn)所有變量值非負(fù)13Lingo目標(biāo)函數(shù)值決策變量值第1式剩余52目標(biāo)函數(shù)值第3式剩余14影子價(jià)格決策變量增加1時(shí)目標(biāo)函數(shù)的變化量Lingo14“ReducedCost”列出最優(yōu)單純形表中判別數(shù)所在行的變量的系數(shù),表示當(dāng)變量有微小變動(dòng)時(shí),目標(biāo)函數(shù)的變化率;“SlackorSurplus”松弛或剩余,即約束條件左邊與右邊的差值,當(dāng)約束條件的左右兩邊相等時(shí),其值為0;“DualPrice”影子價(jià)格,表示當(dāng)對(duì)應(yīng)約束有微小變動(dòng)時(shí),目標(biāo)函數(shù)的變化率。Lingo15Lingo的語(yǔ)法規(guī)定:①求目標(biāo)函數(shù)的最大值用max=…最小值用

min

=

來(lái)表示②每個(gè)語(yǔ)句必須以分號(hào)“;”結(jié)束,每行可以有多個(gè)語(yǔ)句,語(yǔ)句可以跨行③

!開(kāi)頭以

;

結(jié)束的語(yǔ)句是注釋語(yǔ)句④可以給語(yǔ)句加上標(biāo)號(hào),如[R1]

x1

+2

*x2

<=

200;Lingo16Lingo的變量定界函數(shù)及其功能@bin(x)限制x為0或1@gin(x)限制x為整數(shù)@free(x)取消對(duì)變量x的限制@bnd(L,x,U)限制L≤x≤U備注:Lingo默認(rèn)所有變量均≥0LingoLingo中的邏輯運(yùn)算符及其作用#EQ#==#NE#~=#GT#>#GE#>=#LT#<#LE#<=#NOT#非運(yùn)算#AND#與運(yùn)算#OR#或運(yùn)算

17Lingo18輔助函數(shù)if@if(logical_condition,true_result,false_result)@if函數(shù)評(píng)價(jià)一個(gè)邏輯表達(dá)式logical_condition如果為真,返回true_

result,否則返回false_result。Lingo19例3.求解如下最優(yōu)化問(wèn)題x

+

y

>=

3030

+

y,2x.x

<=10x

>10y

<=102

y,

y

>10

2x

+10,f

(x)

=s.t.

f

(

y)

=

min

f

(x)

+

f

(

y)Lingo20其LINGO代碼如下:min

=

fx+fy;fx=2*

x+

@if(x#GT#10,0,10);fy

=

@if(y

#gt#

10,2*y,30+y);x+y>=30;Lingo21例4.計(jì)算6個(gè)發(fā)點(diǎn)8個(gè)收點(diǎn)的最小費(fèi)用運(yùn)輸問(wèn)題,產(chǎn)銷(xiāo)單位運(yùn)價(jià)如下表:V1V2V3V4V5V6V7V8產(chǎn)量W16267425960W24953858255W35219743351W47673927143W52395726541W65522814352銷(xiāo)量3537223241324338Lingo22可以建立如下數(shù)學(xué)模型:min686

8i

=1,2,...,6,

j

=1,2,...,8

i=1xij

?

0,s.t.

xij

=

d

j

,

j

=1,2,...,8j

=1

xij

ai

,

i

=1,2,...,6i=1

j

=1z

=

cij

xij其中:c

表示從第i個(gè)發(fā)點(diǎn)ij到第j個(gè)收點(diǎn)的單位貨物運(yùn)價(jià)a

表示第i個(gè)發(fā)點(diǎn)的i最大供貨量d

表示第j個(gè)收點(diǎn)的j定貨量23Lingo1.定義集合sets:fad/1..6/:Ai;!定義集合fad有6個(gè)元素;shoud/1..8/:Dj;

!定義集合shoud有8個(gè)元素;links(fad,shoud):c,x;!links是在前兩個(gè)集合fad和shoud的基礎(chǔ)上定義的一個(gè)新的集合,它實(shí)際上是前2個(gè)集合的笛卡爾積,其屬性c,x是一個(gè)6*8的矩陣;endsetsLingo242.初始化數(shù)據(jù)data:Ai=

60,55,51,43,41,52;Dj

=

35,37,22,32,41,32,43,38;c

=

6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;enddata數(shù)據(jù)段以data:開(kāi)頭以enddata結(jié)束Lingo253.目標(biāo)函數(shù):總的運(yùn)輸費(fèi)用最少用Lingo可表示為:min

=

@sum(links(i,j):c(i,j)

*

x(i,j));6

8mini=1

j

=1z

=

cij

xijLingo264.約束條件1:用Lingo可表示為:@for(fad(i):@sum(shoud(j):x(i,j))

<=

Ai(i));8各發(fā)點(diǎn)的運(yùn)出總量不超過(guò)其產(chǎn)量

xij

ai

,

i

=1,2,...,6j

=1Lingo275.約束條件2:用Lingo可表示為:@for(shoud(j):@sum(fad(i):x(i,j))

=

Dj(j));6各收點(diǎn)收到的總量不超過(guò)其銷(xiāo)量

xij

=

d

j

,

j

=1,2,...,8i=1Lingo28Lingo29練習(xí):SAILCO公司需要決定下四個(gè)季度的帆船生產(chǎn)量。下四個(gè)季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時(shí)滿(mǎn)足。每個(gè)季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為400美元如果加班生產(chǎn),每條船的生產(chǎn)費(fèi)用為450美元。每個(gè)季度末,每條船的庫(kù)存費(fèi)用為20美元。假定生產(chǎn)提前期為0,初始庫(kù)存為10條船。如何安排生產(chǎn)可使總費(fèi)用最???Lingo練習(xí):SAILCO公司需要決定下四個(gè)季度的帆船生產(chǎn)量。下四個(gè)季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時(shí)滿(mǎn)足。每個(gè)季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費(fèi)用為400美元如果加班生產(chǎn),每條船的生產(chǎn)費(fèi)用為450美元。每個(gè)季度末,每條船的庫(kù)存費(fèi)用為20美元。假定生產(chǎn)提前期為0,初始庫(kù)存為10條船。如何安排生產(chǎn)可使總費(fèi)用最小?30Lingo31Lingo中的數(shù)學(xué)函數(shù)及其返回值@abs(x)x

的絕對(duì)值@sin(x)sin(x)@cos(x)cos(x)@tan(x)tan(x)@log(x)ln(x)@exp(x)ex@sign(x)x

的符號(hào),1

或-1@floor(x)x

的整數(shù)部分Lingo32Lingo中的集合操作函數(shù)及其功能@for(s:e)該函數(shù)常用在約束條件中,表示對(duì)集合s中的每個(gè)成員都生成一個(gè)約束條件,約束條件的具體形式由e給出@sum(s:e)對(duì)集合s中的每個(gè)成員,先求得e的值,再返回這些值的和@max(s:e)對(duì)集合s中的每個(gè)成員,先求得e的值,再返回這些值的最大值@min(s:e)對(duì)集合s中的每個(gè)成員,先求得e的值,再返回這些值的最小值@in(s:e1)如果成員e1在集合s中,則返回1,否則返回0@size(s)返回集合s中的成員個(gè)數(shù)@index(s:ek)返回成員ek在集合s中的順序號(hào)Lingo33Lingo中的文件輸入輸出函數(shù)@file(fn)模型引用其它ASCII碼文件中的數(shù)據(jù)或文本,參數(shù)fn是文件名,該文件中的數(shù)據(jù)之間用逗號(hào)分開(kāi),不同部分用~分開(kāi)@odbc(fn)提供Lingo與ODBC(Open

Data

BaseConnection,開(kāi)放式數(shù)據(jù)庫(kù)連接)的接口@ole(fn)提供Lingo與OLE(Object

Linking

andEmbeding,對(duì)象鏈接與嵌入)的接口@text(fn)向文本文件輸出數(shù)據(jù),通常用于將計(jì)算結(jié)果寫(xiě)入文件,參數(shù)fn是文件名,如果省略該參數(shù),則輸出到標(biāo)準(zhǔn)輸出設(shè)備(屏幕)Lingo34Lingo中的結(jié)果報(bào)告函數(shù)@iters()只能在程序的數(shù)據(jù)段使用,調(diào)用時(shí)不需要任何參數(shù),返回Lingo求解器計(jì)算所使用的總迭代次數(shù)@newline(n)在輸出設(shè)備上輸出n個(gè)新行@strlen(str)返回字串“str”的長(zhǎng)度,如@strlen(123)返回值為3@name(x)返回變量名@write(…)輸出一系列結(jié)果@writefor()函數(shù)@write在循環(huán)情況下的推廣,輸出集合上定義的屬性對(duì)應(yīng)的多個(gè)變量的取值LingoLingo中的結(jié)果報(bào)告函數(shù)符號(hào)“*”在@write和@writefor函數(shù)中,可以使用符號(hào)“*”表示將一個(gè)字符串重復(fù)多次,用法是將“*”放在一個(gè)正整數(shù)n和這個(gè)字符串之前,表示將這個(gè)字符串重復(fù)n次@format(x,p)在@write和@writefor函數(shù)中,@format對(duì)數(shù)值設(shè)定輸出格式。x表示輸出的值,p(格式描述符)表示輸出格式。格式描述符的含義與C語(yǔ)言中的格式描述類(lèi)似,如“12.2f”表示十進(jìn)制數(shù),總共12位,其中有2位小數(shù)@status()返回LINGO求解模型結(jié)束后的最后狀態(tài)Global

Optimum(全局最優(yōu))Infeasible(不可行)Unbounded(無(wú)界)Undetermined(不確定)Interrupted(用戶(hù)人為終止了程序的運(yùn)行)Infeasible

or

Unbounded(通常需要關(guān)閉“預(yù)處理”選項(xiàng)后重新求解模型,以確定究竟是不可行還是無(wú)界)Local

Optimum(局部最優(yōu))Locally

Infeasible(局部不可行)Cutoff(目標(biāo)函數(shù)達(dá)到了指定的誤差水平)

35Numeric

Error(約束中遇到了無(wú)定義的數(shù)學(xué)操作)Lingo36數(shù)據(jù)傳遞·通過(guò)文件輸入輸出數(shù)據(jù)可以將LINGO程序和程序處理的數(shù)據(jù)分離開(kāi)來(lái)?!ぁ俺绦蚝蛿?shù)據(jù)的分離”是結(jié)構(gòu)化程序設(shè)計(jì)、面向?qū)ο缶幊痰幕疽?。?shí)際問(wèn)題通常需要處理大規(guī)模的實(shí)際數(shù)據(jù),而這些數(shù)據(jù)通常都是在其它應(yīng)用系統(tǒng)中生成的,或者已經(jīng)存放在其它應(yīng)用系統(tǒng)中的某個(gè)文件或數(shù)據(jù)庫(kù)中LINGO計(jì)算的結(jié)果需要以文件方式提供給其它應(yīng)用系統(tǒng)使用Lingo37數(shù)據(jù)傳遞:通過(guò)剪切板·粘貼的數(shù)據(jù)保持了Word、Excel表格的風(fēng)格且LINGO能夠正常識(shí)別甚至編輯其字體等。·由于LINGO對(duì)集合的屬性是按列賦值的,所以在外部文件中的數(shù)據(jù)與實(shí)際需要復(fù)制的數(shù)據(jù)可能發(fā)生行列顛倒的情況,需進(jìn)行調(diào)整·類(lèi)似的方法也可以將LINGO程序中的數(shù)據(jù)復(fù)制到其他外部文件中。Lingo數(shù)據(jù)傳遞:通過(guò)剪切板——示例38Lingo數(shù)據(jù)傳遞——通過(guò)剪切板——示例39Lingo40數(shù)據(jù)傳遞:與txt文檔交換數(shù)據(jù)數(shù)據(jù)間可用空格、table、逗號(hào),隔開(kāi)不同組數(shù)據(jù)間可用’~’隔開(kāi)Lingo數(shù)據(jù)傳遞:與文本文檔交換數(shù)據(jù)41讀入數(shù)據(jù)將數(shù)據(jù)輸出到文本文件Lingo數(shù)據(jù)傳遞:與txt文檔交換數(shù)據(jù)上述程序的輸出結(jié)果保存在D:\myDocument下其內(nèi)容為:42Lingo數(shù)據(jù)傳遞:與Excel文檔交換數(shù)據(jù)@OLE()可用于集合段,數(shù)據(jù)段,初始段。調(diào)用格式:@OLE(spreadsheet_file

[,

range_name_list])輸入數(shù)據(jù):“屬性(或變量)=@OLE(...)”輸出數(shù)據(jù):“@OLE(...)=屬性(或變量)”電子表格文件名數(shù)據(jù)的單元范圍4344Lingo數(shù)據(jù)傳遞:與Excel文檔交換數(shù)據(jù)用“插入︱名稱(chēng)︱定義”命名選中區(qū)域元命名為“發(fā)點(diǎn)”B1:I1單元A2:A7單命名為“收8:I8單元點(diǎn)”

B命B8:I8單元

J2:J7單元命名為“單價(jià)”名為“銷(xiāo)量”

命名為“產(chǎn)量”Lingo數(shù)據(jù)傳遞:與Excel文檔交換數(shù)據(jù)45輸入數(shù)據(jù)x輸出數(shù)據(jù)Lingo數(shù)據(jù)傳遞:與Excel文檔交換數(shù)據(jù)46采用OLE方式傳送數(shù)據(jù)Excel文件名指定的接收單元范圍為:運(yùn)量找到一個(gè)名為運(yùn)量的域名不匹配的單元數(shù)為0傳輸了48個(gè)數(shù)值輸出總結(jié)報(bào)告Lingo47例5.【下料問(wèn)題】鋼管原材料每根長(zhǎng)19m,現(xiàn)需要A,B,C,D四種鋼管部件,長(zhǎng)度分別為

4m,5m,6m,8m,數(shù)量分別為50,10,20,15根因不同下料方式之間的轉(zhuǎn)換會(huì)增加成本,

因而要求不同的下料方式不超過(guò)3種,試安排下料方式,使所需鋼管原材料最少?Lingo48i

ijmj

=1ki=1ki=1x

,n

?0且為整數(shù)nij

xi

?

bj

,

j

=1,2,...,

ms.t.L

-

min{

l

j

}

<

ljnij

L,

i

=1,2,...,

kmin

z

=

xiLingo49k:用到k種下料方式xi:第i種下料方式所切割的原料鋼管數(shù)量

nij:第i種下料方式得到的第j種部件的數(shù)量

bj:第j種部件的需求量L:鋼管原料的長(zhǎng)度

lj:第j種部件的長(zhǎng)度Lingo501.定義集合sets:!切割方法3種,x表示對(duì)應(yīng)每種切割方法的鋼管原材料根數(shù);cutfa/1,2,3/:x;!四種部件,L是部件長(zhǎng)度,need是每種部件的需求量;buj/1..4/:L,need;!第i種切割方法所切割出的第j種部件的數(shù)量用nij表示;shul(cutfa,buj):n;endsetsLingo512.初始化數(shù)據(jù)data:L

=4568;need

=

50

10

20

15;ZL

=

19;enddataLingo523.目標(biāo)函數(shù)用Lingo可表示為:!目標(biāo)函數(shù)是3種切割方法所切割的鋼管總根數(shù)最少;min

=

@sum(cutfa

:

x);kmin

z

=

xii=153Lingo4.約束條件!切割出的每種部件總數(shù)滿(mǎn)足需求量;@for(buj(j)

:

@sum(cutfa(i)

:

n(i,j) *

x(i))

>=

need(j));!每種切割方法切割出的部件長(zhǎng)度之和必須小于19;@for(cutfa(i):@sum(buj(j):n(i,j)*

L(j))<=ZL);!每種切割方法切割出的部件余料應(yīng)小于4;@for(cutfa(i)

:

@sum(buj(j)

:

n(i,j)

*

L(j))

>

ZL

-@min(b

溫馨提示

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

評(píng)論

0/150

提交評(píng)論