![lingo軟件-優(yōu)化問題_第1頁](http://file4.renrendoc.com/view4/M00/1D/02/wKhkGGZZECyAfHTfAAGDhErWrG0857.jpg)
![lingo軟件-優(yōu)化問題_第2頁](http://file4.renrendoc.com/view4/M00/1D/02/wKhkGGZZECyAfHTfAAGDhErWrG08572.jpg)
![lingo軟件-優(yōu)化問題_第3頁](http://file4.renrendoc.com/view4/M00/1D/02/wKhkGGZZECyAfHTfAAGDhErWrG08573.jpg)
![lingo軟件-優(yōu)化問題_第4頁](http://file4.renrendoc.com/view4/M00/1D/02/wKhkGGZZECyAfHTfAAGDhErWrG08574.jpg)
![lingo軟件-優(yōu)化問題_第5頁](http://file4.renrendoc.com/view4/M00/1D/02/wKhkGGZZECyAfHTfAAGDhErWrG08575.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
規(guī)劃模型與lingo軟件——2011年數(shù)模培訓(xùn)一、線性規(guī)劃模型例1SAILCO公司需要決定下四個季度的帆船生產(chǎn)量。下四個季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時滿足。每個季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)費用為450美元。每個季度末,每條船的庫存費用為20美元。假定生產(chǎn)提前期為0,初始庫存為10條船。如何安排生產(chǎn)可使總費用最???1.1數(shù)學(xué)建模的五步法Step1提出問題——將問題用數(shù)學(xué)的語言表達(dá)i)列出問題中涉及的變量,包括適當(dāng)?shù)膯挝籖P〔i〕=第i季度正常生產(chǎn)的產(chǎn)量,OP〔i〕=第i季度加班生產(chǎn)的產(chǎn)量,INV〔i〕=第i季度庫存量i=1,2,3,4ii)必要時,用符號表示問題中的常量DEM〔i〕=第i季度的需求量rc=正常生產(chǎn)的費用dc=加班生產(chǎn)的費用ic=庫存費用iii〕提出合理假設(shè)第i季度的庫存量=第i-1季度庫存量+生產(chǎn)數(shù)量-需求量inv〔i〕=inv〔i-1〕+rp〔i〕+op〔i〕-dem〔i〕i=1,2,3,4inv〔0〕=10iv〕用準(zhǔn)確的數(shù)學(xué)術(shù)語描述問題的目標(biāo)目標(biāo):總費用最低即mincc=四個季度費用之和第i季度的費用=當(dāng)季生產(chǎn)費用+庫存費用例1SAILCO公司需要決定下四個季度的帆船生產(chǎn)量。下四個季度的帆船需求量分別是40條,60條,75條,25條,這些需求必須按時滿足。每個季度正常的生產(chǎn)能力是40條帆船,每條船的生產(chǎn)費用為400美元。如果加班生產(chǎn),每條船的生產(chǎn)費用為450美元。每個季度末,每條船的庫存費用為20美元。假定生產(chǎn)提前期為0,初始庫存為10條船。如何安排生產(chǎn)可使總費用最?。?.1數(shù)學(xué)建模的五步法Step2.選擇建模方法——線性規(guī)劃的方法建模
線性規(guī)劃模型的一般形式1.1數(shù)學(xué)建模的五步法目標(biāo)函數(shù)是所有費用的和約束條件主要有兩個:1〕能力限制:2〕產(chǎn)品數(shù)量的平衡方程:加上變量的非負(fù)約束Step3寫出數(shù)學(xué)模型表達(dá)式1.1數(shù)學(xué)建模的五步法Step4求解模型Globaloptimalsolutionfound.Objectivevalue:78450.00Totalsolveriterations:2VariableValueReducedCostRP140.000000.000000RP240.000000.000000RP340.000000.000000RP425.000000.000000OP10.00000020.00000OP210.000000.000000OP335.000000.000000OP40.00000050.00000INV110.000000.000000INV20.00000020.00000INV30.00000070.00000INV40.000000420.0000RowSlackorSurplusDualPrice178450.00-1.00000020.00000030.0000030.00000050.0000040.00000050.00000515.000000.00000060.000000430.000070.000000450.000080.000000450.000090.000000400.0000Step5答復(fù)以下問題1.1數(shù)學(xué)建模的五步法例2投資分配問題某公司有一筆30萬元的資金,準(zhǔn)備今后三年用于以下工程的投資:1.三年內(nèi)每年均可投資,每年獲利為投資額的20%,其本利可用于下一年投資;2.只允許第一年初投資,于第二年末收回,本利合計為投資額的150%,但此類投資額不超過15萬元;3.允許第二年初投入,于第三年末收回,本利合計為投資額的160%,但此類投資額不超過20萬元;4.允許第三年初投入,于第三年末收回,獲利40%,投資額不超過10萬元;試為公司確定一個三年末本利和最大的投資方案第一年末第二年末第三年末第一年初①②第二年初①③第三年初①④收益年份投資年份1.1數(shù)學(xué)建模的五步法變量:xij=第i個工程在第j年的投資額〔元〕i=1,2,3,4j=1,2,3假設(shè):每年年初將資金全部用于投資第i-1年末的回收金額=第i年初的投資金額目標(biāo):第三年末的收益最大1.1數(shù)學(xué)建模的五步法1.1數(shù)學(xué)建模的五步法例3紅綠燈控制問題變量:g〔i〕=第i個路口綠燈的持續(xù)時間〔秒〕r〔i〕=第i個路口紅燈的持續(xù)時間〔秒〕i=1,2,3T=紅綠燈周期假設(shè):每個周期內(nèi),三個路口綠燈時間進(jìn)入收費站的車輛全部通行目標(biāo):收費最大
2lingo軟件的根本使用方法2.1LINGO的界面LINGO軟件的主窗口〔用戶界面〕,所有其他窗口都在這個窗口之內(nèi)。模型窗口〔ModelWindow〕,用于輸入LINGO優(yōu)化模型〔即LINGO程序〕。狀態(tài)行〔最左邊顯示“Ready”,表示“準(zhǔn)備就緒”〕當(dāng)前時間當(dāng)前光標(biāo)的位置運行狀態(tài)窗口Variables〔變量數(shù)量〕:變量總數(shù)〔Total〕、非線性變量數(shù)〔Nonlinear〕、整數(shù)變量數(shù)〔Integer〕。Constraints〔約束數(shù)量〕:約束總數(shù)〔Total〕、非線性約束個數(shù)(Nonlinear)。Nonzeros〔非零系數(shù)數(shù)量〕:總數(shù)〔Total〕、非線性項系數(shù)個數(shù)(Nonlinear)。GeneratorMemoryUsed(K)(內(nèi)存使用量)ElapsedRuntime(hh:mm:ss)〔求解花費的時間〕運行狀態(tài)窗口求解器(求解程序)狀態(tài)框當(dāng)前模型的類型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP〔以I開頭表示IP,以PI開頭表示PIP〕當(dāng)前解的狀態(tài):"GlobalOptimum","LocalOptimum","Feasible","Infeasible“(不可行),"Unbounded“(無界),"Interrupted“(中斷),"Undetermined“(未確定)解的目標(biāo)函數(shù)值當(dāng)前約束不滿足的總量(不是不滿足的約束的個數(shù)):實數(shù)〔即使該值=0,當(dāng)前解也可能不可行,因為這個量中沒有考慮用上下界命令形式給出的約束〕目前為止的迭代次數(shù)運行狀態(tài)窗口擴(kuò)展的求解器(求解程序)狀態(tài)框使用的特殊求解程序:B-and-B(分枝定界算法)Global(全局最優(yōu)求解程序)Multistart(用多個初始點求解的程序)目前為止找到的可行解的最正確目標(biāo)函數(shù)值目標(biāo)函數(shù)值的界特殊求解程序當(dāng)前運行步數(shù):分枝數(shù)(對B-and-B程序);子問題數(shù)(對Global程序);初始點數(shù)(對Multistart程序)有效步數(shù)§LINGO的根本用法的幾點本卷須知LINGO中不區(qū)分大小寫字母;變量和行名可以超過8個字符,但不能超過32個字符,且必須以字母開頭。用LINGO解優(yōu)化模型時已假定所有變量非負(fù)(除非用限定變量取值范圍的函數(shù)@free或@sub或@slb另行說明)。變量可以放在約束條件的右端(同時數(shù)字也可放在約束條件的左端)。但為了提高LINGO求解時的效率,應(yīng)盡可能采用線性表達(dá)式定義目標(biāo)和約束(如果可能的話)。語句是組成LINGO模型的根本單位,每個語句都以分號結(jié)尾,編寫程序時應(yīng)注意模型的可讀性。例如:一行只寫一個語句,按照語句之間的嵌套關(guān)系對語句安排適當(dāng)?shù)目s進(jìn),增強(qiáng)層次感。以感慨號開始的是說明語句(說明語句也需要以分號結(jié)束)〕。2.2LP模型在LINGO中的一個典型輸入方式集合定義部分從(“SETS:”到“ENDSETS”):定義集合及其屬性小結(jié):LINGO模型最根本的組成要素一般來說,LINGO中建立的優(yōu)化模型可以由五個局部組成,或稱為五“段”〔SECTION〕:〔1〕集合段〔SETS〕:以“SETS:”開始,“ENDSETS”結(jié)束,定義必要的集合變量〔SET〕及其元素〔MEMBER,含義類似于數(shù)組的下標(biāo)〕和屬性〔ATTRIBUTE,含義類似于數(shù)組〕。〔2〕目標(biāo)與約束段:目標(biāo)函數(shù)、約束條件等,沒有段的開始和結(jié)束標(biāo)記,因此實際上就是除其它四個段(都有明確的段標(biāo)記)外的LINGO模型。這里一般要用到LINGO的內(nèi)部函數(shù),尤其是與集合相關(guān)的求和函數(shù)@SUM和循環(huán)函數(shù)@FOR等?!?〕數(shù)據(jù)段(DATA):以“DATA:”開始,“ENDDATA”結(jié)束,對集合的屬性(數(shù)組)輸入必要的常數(shù)數(shù)據(jù)。格式為:“attribute(屬性)=value_list(常數(shù)列表);”常數(shù)列表(value_list)中數(shù)據(jù)之間可以用逗號“,”分開,也可以用空格分開(回車等價于一個空格),如上面對DEM的賦值也可以寫成“DEM=40607525;”。在LINGO模型中,如果想在運行時才對參數(shù)賦值,可以在數(shù)據(jù)段使用輸入語句。但這僅能用于對單個變量賦值,輸入語句格式為:“變=?;”。例如,上例中如果需要在求解模型時才給出初始庫存量(記為A),那么可以在模型中數(shù)據(jù)段寫上語句:”A=?;”〔4〕初始段(INIT):以“INIT:”開始,“ENDINIT”結(jié)束,對集合的屬性(數(shù)組)定義初值(因為求解算法一般是迭代算法,所以用戶如果能給出一個比較好的迭代初值,對提高算法的計算效果是有益的)。如果有一個接近最優(yōu)解的初值,對LINGO求解模型是有幫助的。定義初值的格式為:“attribute〔屬性〕=value_list〔常數(shù)列表〕;”這與數(shù)據(jù)段中的用法是類似的?!?〕計算段(CALC):以“CALC:”開始,“ENDCALC”結(jié)束,對一些原始數(shù)據(jù)進(jìn)行計算處理。在實際問題中,輸入的數(shù)據(jù)通常是原始數(shù)據(jù),不一定能在模型中直接使用,可以在這個段對這些原始數(shù)據(jù)進(jìn)行一定的“預(yù)處理”,得到模型中真正需要的數(shù)據(jù)。例如上例,如果希望得到全年的總需求和季度平均需求,可以增加這個段:CALC:T_DEM=@SUM(quarters:DEM);!總需求;A_DEM=T_DEM/@size(quarters);!平均需求;ENDCALC注:上面的兩個語句不能交換順序,因為計算A_DEM必須要用到T_DEM的值。此外,在計算段中只能直接使用賦值語句,而不能包含需要經(jīng)過解方程或經(jīng)過求解優(yōu)化問題以后才能決定的變量。2.3Lingo中集合的根本用法集合——用變量的下標(biāo)來構(gòu)造具有某個集合下標(biāo)的變量為該集合下的屬性四個季度組成的集合QUARTERS={1,2,3,4},它們就是上面數(shù)組的下標(biāo)集合,而數(shù)組DEM,RP,OP,INV對集合QUARTERS中的每個元素1,2,3,4分別對應(yīng)于一個值。LINGO正是充分利用了這種數(shù)組及其下標(biāo)的關(guān)系,引入了“集合”及其“屬性”的概念,把QUARTERS={1,2,3,4}稱為集合,把DEM,RP,OP,INV稱為該集合的屬性(即定義在該集合上的屬性)。集合元素及集合的屬性確定的所有變量集合QUARTERS的元素1234定義在集合QUARTERS上的屬性DEMDEM(1)DEM(2)DEM(3)DEM(4)RPRP(1)RP(2)RP(3)RP(4)OPOP(1)OP(2)OP(3)OP(4)INVINV(1)INV(2)INV(3)INV(4)QUARTERS集合的屬性DEM
RPOP
INVQUARTERS集合23411.Setname是你選擇的來標(biāo)記集的名字,最好具有較強(qiáng)的可讀性。集名字必須嚴(yán)格符合標(biāo)準(zhǔn)命名規(guī)那么:以拉丁字母或下劃線〔_〕為首字符,其后由拉丁字母〔A—Z〕、下劃線、阿拉伯?dāng)?shù)字〔0,1,…,9〕組成的總長度不超過32個字符的字符串,且不區(qū)分大小寫。注意:該命名規(guī)那么同樣適用于集成員名和屬性名等的命名。2.Member_list是集成員列表。如果集成員放在集定義中,那么對它們可顯式羅列和隱式羅列兩種方式。如果集成員不放在集定義中,那么可以在隨后的數(shù)據(jù)局部定義它們。①當(dāng)顯式羅列成員時,必須為每個成員輸入一個不同的名字,中間用空格或逗號擱開,允許混合使用。例2.1可以定義一個名為students的原始集,它具有成員John、Jill、Rose和Mike,屬性有sex和age:sets:students/JohnJill,RoseMike/:sex,age;endsets原始集合的定義語法:setname[/member_list/][:attribute_list];②當(dāng)隱式羅列成員時,不必羅列出每個集成員。可采用如下語法:setname/member1..memberN/[:attribute_list];這里的member1是集的第一個成員名,memberN是集的最末一個成員名。LINGO將自動產(chǎn)生中間的所有成員名。LINGO也接受一些特定的首成員名和末成員名,用于創(chuàng)立一些特殊的集。列表如下:隱式成員列表格式例如所產(chǎn)生集成員③集成員不放在集定義中,而在隨后的數(shù)據(jù)局部來定義。例2.2!集局部;sets:students:sex,age;endsets!數(shù)據(jù)局部;data:students,sex,age=John116Jill014Rose017Mike113;enddata隱式成員列表格式示例所產(chǎn)生集成員1..n1..51,2,3,4,5StringM..StringNCar2..car14Car2,Car3,Car4,…,Car14DayM..DayNMon..FriMon,Tue,Wed,Thu,FriMonthM..MonthNOct..JanOct,Nov,Dec,JanMonthYearM..MonthYearNOct2001..Jan2002Oct2001,Nov2001,Dec2001,Jan2002注:parent_set_list是已定義的集的列表,多個時必須用逗號隔開。如果沒有指定成員列表,那么LINGO會自動創(chuàng)立父集成員的所有組合作為派生集的成員。派生集的父集既可以是原始集,也可以是其它的派生集。例sets:product/AB/;machine/MN/;week/1..2/;allowed(product,machine,week):x;endsets派生集合的定義:setname(parent_set_list)[/member_list/][:attribute_list];LINGO生成了三個父集的所有組合共八組作為allowed集的成員。列表如下:編號成員1(A,M,1)2
(A,M,2)3
(A,N,1)4
(A,N,2)5
(B,M,1)6
(B,M,2)7
(B,N,1)8
(B,N,2)稀疏集與稠密集成員列表被忽略時,派生集成員由父集成員所有的組合構(gòu)成,這樣的派生集成為稠密集。如上例如果限制派生集的成員,使它成為父集成員所有組合構(gòu)成的集合的一個子集,這樣的派生集成為稀疏集。個派生集的成員列表有兩種方式生成:①顯式羅列;②設(shè)置成員資格過濾器。當(dāng)采用方式①時,必須顯式羅列出所有要包含在派生集中的成員,并且羅列的每個成員必須屬于稠密集。使用前面的例子,顯式羅列派生集的成員:allowed(product,machine,week)/AM1,AN2,BN1/;例sets:!學(xué)生集:性別屬性sex,1表示男性,0表示女性;年齡屬性age.;students/John,Jill,Rose,Mike/:sex,age;!男學(xué)生和女學(xué)生的聯(lián)系集:友好程度屬性friend,[0,1]之間的數(shù)。;linkmf(students,students)|sex(&1)#eq#1#and#sex(&2)#eq#0:friend;!男學(xué)生和女學(xué)生的友好程度大于0.5的集;linkmf2(linkmf)|friend(&1,&2)#ge#0.5:x;endsetsdata:sex,age=116014017013;friend=0.30.50.6;enddata用豎線〔|〕來標(biāo)記一個成員資格過濾器的開始。#eq#是邏輯運算符,用來判斷是否“相等”,3.模型的數(shù)據(jù)局部數(shù)據(jù)局部以關(guān)鍵字“data:”開始,以關(guān)鍵字“enddata”結(jié)束。其語法如下:object_list=value_list;對象列〔object_list〕包含要指定值的屬性名。如果對象列中有多個屬性名,那么它們的類型必須一致。如果對象列中有一個集名,那么對象列中所有的屬性的類型就是這個集。數(shù)值列〔value_list〕包含要分配給對象列中的對象的值,用逗號或空格隔開。注意屬性值的個數(shù)必須等于集成員的個數(shù)??聪旅娴睦印ets:set1/A,B,C/:X,Y;endsetsdata:X,Y=142536;enddata例3.1sets:set1/A,B,C/:X,Y;endsetsdata:X=1,2,3;Y=4,5,6;enddata在某些情況,對于模型中的某些數(shù)據(jù)并不是定值。譬如模型中有一個通貨膨脹率的參數(shù)我們想在2%至6%范圍內(nèi),對不同的值求解模型,來觀察模型的結(jié)果對通貨膨脹的依賴有多么敏感。我們把這種情況稱為實時數(shù)據(jù)處理〔whatifanalysis〕。LINGO有一個特征可方便地做到這件事。在本該放數(shù)的地方輸入一個問號〔?〕。例3.2data:interest_rate,inflation_rate=.085?;enddata每一次求解模型時,LINGO都會提示為參數(shù)inflation_rate輸入一個值。在WINDOWS作系統(tǒng)下,將會接收到一個類似下面的對話框:
直接輸入一個值再點擊OK按鈕,LINGO就會把輸入的值指定給inflation_rate,然后繼續(xù)求解模型。除了參數(shù)之外,也可以實時輸入集的屬性值,但不允許實時輸入集成員名。實時數(shù)據(jù)處理運算符及其優(yōu)先級算術(shù)運算符加、減、乘、除、乘方等數(shù)學(xué)運算(即數(shù)與數(shù)之間的運算,運算結(jié)果也是數(shù))。LINGO中的算術(shù)運算符有以下5種:+〔加法〕,—〔減法或負(fù)號〕,*〔乘法〕,/〔除法〕,^(求冪)。邏輯運算符運算結(jié)果只有“真”(TRUE)和“假”(FALSE)兩個值(稱為“邏輯值”),LINGO中用數(shù)字1代表TRUE,其他值(典型的值是0)都是FALSE。在LINGO中,邏輯運算(表達(dá)式)通常作為過濾條件使用,邏輯運算符有9種,可以分成兩類:#AND#(與),#OR#(或),#NOT#(非):邏輯值之間的運算,它們操作的對象本身已經(jīng)是邏輯值或邏輯表達(dá)式,計算結(jié)果也是邏輯值。#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“數(shù)與數(shù)之間”的比較,也就是它們操作的對象本身必須是兩個數(shù),計算得到的結(jié)果是邏輯值。關(guān)系運算符表示是“數(shù)與數(shù)之間”的大小關(guān)系,在LINGO中用來表示優(yōu)化模型的約束條件。LINGO中關(guān)系運算符有3種:<(即<=,小于等于),=(等于),>(即>=,大于等于)(在優(yōu)化模型中約束一般沒有嚴(yán)格小于、嚴(yán)格大于關(guān)系)運算符的優(yōu)先級優(yōu)先級最高
最低運算符#NOT#—(負(fù)號)^*/+—(減法)#EQ##NE##GT##GE##LT##LE##AND##OR#<=>根本的數(shù)學(xué)函數(shù)在LINGO中建立優(yōu)化模型時可以引用大量的內(nèi)部函數(shù),這些函數(shù)以”@”打頭。LINGO中包括相當(dāng)豐富的數(shù)學(xué)函數(shù),這些函數(shù)的用法非常簡單,下面一一列出。@ABS(X):絕對值函數(shù),返回X的絕對值。@COS(X):余弦函數(shù),返回X的余弦值〔X的單位是弧度〕。@EXP(X):指數(shù)函數(shù),返回@FLOOR(X):取整函數(shù),返回X的整數(shù)局部(向最靠近0的方向取整)。@LGM(X):返回X的伽瑪(gamma)函數(shù)的自然對數(shù)值(當(dāng)X為整數(shù)時LGM(X)=LOG(X-1)??;當(dāng)X不為整數(shù)時,采用線性插值得到結(jié)果)。@LOG(X):自然對數(shù)函數(shù),返回X的自然對數(shù)值。的值(其中e=2.718281...)。根本的數(shù)學(xué)函數(shù)@MOD(X,Y):模函數(shù),返回X對Y取模的結(jié)果,即X除以Y的余數(shù),這里X和Y應(yīng)該是整數(shù)。@POW(X,Y):指數(shù)函數(shù),返回XY的值。@SIGN(X):符號函數(shù),返回X的符號值〔X<0時返回-1,X>=0時返回+1〕。@SIN(X):正弦函數(shù),返回X的正弦值〔X的單位是弧度〕。@SMAX(list):最大值函數(shù),返回一列數(shù)(list)的最大值。@SMIN(list):最小值函數(shù),返回一列數(shù)(list)的最小值。@SQR(X):平方函數(shù),返回X的平方〔即X*X〕的值。@SQRT(X):開平方函數(shù),返回X的正的平方根的值。@TAN(X):正切函數(shù),返回X的正切值〔X的單位是弧度〕。集合循環(huán)函數(shù)集合上的元素(下標(biāo))進(jìn)行循環(huán)操作的函數(shù),一般用法如下:@function(setname[(set_index_list)[|condition]]:expression_list);其中:function集合函數(shù)名,FOR、MAX、MIN、PROD、SUM之一;Setname集合名;set_index_list集合索引列表(不需使用索引時可以省略);Condition用邏輯表達(dá)式描述的過濾條件(通常含有索引,無條件時可以省略);expression_list一個表達(dá)式(對@FOR函數(shù),可以是一組表達(dá)式。集合循環(huán)函數(shù)五個集合函數(shù)名的含義:@FOR(集合元素的循環(huán)函數(shù)):對集合setname的每個元素獨立地生成表達(dá)式,表達(dá)式由expression_list描述〔通常是優(yōu)化問題的約束〕。@MAX〔集合屬性的最大值函數(shù)〕:返回集合setname上的表達(dá)式的最大值。@MIN〔集合屬性的最小值函數(shù)〕:返回集合setname上的表達(dá)式的最小值。@PROD〔集合屬性的乘積函數(shù)〕:返回集合setname上的表達(dá)式的積。@SUM(集合屬性的求和函數(shù)):返回集合setname上的表達(dá)式的和。集合操作函數(shù)@INDEX([set_name,]primitive_set_element)給出元素primitive_set_element在集合set_name中的索引值(即按定義集合時元素出現(xiàn)順序的位置編號)。省略set_name,LINGO按模型中定義的集合順序找到第一個含有該元素的集合,并返回索引值。如果沒有找到該元素,那么出錯。注:Set_name的索引值是正整數(shù)且只能位于1和元素個數(shù)之間。例:定義一個女孩姓名集合(GIRLS)和男孩姓名集合(BOYS):SETS:GIRLS/DEBBIE,SUE,ALICE/;BOYS/BOB,JOE,SUE,FRED/;ENDSETS都有SUE,GIRLS在BOYS前定義,調(diào)用@INDEX(SUE)將返2,相當(dāng)于@INDEX(GIRLS,SUE)。要找男孩中名為SUE的小孩的索引,應(yīng)該使用@INDEX(BOYS,SUE),返3。集合操作函數(shù)@IN(set_name,primitive_index_1[,primitive_index_2...])判斷一個集合中是否含有某個索引值。如果集合set_name中包含由索引primitive_index_1[,primitive_index_2...]所對應(yīng)元素,那么返回1(邏輯值“真”),否那么返回0(邏輯值“假”)。索引用“&1”、“&2”或@INDEX函數(shù)等形式給出,這里“&1”表示對應(yīng)于第1個父集合的元素的索引值,“&2”表示對應(yīng)于第2個父集合的元素的索引值。例:定義一個集合STUDENTS(根本集合),派生出集合PASSED和FAILED,定義:SETS:STUDENTS/ZHAO,QIAN,SUN,LI/:;PASSED(STUDENTS)/QIAN,SUN/:;FAILED(STUDENTS)|#NOT#@IN(PASSED,&1):;ENDSETS如果集合C是由集合A,B派生的,例如:SETS:A/1..3/:; B/XYZ/:; C(A,B)/1,X1,Z2,Y3,X/:;ENDSETS判斷C中是否包含元素〔2,Y〕,那么可以利用以下語句: X=@IN(C,@INDEX(A,2),@INDEX(B,Y));對本例,結(jié)果是X=1〔真〕。注:X既是集合B的元素,又對X賦值1,在LINGO中這種表達(dá)是允許的,因為前者是集合的元素,后者是變量,邏輯上沒有關(guān)系(除了同名外),所以不會出現(xiàn)混淆。集合操作函數(shù)@IN(set_name,primitive_index_1[,primitive_index_2...])@WRAP(I,N)此函數(shù)對N<1無定義當(dāng)I位于區(qū)間[1,N]內(nèi)時直接返回I;一般地,返回J=I-K*N,其中J位于區(qū)間[1,N],K為整數(shù)。即@WRAP(I,N)=@MOD〔I,N〕。但當(dāng)@MOD(I,N)=0時@WRAP(I,N)=N.此函數(shù)可以用來防止集合的索引值越界。用戶在編寫LINGO程序時,應(yīng)注意防止LINGO模型求解時出現(xiàn)集合的索引值越界的錯誤。集合操作函數(shù)@SIZE(set_name)返回數(shù)據(jù)集set_name中包含元素的個數(shù)。變量定界函數(shù)對變量的取值范圍附加限制,共有以下四種:@BND(L,X,U):限制L<=X<=U。注意LINGO中沒有與LINDO命令SLB、SUB類似的函數(shù)@SLB和@SUB@BIN(X):限制X為0或1。注意LINDO中的命令是INT,但LINGO中這個函數(shù)的名字卻不是@INT(X)@FREE(X):取消對X的符號限制〔即可取負(fù)數(shù)、0或正數(shù)〕@GIN(X):限制X為整數(shù)財務(wù)會計函數(shù)用于計算凈現(xiàn)值,包括以下兩個函數(shù):@FPA(I,N)
返回如下情形下總的凈現(xiàn)值:單位時段利率為I,連續(xù)N個時段支付,每個時段支付單位費用。根據(jù)復(fù)利的計算公式,很容易知道
@FPA(I,N)=。@FPL(I,N)
返回如下情形下總的凈現(xiàn)值:單位時段利率為I,第N個時段支付單位費用。根據(jù)復(fù)利的計算公式,很容易知道
@FPL(I,N)。概率相關(guān)函數(shù)@PSN(X):標(biāo)準(zhǔn)正態(tài)分布函數(shù),即返回標(biāo)準(zhǔn)正態(tài)分布的分布函數(shù)在X點的取值。@PSL(X):標(biāo)準(zhǔn)正態(tài)線性損失函數(shù),即返回MAX(0,Z-X)的期望值,其中Z為標(biāo)準(zhǔn)正態(tài)隨機(jī)變量。@PPS(A,X):Poisson分布函數(shù),即返回均值為A的Poisson分布的分布函數(shù)在X點的取值〔當(dāng)X不是整數(shù)時,采用線性插值進(jìn)行計算〕。@PPL(A,X):Poisson分布的線性損失函數(shù),即返回MAX(0,Z-X)的期望值,其中Z為均值為A的Poisson隨機(jī)變量。@PBN(P,N,X):二項分布函數(shù),即返回參數(shù)為〔N,P〕的二項分布的分布函數(shù)在X點的取值〔當(dāng)N和〔或〕X不是整數(shù)時,采用線性插值進(jìn)行計算〕。@PHG(POP,G,N,X):超幾何〔Hypergeometric〕分布的分布函數(shù)。也就是說,返回如下概率:當(dāng)總共有POP個球,其中G個是白球時,那么隨機(jī)地從中取出N個球,白球不超過X個的概率。當(dāng)POP,G,N和〔或〕X不是整數(shù)時,采用線性插值進(jìn)行計算。@PEL(A,X):當(dāng)?shù)竭_(dá)負(fù)荷〔強(qiáng)度〕為A,效勞系統(tǒng)有X個效勞器且不允許排隊時的Erlang損失概率。@PEB(A,X):當(dāng)?shù)竭_(dá)負(fù)荷〔強(qiáng)度〕為A,效勞系統(tǒng)有X個效勞器且允許無窮排隊時的Erlang繁忙概率。@PFS(A,X,C):當(dāng)負(fù)荷上限為A,顧客數(shù)為C,并行效勞器數(shù)量為X時,有限源的Poisson效勞系統(tǒng)的等待或返修顧客數(shù)的期望值?!睞是顧客數(shù)乘以平均效勞時間,再除以平均返修時間。當(dāng)C和〔或〕X不是整數(shù)時,采用線性插值進(jìn)行計算〕。概率相關(guān)函數(shù)@PFD(N,D,X):自由度為N和D的F分布的分布函數(shù)在X點的取值。@PCX(N,X):自由度為N的分布的分布函數(shù)在X點的取值。@PTD(N,X):自由度為N的t分布的分布函數(shù)在X點的取值。@QRAND(SEED):返回0與1之間的多個擬均勻隨機(jī)數(shù)〔SEED為種子,缺省時取當(dāng)前計算機(jī)時間為種子〕。該函數(shù)只能用在數(shù)據(jù)段,擬均勻隨機(jī)數(shù)可以認(rèn)為是“超均勻”的隨機(jī)數(shù),需要詳細(xì)了解“擬均勻隨機(jī)數(shù)〔quasi-randomuniformnumbers〕”請進(jìn)一步參閱LINGO的使用手冊。@RAND(SEED):返回0與1之間的一個偽均勻隨機(jī)數(shù)〔SEED為種子〕。概率相關(guān)函數(shù)文件輸入輸出函數(shù)@FILE(filename)當(dāng)前模型引用其他ASCII碼文件中的數(shù)據(jù)或文本時可以采用該語句〔但不允許嵌套使用〕,其中filename為存放數(shù)據(jù)的文件名,該文件中記錄之間用“~”分開。@ODBC提供LINGO與ODBC〔OpenDataBaseConnection,開放式數(shù)據(jù)庫連接〕的接口。@OLE提供LINGO與OLE(ObjectLinkingandEmbeding)接口。@POINTER(N) 在Windows下使用LINGO的動態(tài)連接庫DLL,直接從共享的內(nèi)存中傳送數(shù)據(jù)。@TEXT(['filename'])用于數(shù)據(jù)段中將解答結(jié)果送到文本文件filename中,當(dāng)省略filename時,結(jié)果送到標(biāo)準(zhǔn)的輸出設(shè)備〔通常就是屏幕〕。filename中可以帶有文件路徑,沒有指定路徑時表示在當(dāng)前目錄,如果這個文件已經(jīng)存在,將會被覆蓋。結(jié)果報告函數(shù)@ITERS()
只能在程序的數(shù)據(jù)段使用,調(diào)用時不需要任何參數(shù),返回LINGO求解器計算所使用的總迭代次數(shù)。例如:
@TEXT()=@ITERS();
將迭代次數(shù)顯示在屏幕上。@NEWLINE(n)
在輸出設(shè)備上輸出n個新行。@STRLEN(string)
返回字串“string”的長度,如@STRLEN(123)返回值為3。@NAME(var_or_row_refernce)返回變量名或行名。例:SETS:WH/WH1..WH3/;!WH表示倉庫的集合;C/C1..C4/;!C表示顧客的集合;ROAD〔WH,C〕:X;!ROAD表示倉庫到顧客的道路集合;!X表示某個倉庫對某個顧客供貨數(shù);ENDSETSDATA:@TEXT()=@WRITEFOR(ROAD(I,J)|X(I,J)#GT#0:@NAME(X),'',X,@NEWLINE(1));ENDDATA結(jié)果報告函數(shù)@NAME(var_or_row_refernce)返回變量名或行名。輸出結(jié)果示意如下(這里沒有詳細(xì)交待屬性X當(dāng)前的取值):X(WH1,C1)2X(WH1,C2)17X(WH1,C3)1X(WH2,C1)13X(WH2,C4)12X(WH3,C3)21注:“變量”是指“數(shù)組元素”X(WH1,C1)、X(WH2,C4)等,即屬性加上相應(yīng)的下標(biāo)〔集合元素〕。同理,約束名也是指模型展開后的約束名〔用LINGO|Generate命令可以看到約束展開后的情況〕,即也應(yīng)該是帶有相應(yīng)的下標(biāo)〔集合元素〕的。結(jié)果報告函數(shù)結(jié)果報告函數(shù)@WRITE(obj1[,…,objn])只能在數(shù)據(jù)段中使用,輸出一系列結(jié)果(obj1,…,objn),其中obj1,…,objn等可以是變量(但不能只是屬性),也可以是字符串(放在單引號中的為字符串)或換行(@NEWLINE)等。結(jié)果可以輸出到一個文件,或電子表格〔如EXCEL〕,或數(shù)據(jù)庫,這取決于@WRITE所在的輸出語句中左邊的定位函數(shù)。例如:DATA:@TEXT()=@WRITE('Ais',A,',Bis',B,',A/Bis',A/B);ENDDATA其中A,B是該模型中的變量,在屏幕上輸出A,B以及A/B的值(增加了一些字符串,使結(jié)果讀起來更方便)。假設(shè)計算結(jié)束時A=10,B=5,那么輸出為: Ais10,Bis5,A/Bis2結(jié)果報告函數(shù)@WRITEFOR(setname[(set_index_list)[|condition]]:obj1[,…,objn])函數(shù)@WRITE在循環(huán)情況下的推廣,輸出集合上定義的屬性對應(yīng)的多個變量的取值。例:〔這里WH,C,X含義同上〕:DATA:@TEXT()=@WRITEFOR(ROAD(I,J)|X(I,J)#GT#0:‘從倉庫',WH(I),'到顧客',C(J),'供貨',X(I,J),'件',@NEWLINE(1));ENDDATA對應(yīng)的輸出效果示意如下:從倉庫WH1到顧客C1供貨2件…..從倉庫WH3到顧客C3供貨21件注:這里省略了局部輸出結(jié)果練習(xí)例建筑工地的位置(用平面坐標(biāo)a,b表示,距離單位:公里)及水泥日用量d(噸)下表給出。有兩個臨時料場位于P(5,1),Q(2,7),日儲量各有20噸。從A,B兩料場分別向各工地運送多少噸水泥,使總的噸公里數(shù)最小。兩個新的料場應(yīng)建在何處,節(jié)省的噸公里數(shù)有多大?123456a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611建立模型記工地的位置為,水泥日用量為;料場位置為,日儲量為;從料場向工地的運送量為。使用現(xiàn)有臨時料場時,決策變量只有(非負(fù)),所以這是LP模型;當(dāng)為新建料場選址時決策變量為和,由于目標(biāo)函數(shù)對是非線性的,所以在新建料場時是NLP模型。先解NLP模型,而把現(xiàn)有臨時料場的位置作為初始解告訴LINGO。本例中集合的概念利用集合的概念,可以定義需求點DEMAND和供應(yīng)點SUPPLY兩個集合,分別有6個和2個元素(下標(biāo))。但決策變量(運送量)與集合DEMAND和集合SUPPLY都有關(guān)系的。該如何定義這樣的屬性?集合的屬性相當(dāng)于以集合的元素為下標(biāo)的數(shù)組。這里的相當(dāng)于二維數(shù)組。它的兩個下標(biāo)分別來自集合DEMAND和SUPPLY,因此可以定義一個由二元對組成的新的集合,然后將定義成這個新集合的屬性。輸入程序
定義了三個集合,其中LINK在前兩個集合DEMAND和SUPPLY的根底上定義表示集合LINK中的元素就是集合DEMAND和SUPPLY的元素組合成的有序二元組,從數(shù)學(xué)上看LINK是DEMAND和SUPPLY的笛卡兒積,也就是說LINK={〔S,T〕|SDEMAND,TSUPPLY}因此,其屬性C也就是一個6*2的矩陣〔或者說是含有12個元素的二維數(shù)組〕。LINGO建模語言也稱為矩陣生成器〔MATRIXGENERATOR〕。類似DEMAND和SUPPLY直接把元素列舉出來的集合,稱為根本集合(primaryset),而把LINK這種基于其它集合而派生出來的二維或多維集合稱為派生集合(derivedset)。由于是DEMAND和SUPPLY生成了派生集合LINK,所以DEMAND和SUPPLY稱為LINK的父集合。輸入程序
初始段INGO對數(shù)據(jù)是按列賦值的語句的實際賦值順序是X=(5,2),Y=(1,7),而不是X=(5,1),Y=〔2,7)等價寫法:“X=5,2;Y=1,7;”同理,數(shù)據(jù)段中對常數(shù)數(shù)組A,B的賦值語句也可以寫成A,B=1.251.258.750.750.54.755.75536.57.257.75;輸入程序
定義目標(biāo)和約束,與前例的方法是類似(這里包含了派生集合),請?zhí)貏e注意進(jìn)一步體會集合函數(shù)@SUM和@FOR的用法。由于新建料場的位置理論上講可以是任意的,所以在約束的最后(模型的“END”語句上面的一行)用@free函數(shù)取消了變量X、Y的非負(fù)限制在程序開頭用TITLE語句對這個模型取了一個標(biāo)題“LOCATIONPROBLEM;并且對目標(biāo)行([OBJ])和兩類約束(DEMAND_CON、SUPPLY_CON)分別進(jìn)行了命名(請?zhí)貏e注意這里約束命名的特點)。解答:運行菜單命令“LINGO|Solve”局部最優(yōu)解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,C〔略〕,最小運量=89.8835(噸公里)。問題:最小運量89.8835是不是全局最優(yōu)是用“LINGO|Options”菜單命令翻開選項對話框,在“GlobalSolver”選項卡上選擇“UseGlobalSolver”,激活全局最優(yōu)求解程序。問題:最小運量89.8835是不是全局最優(yōu)為減少計算工作量,對X,Y的取值再做一些限制。雖然理論上新建料場的位置可以是任意的,但顯然最佳的料場位置不應(yīng)該離工地太遠(yuǎn),至少不應(yīng)該超出現(xiàn)在6個工地所決定的坐標(biāo)的最大、最小值決定的矩形之外,即:0.5<=x<=8.75,0.75<=y<=7.75.
可以用@bnd函數(shù)加上這個條件取代模型END上面的行,運行NLP模型,全局最優(yōu)求解程序花費的時間仍然很長,運行27分35秒時人為終止求解(按下“InterruptSolver”按鈕)得到左邊模型窗口和全局求解器的狀態(tài)窗口此時目標(biāo)函數(shù)值的下界〔ObjBound=85.2638〕與目前得到的最好的可行解的目標(biāo)函數(shù)值〔BestObj=85.2661〕相差已經(jīng)非常小,可以認(rèn)為已經(jīng)得到了全局最優(yōu)解。計算結(jié)果
工地與料場示意圖:“*”表示料場,“+”表示工地
可以認(rèn)為是模型的最后結(jié)果附注:如果要把料廠P(5,1),Q(2,7)的位置看成是并且固定的,這時是LP模型。只需要把初始段的“XY=5,1,2,7;”語句移到數(shù)據(jù)段就可以了。此時,運行結(jié)果告訴我們得到全局最優(yōu)解〔變量C的取值這里略去〕,最小運量136.2275(噸公里)。例(最短路問題)在縱橫交錯的公路網(wǎng)中,貨車司機(jī)希望找到一條從一個城市到另一個城市的最短路.以下圖表示的是公路網(wǎng),節(jié)點表示貨車可以??康某鞘?弧上的權(quán)表示兩個城市之間的距離(百公里).那么,貨車從城市S出發(fā)到達(dá)城市T,如何選擇行駛路線,使所經(jīng)過的路程最短?STA1
A2
A3
B1
B2
C1
C2
633665874678956STA1
A2
A3
B1
B2
C1
C2
633665874678956分析
假設(shè)從S到T的最優(yōu)行駛路線P經(jīng)過城市C1,那么P中從S到C1的子路也一定是從S到C1的最優(yōu)行駛路線;假設(shè)P經(jīng)過城市C2,那么P中從S到C2的子路也一定是從S到C2的最優(yōu)行駛路線.因此,為得到從S到T的最優(yōu)行駛路線,只需要先求出從S到Ck(k=1,2)的最優(yōu)行駛路線,就可以方便地得到從S到T的最優(yōu)行駛路線.同樣,為了求出從S到Ck(k=1,2)的最優(yōu)行駛路線,只需要先求出從S到Bj(j=1,2)的最優(yōu)行駛路線;為了求出從S到Bj(j=1,2)的最優(yōu)行駛路線,只需要先求出從S到Ai(i=1,2,3)的最優(yōu)行駛路線.而S到Ai(i=1,2,3)的最優(yōu)行駛路線是很容易得到的(實際上,此例中S到Ai(i=1,2,3)只有唯一的道路)分析
STA1
A2
A3
B1
B2
C1
C2
633665874678956此例中可把從S到T的行駛過程分成4個階段,即S→Ai(i=1,2或3),Ai→Bj(j=1或2),Bj→Ck(k=1或2),Ck→T.記d(Y,X)為城市Y與城市X之間的直接距離(假設(shè)這兩個城市之間沒有道路直接相連,那么可以認(rèn)為直接距離為∞),用L(X)表示城市S到城市X的最優(yōu)行駛路線的路長:本例的計算STA1
A2
A3
B1
B2
C1
C2
633665874678956所以,從S到T的最優(yōu)行駛路線的路長為20.進(jìn)一步分析以上求解過程,可以得到從S到T的最優(yōu)行駛路線為S→A3→B2→C1→T.這種計算方法在數(shù)學(xué)上稱為動態(tài)規(guī)劃(DynamicProgramming)本例的LINGO求解“CITIES”(城市):一個根本集合(元素通過枚舉給出)L:CITIES對應(yīng)的屬性變量(我們要求的最短路長)“ROADS”(道路):由CITIES導(dǎo)出的一個派生集合(請?zhí)貏e注意其用法),由于只有一局部城市之間有道路相連,所以不應(yīng)該把它定義成稠密集合,將其元素通過枚舉給出,這就是一個稀疏集合。D:稀疏集合ROADS對應(yīng)的屬性變量(給定的距離)本例的LINGO求解從模型中還可以看出:這個LINGO程序可以沒有目標(biāo)函數(shù),這在LINGO中,可以用來找可行解(解方程組和不等式組)。在數(shù)據(jù)段對L進(jìn)行賦值,只有L(S)=0,后面的值為空(但位置必須留出來,即逗號“,”一個也不能少,否那么會出錯)。如果這個語句直接寫成“L=0;”,語法上看也是對的,但其含義是L所有元素的取值全部為0,所以也會與題意不符。例某班8名同學(xué)準(zhǔn)備分成4個調(diào)查隊(每隊兩人)前往4個地區(qū)進(jìn)行社會調(diào)查。這8名同學(xué)兩兩之間組隊的效率如下表所示(由于對稱性,只列出了嚴(yán)格上三角局部),問如何組隊可以使總效率最高?學(xué)生S1S2S3S4S5S6S7S8S1-9342156S2--173521S3---44292S4----1552S5-----876S6------23S7-------4分析這是一個匹配〔MATCHING〕問題。把上表的效率矩陣記為BENEFIT(由于對稱性,這個矩陣只有嚴(yán)格上三角局部共28個數(shù)取非零值)。用MATCH〔Si,Sj〕=1表示同學(xué)Si,Sj組成一隊,而MATCH〔Si,Sj〕=0表示Si,Sj不組隊。由于對稱性,只需考慮i<j共28個0-1變量(而不是全部32個變量)。顯然,目標(biāo)函數(shù)正好是BENEFIT(Si,Sj)*MATCH(Si,Sj)對I,j之和。約束條件是每個同學(xué)只能(而且必須在)某一組,即對于任意i有:只要屬性MATCH的某個下標(biāo)為i就加起來,此和應(yīng)該等于1。由上面的分析,因此,完整的數(shù)學(xué)模型如下(顯然,這是一個0-1線性規(guī)劃):問題的LINGO求解“S1..S8”等價于寫成“S1S2S3S4S5S6S7S8”,它沒有相關(guān)的屬性列表,只用于表示是一個下標(biāo)集合注意數(shù)據(jù)段對BENEFIT的賦值方式,“LINGO按照列的順序?qū)傩宰兞康脑剡M(jìn)行賦值。在約束局部,過濾條件“J#EQ#I#OR#K#EQ#I”是由邏輯運算符“#OR#〔或者〕”連接的一個復(fù)合的邏輯關(guān)系式,連接由“#EQ#〔等于〕”表示的兩個邏輯關(guān)系。由于“#OR#”的運算級別低于“#EQ#”,所以這個邏輯式中沒有必要使用括號指定運算次序。其他函數(shù)@IF(logical_condition,true_result,false_result)當(dāng)邏輯表達(dá)式logical_condition的結(jié)果為真時,返回true_result,否那么返回false_result。@WARN('text',logical_condition)如果邏輯表達(dá)式“l(fā)ogical_condition”的結(jié)果為真,顯示‘text’信息。@USER(user_determined_arguments)允許用戶自己編寫的函數(shù)〔DLL或OBJ文件〕,可能應(yīng)當(dāng)用C或FORTRAN等其他語言編寫并編譯。4.LINGO的主要菜單命令
工具欄File|Open〔F3〕翻開文件File|Print〔F7〕打印文件Edit|Copy(Ctrl+C)復(fù)制Edit|Undo(Ctrl+Z)取消操作Edit|Find(Ctrl+F)查找LINGO|Solution(Alt+O)顯示解答Edit|MatchParenthesis(Ctrl+P)匹配括號LINGO|Options(Ctrl+I)選項設(shè)置Window|CloseAll(Alt+X)關(guān)閉所有窗口Help|Contents〔F1〕在線幫助File|New〔F2〕新建文件File|Save(F4)保存文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)粘貼Edit|Redo(Ctrl+Y)恢復(fù)操作Edit|GoToLine(Ctrl+T)定位某行LINGO|Solve(Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型圖示W(wǎng)indow|SendtoBack(Ctrl+B)窗口后置Window|Tile(Alt+T)平鋪窗口上下文相關(guān)的幫助編輯〔Edit〕主菜單將WINDOWS剪貼板中的內(nèi)容粘貼到當(dāng)前光標(biāo)處?!癊dit|Paste〔粘貼命令〕”僅用于剪貼板中的內(nèi)容是文本的情形。“Edit|PasteSpecial…〔特殊粘貼命令〕”可以用于剪貼板中的內(nèi)容不是文本的情形,可以插入其它應(yīng)用程序中生成的對象〔Object〕或?qū)ο蟮逆溄印睱ink〕。例如,LINGO模型中可能會在數(shù)據(jù)段用到從其它應(yīng)用程序中生成的數(shù)據(jù)對象〔如EXCEL電子表格數(shù)據(jù)〕,這時用“Edit|PasteSpecial…”是很方便的。Edit|Paste和Edit|PasteSpecial…
編輯〔Edit〕主菜單Edit|MatchParenthesis 用于匹配模型中的括號:如果當(dāng)前沒有選定括號,那么把光標(biāo)移動到離當(dāng)前光標(biāo)最近的一個括號并選中這個括號。中選定一個括號后,那么把光標(biāo)移動到與這個括號相匹配的括號并選中這個括號。Edit|PasteFunction 還有下一級子菜單和下下一級子菜單,用于按函數(shù)類型選擇LINGO的某個函數(shù),粘貼到當(dāng)前光標(biāo)處。編輯〔Edit〕主菜單Edit|SelectFont彈出對話框,控制顯示字體、字形、大小、顏色、效果等。注:這些顯示特性只有當(dāng)文件保存為LINGO格式〔*.LG4〕的文件時才能保存下來。此外,如果“按語法顯示色彩”選項是有效的(參見“LINGO|Options”),在模型窗口中將不能通過“Edit|SelectFont”菜單命令控制文本的顏色。編輯〔Edit〕主菜單Edit|InsertNewObject
插入其它應(yīng)用程序中生成的整個對象或?qū)ο蟮逆溄?。前面介紹過的“Edit|PasteSpecial…”與此類似,但“PasteSpecial”命令一般用于粘貼某個外部對象的一局部,而這里的命令是插入整個對象或?qū)ο蟮逆溄?。Edit|Links在模型窗口中選擇一個外部對象的鏈接,然后選擇“Edit|Links〔鏈接〕”命令,那么彈出一個對話框,可以修改這個外部對象的鏈接屬性。編輯〔Edit〕主菜單Edit|ObjectProperties在模型窗口中選擇一個鏈接或嵌入對象〔OLE〕,然后選擇“Edit|ObjectProperties〔對象屬性〕”命令,那么彈出一個對話框,可以修改這個對象的屬性。主要包括以下屬性:displayoftheobject:對象的顯示;theobject'ssource:對象的源;typeofupdate(automaticormanual):修改方式〔自動或人工修改〕;openingalinktotheobject:翻開對象的一個鏈接;updatingtheobject:修改對象;breakingthelinktotheobject:斷開對象的鏈接。LINGO系統(tǒng)(LINGO)主菜單LINGO|LOOK〔模型顯示〕模型窗口下才能使用,按照LINGO模型的輸入形式以文本方式顯示,顯示時對輸入的所有行(包括說明語句)按順序編號。將彈出一個對話框,在對話框中選擇“All”將對所有行進(jìn)行顯示,也可以選擇“Selected”輸入起始行,這時只顯示相應(yīng)行的內(nèi)容。LINGO|Generate和LINGO|Picture
都是在模型窗口下才能使用,它們的功能是按照LINGO模型的完整形式〔例如將屬性按下標(biāo)〔集合的每個元素〕展開〕顯示目標(biāo)函數(shù)和約束〔只有非零項會顯示出來〕。LINGO系統(tǒng)(LINGO)主菜單LINGO|Generate結(jié)果以代數(shù)表達(dá)式的形式給出,按照是否在屏幕上顯示結(jié)果的要求,可以選擇“Displaymodel〔Ctrl+G〕”和“Don’tdisplaymodel〔Ctrl+Q〕”兩個子菜單供選擇。在屏幕上不顯示時,運行該命令的目的可能僅僅是為了以后選擇適當(dāng)?shù)那蠼獬绦蚴褂谩@?,選址問題,LINGO|Generate命令顯示的結(jié)果如圖。注:在LINGO8.0以及更早以前的版本中,如果有非線性變量項,對應(yīng)的非線性變量前的系數(shù)將以問號〔“?”〕顯示。LINGO系統(tǒng)(LINGO)主菜單LINGO|Generate結(jié)果按照矩陣形式以圖形方式給出。例:選址問題,該命令的結(jié)果如圖。該顯示中非線性項的系數(shù)以黑色顯示為“?”,線性項的系數(shù)為正時顯示為蘭色,為負(fù)那么為紅色(本例沒有紅色)。在這個圖形上單擊鼠標(biāo)右鍵,可以出現(xiàn)一個相關(guān)聯(lián)的顯示控制菜單(如圖中寫有“ZoomIn”的菜單所示),這個菜單可以控制圖形顯示的內(nèi)容的放大(ZoomIn)、縮小(ZoomOut)、顯示全部內(nèi)容(ViewAll),也可以控制該窗口是否顯示行名(RowNames)、變量名(VarNames)、滾動條(ScrollBars)。LINGO系統(tǒng)(LINGO)主菜單LINGO|Options命令翻開一個含有7個選項卡的窗口,通過它修改LINGO系統(tǒng)的各種控制參數(shù)和選項。新的設(shè)置生效新的設(shè)置生效,并關(guān)閉窗口當(dāng)前設(shè)置變?yōu)槟J(rèn)設(shè)置,下次啟動LINGO時這些設(shè)置仍然有效恢復(fù)LINGO系統(tǒng)定義的原始默認(rèn)設(shè)置(缺省設(shè)置)廢棄本次操作,退出對話框顯示本對話框的幫助信息LINGO|Options|Interface〔界面〕選項卡錯誤信息對話框:如果選擇該選項,求解程序遇到錯誤時將翻開一個對話框顯示錯誤,關(guān)閉該對話框后程序才會繼續(xù)執(zhí)行;否那么,錯誤信息將在報告窗口顯示,程序仍會繼續(xù)執(zhí)行彈出屏幕:如果選擇該選項,那么LINGO每次啟動時會在屏幕上彈出一個對話框,顯示LINGO的版本和版權(quán)信息;否那么不彈出解的截斷:小于等于這個值的解將報告為“0”〔缺省是10-9〕填充數(shù)據(jù)庫表:當(dāng)LINGO向電子表〔如EXCEL文件〕或數(shù)據(jù)庫中輸出數(shù)據(jù)時,如果電子表或數(shù)據(jù)庫中用來接收收據(jù)的空間大于實際輸出的數(shù)據(jù)占用的空間,是否對多余的表空間進(jìn)行數(shù)據(jù)填充?〔缺省值為不進(jìn)行填充〕LINGO|Options|Interface〔界面〕選項卡狀態(tài)欄:如果選擇該選項,那么LINGO系統(tǒng)在主窗口最下面一行顯示狀態(tài)欄;否那么不顯示狀態(tài)窗口:如果選擇該選項,那么LINGO系統(tǒng)每次運行LINGO|Solve命令時會在屏幕上彈出狀態(tài)窗口;否那么不彈出工具欄:如果選擇該選項,那么顯示工具欄;否那么不顯示簡潔輸出:如果選擇該選項,那么LINGO系統(tǒng)對求解結(jié)果報告等將以簡潔形式輸出;否那么以詳細(xì)形式輸出LINGO|Options|Interface〔界面〕選項卡LINGO擴(kuò)展格式:模型文件的缺省保存格式是lg4格式〔這是一種二進(jìn)制文件,只有LINGO能讀出〕LINDO純文本格式:模型文件的缺省保存格式變?yōu)長INDO格式〔純文本〕LINGO純文本格式:模型文件的缺省保存格式變?yōu)閘ng格式〔純文本〕LINGO|Options|Interface〔界面〕選項卡行數(shù)限制:語法配色的行數(shù)限制〔缺省為1000〕。LINGO模型窗口中將LINGO關(guān)鍵此顯示為蘭色,注釋為綠色,其他為黑色,超過該行數(shù)限制后那么不再區(qū)分顏色。特別地,設(shè)置行數(shù)限制為0時,整個文件不再區(qū)分顏色。括號匹配:如果選擇該選項,那么模型中當(dāng)前光標(biāo)所在處的括號及其相匹配的括號將以紅色顯示;否那么不使用該功能延遲:設(shè)置語法配色的延遲時間〔秒,缺省為0,從最后一次擊鍵算起〕。LINGO|Options|Interface〔界面〕選項卡報揭發(fā)送到命令窗口:如果選擇該選項,那么輸出信息會發(fā)送到命令窗口;否那么不使用該功能輸入信息反響:如果選擇該選項,那么用File|TakeCommand命令執(zhí)行命令腳本文件時,處理信息會發(fā)送到命令窗口;否那么不使用該功能頁面大小限制:命令窗口每次顯示的行數(shù)的最大值為Length〔缺省為沒有限制〕,顯示這么多行后會暫停,等待用戶響應(yīng);每行最大字符數(shù)為Width〔缺省為74,可以設(shè)定為64-200之間〕,多余的字符將被截斷行數(shù)限制:命令窗口能顯示的行數(shù)的最大值為Maximum〔缺省為800〕;如果要顯示的內(nèi)容超過這個值,每次從命令窗口滾動刪除的最小行數(shù)為Minimum〔缺省為400〕LINGO|Options|GeneralSolver(通用求解程序)選項卡矩陣生成器的內(nèi)存限制:缺省值為32M,矩陣生成器使用的內(nèi)存超過該限制,LINGO將報告"Themodelgeneratorranoutofmemory"運行限制:迭代次數(shù):求解一個模型時,允許的最大迭代次數(shù)〔缺省值為無限〕運行限制:運行時間:求解一個模型時,允許的最大運行時間〔秒〕〔缺省值為無限〕對偶計算:求解時控制對偶計算的級別,有三種可能的設(shè)置:None:不計算任何對偶信息;Prices:計算對偶價格〔缺省設(shè)置〕;PricesandRanges:計算對偶價格并分析敏感性;Prices,OptOnly:只計算最優(yōu)行的對偶價格。LINGO|Options|GeneralSolver(通用求解程序)選項卡固定變量的歸結(jié)、簡化:求解前對固定變量的歸結(jié)程度〔相當(dāng)于預(yù)處理程度〕:None:不歸結(jié);Always:總是歸結(jié);Notwithglobalandmultistart:在全局優(yōu)化和多初值優(yōu)化程序中不歸結(jié)。模型的重新生成:控制重新生成模型的頻率,有三種可能的設(shè)置:Onlywhentextchanges:只有當(dāng)模型的文本修改后才再生成模型;Whentextchangesorwithexternalreferences:當(dāng)模型的文本修改或模型含有外部引用時〔缺省設(shè)置〕;Always:每當(dāng)有需要時。LINGO|Options|GeneralSolver(通用求解程序)選項卡線性化程度:決定求解模型時線性化的程度,有四種可能的設(shè)置:SolverDecides:假設(shè)變量數(shù)小于等于12個,那么盡可能全部線性化;否那么不做任何線性化〔缺省設(shè)置〕None:不做任何線性化Low:對函數(shù)@ABS(),@MAX(),@MIN(),@SMAX(),@SMIN(),以及二進(jìn)制變量與連續(xù)變量的乘積項做線性化High:同上,此外對邏輯運算符#LE#,#EQ#,#GE#,#NE#做線性化線性化的誤差限:設(shè)置線性化的誤差限〔缺省值為10-6〕線性化的大M系數(shù):設(shè)置線性化的大M系數(shù)〔缺省值為106〕LINGO|Options|GeneralSolver(通用求解程序)選項卡允許無限制地使用根本集合的成員名:選擇該選項可以保持與LINGO4.0以前的版本兼容:即允許使用根本集合的成員名稱直接作為該成員在該集合的索引值〔LINGO4.0以后的版本要求使用@INDEX函數(shù)〕檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用:選擇該選項,LINGO將檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用,如根本集合的成員名是否與決策變量名重復(fù)檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用:選擇該選項,LINGO將檢查數(shù)據(jù)和模型中的名稱是否重復(fù)使用,如根本集合的成員名是否與決策變量名重復(fù)最小化內(nèi)存使用量:是否最小化內(nèi)存使用量。缺省設(shè)置為“是”。使用這個功能的一個缺點是可能引起計算速度下降LINGO|OPTIONS|LinearSolver(線性求解程序)選項卡求解時的算法,有四種可能的設(shè)置:SolverDecides:LINGO自動選擇算法〔缺省設(shè)置〕PrimalSimplex:原始單純形法DualSimplex:對偶單純形法Barrier:障礙法(即內(nèi)點法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遠(yuǎn)去的路聽評課記錄
- 八下數(shù)學(xué)聽評課記錄
- 廣東省河源市八年級歷史下冊-時間軸-走上社會主義道路(19491956年)第1課-中華人民共和國成立
- 北師大版道德與法治七年級下冊11.1《了解合作》聽課評課記錄
- 2025年度多式聯(lián)運公路貨物運輸合同范本
- 冀教版數(shù)學(xué)八年級上冊《分式加減運算法則》聽評課記錄1
- 湘教版數(shù)學(xué)七年級上冊2.5《整式的加法和減法》聽評課記錄2
- 籃球體育課聽評課記錄
- 蘇科版數(shù)學(xué)七年級上冊2.6《有理數(shù)的乘法與除法》聽評課記錄2
- 人民版道德與法治七年級上冊2.1《我長大了》聽課評課記錄
- 《大學(xué)生創(chuàng)新與創(chuàng)業(yè)》課件
- 2024年體育賽事運動員贊助合同3篇
- 護(hù)士的護(hù)理職業(yè)生涯規(guī)劃
- 2024年高考語文復(fù)習(xí):古詩文閱讀強(qiáng)化練習(xí)題匯編(含答案解析)
- 臨床護(hù)理實踐指南2024版
- 不良反應(yīng)事件及嚴(yán)重不良事件處理的標(biāo)準(zhǔn)操作規(guī)程藥物臨床試驗機(jī)構(gòu)GCP SOP
- 義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)重點
- 醫(yī)療器械采購?fù)稑?biāo)方案(技術(shù)方案)
- 教育培訓(xùn)行業(yè)抖音號運營推廣策劃方案課件
- 2024-2030年全球及中國水楊酸行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 體育館改造裝修工程施工組織設(shè)計
評論
0/150
提交評論