




已閱讀5頁,還剩17頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Lingo軟件在求解數學優化問題的使用技巧LINGO是一種專門用于求解數學規劃問題的軟件包。由于LINGO執行速度快,易于方便地輸入、求解和分析數學規劃問題,因此在教學、科研和工業界得到廣泛應用。LINGO主要用于求解線性規劃、非線性規劃、二次規劃和整數規劃等問題,也可以用于求解一些線性和非線性方程組及代數方程求根等。LINGO的最新版本為LINGO7.0,但解密版通常為4.0和5.0版本,本書就以LINGO5.0為參照而編寫。 1LINGO編寫格式 LINGO模型以MODEL開始,以END結束。中間為語句,分為四大部分(SECTION):(1) 集合部分(SETS):這部分以“SETS:”開始,以“ENDSETS”結束。這部分的作用在于定義必要的變量,便于后面進行編程進行大規模計算,就象C語言在在程序的第一部分定義變量和數組一樣。在LINGO中稱為集合(SET)及其元素(MEMBER或ELEMENT,類似于數組的下標)和屬性(ATTRIBUTE,類似于數組)。LINGO中的集合有兩類:一類是原始集合(PRIMITIVE SETS),其定義的格式為: SETNAME/member list(or 1.n)/:attribute,attribute,etc。另一類是是導出集合(DERIVED SETS),即引用其它集合定義的集合,其定義的格式為:SETNAME(set1,set2,etc。):attribute,attribute,etc。如果要在程序中使用數組,就必須在該部分進行定義,否則可不需要該部分。(2) 目標與約束:這部分定義了目標函數、約束條件等。一般要用到LINGO的內部函數,可在后面的具體應用中體會其功能與用法。求解優化問題時,該部分是必須的。(3) 數據部分(DATA):這部分以“DATA:”開始,以“END DATA”結束。其作用在于對集合的屬性(數組)輸入必要的數值。格式為:attribut=value_list。該部分主要是方便數據的輸入。(4) 初始化部分(INIT):這部分以“INIT:”開始,以“END INIT”結束。作用在于對集合的屬性(數組)定義初值。格式為:attribute=value_list。由于非線性規劃求解時,通常得到的是局部最優解,而局部最優解受輸入的初值影響。通常可改變初值來得到不同的解,從而發現更好的解。編寫LINGO程序要注意的幾點:1. 所有的語句除SETS、ENDSETS、DATA、ENDDATA、INIT、ENDINIT和MODEL,END之外必須以一個分號“;”結尾。2. LINGO求解非線性規劃時已約定各變量非負。LINGO內部函數使用詳解。 LINGO建立優化模型時可以引用大量的內部函數,這些函數以“”符號打頭。(1) 常用數學函數ABS(X) 返回變量X的絕對數值。 COS( X)返回X的余弦值,X的單位為弧度EXP( X)返回的值,其中e為自然對數的底,即FLOOR( X)向0靠近返回X的整數部分。如FLOOR(3.7),則返回3;FLOOR(-3.7),則返回-3。LGM( X)返回函數的自然對數值。LOG( X)返回變量X的自然對數值。SIGN( X)返回變量X的符號值,當X0時為1。SIN( X)返回X的正弦值,X的單位為弧度SMAX( X1, X2,., XN)返回一列值X1, X2,., XN的最大值。SMIN( X1, X2,., XN)返回一列值X1, X2,., XN的最小值。TAN( X)返回X的正切值,X的單位為弧度 (2)集合函數 集合函數的用法如下:set_operator (set_name|condition:expression)其中set_oprator部分是集合函數名(見下),set_name是數據集合名,expression部分是表達式,|condition部分是條件,用邏輯表達式描述(無條件時可省略)。邏輯表達式中可以三種邏輯算符(#AND#(與),#OR#(或),#NOT#(非)和六種關系酸符(#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于)。常見的集合函數如下:FOR (set_name:constraint_expressions)對集合(set_name)的每個元素獨立地生成約束,約束由約束表達式(constraint_expressions)描述。MAX(set_name:expression)返回集合上的表達式(expression)的最大值。MIN(set_name:expression)返回集合上的表達式(expression)的最小值。SUM(set_name:expression)返回集合上的表達式(expression)的和。SIZE(set_name)返回數據集set_name中包含元素的個數。IN(set_name,set_element)如果數據集set_name中包含元素set_element則返回1,否則返回0。(3)變量界定函數 變量函數對變量的取值范圍附加限制,共有四種。 BND(L,X,U)限制 BIN(X)限制X為0或1。 FREE(X)取消對X的符號限制(即可取任意實數值)。 GIN(X)限制X為整數值。(4)財務函數 返回如下情形下的凈現值:單位時段利率為,連續個時段支付,每個時段支付費用,即:=返回如下情形下的凈現值:單位時段利率為,第個時段支付單位費用,即:= (5)概率函數PSN(X)標準正態分布的分布函數。PSL(X)單位正態線性損失函數(即返回的期望值,其中Z為標準正態隨機變量)PPS(A,X)均值為A的Possion分布的分布函數(當X不是整數時,采用線性插值進行計算)。PPL(X)Possion分布的線性損失函數(即返回的期望值,其中Z為Possion分布隨機變量)PBN(P,N,X)二項分布的分布函數當N或X不是整數時,采用線性插值進行計算)。PHG(POP,G,N,X)超幾何分布的分布函數(當POP,G,N或X不是整數時,采用線性插值進行計算)。PFD(N,D,X)自由度為N和D的F分布的分布函數。PCX(N,X) 自由度為N的分布的分布函數。PTD(N,X) 自由度為N的t分布的分布函數。RAND(X)返回0與1之間的偽隨機數(X為種子數,典型用法為U(I)=RAND(U(I+1))。1某晝夜服務的公交路線每天各時間區段內需司機和乘務人員如下: 班次時間最少需要人數16:0010:0060210:0014:0070314:0018:0060418:0022:0050522:002:002062:006:0030設司機和乘務人員分別在各時間區段一開始上班,并連續工作八小時,問該公交線路至少配備多少名司機和乘務人員?從第一班開始排,試建立線性模型。分析與求解:注意在每一時間段里上班的司機和乘務人員中,既包括在該時間段內開始時報到的人員,還包括在上一時間段工作的人員。因為每一時間段只有四個小時,而每個司乘人員卻要連續工作八個小時。因此每班的人員應理解為該班次相應時間段開始時報到的人員。設為第班應報到的人員(),則應配備人員總數為:按所需人數最少的要求,可得到線性模型如下:LINGO程序如下:MODEL: min=x1+x2+x3+x4+x5+x6; x1+x6=60; x1+x2=70; x2+x3=60; x3+x4=50; x4+x5=20; x5+x6=30; x1=60;END得到的解為:x1=60,x2=10,x3=50,x4=0,x5=30,x6=0;配備的司機和乘務人員最少為150人。2 某地區有三個農場共用一條灌渠,每個農場的可灌溉地及分配到的最大用水量如下表:農場可灌溉地(畝)最大用水量(百立方)140060026008003300375各農場均可種植甜菜、棉花和高粱三種作物,各種作物的用水量、凈收益及國家規定的該地區各種作物種植總面積最高限額如下表:作物種類種植限額(畝)耗水量(百立方/畝)凈收益(元/畝)甜菜6003400棉花5002300高粱3251100三個農場達成協議,他們的播種面積與其可灌溉面積相等,而各種農場種何種作物并無限制。問如何制定各農場種植計劃才能在上述限制條件下,使本地區的三個農場的總凈收益最大。分析與求解:設農場1種植的甜菜、棉花和高粱分別為畝,農場2種植的甜菜、棉花和高粱分別為畝,農場3種植的甜菜、棉花和高粱分別為畝。設農場可耕地為,最大用水量為 ,甜菜、棉花和高粱的種植限額為,耗水量為,,凈收益為,根據題目條件,可建立如下線性模型:LINGO編程如下:MODEL:SETS:place/1.3/:a,b;kind/1.3/:c,d,e;plan(place,kind):x;ENDSETSDATA:a=400,600,300;b=600,800,375;c=600,500,325;d=3,2,1;e=400,300,100;ENDDATAmax=sum(kind(j):e(j)*sum(place(i):x(i,j);for(kind(j):sum(place(i):x(i,j)=c(j);for(place(i):sum(kind(j):x(i,j)=a(i);for(place(i):sum(kind(j):d(j)*x(i,j)=b(i);END得到結果如下:X(1,1)=0,X(1,2)=300,X(1,3)=0 X(2,1)=258.3333,X(2,2)=12.5,X(2,3)=0X(3,1)=0,X(3,2)=187.5,X(3,3)=0最大總凈收益為253333.3元。對本題來說,由于數據少,可以不采用數組形式,可直接采用變量,則建立模型如下:設農場1種植的甜菜、棉花和高粱分別為畝,農場2種植的甜菜、棉花和高粱分別為畝,農場3種植的甜菜、棉花和高粱分別為畝。根據題目條件,可建立如下線性模型:LINGO程序如下:MODEL:max=400*(x1+x2+x3)+300*(y1+y2+y3)+100*(z1+z2+z3);x1+x2+x3=600;y1+y2+y3=500;z1+z2+z3=325;x1+y1+z1=400;x2+y2+z2=600;x3+y3+z3=300;3*x1+2*y1+z1=600;3*x2+2*y2+z2=800;3*x3+2*y3+z3=1; !至少有一名后衛上場;x(1)+x(4)+x(6)=2; !如果1號和4號上場,則6號不上場;x(2)+x(8)=1; !2號和8號至少有一個不出場.即出場人數至多為1個;FOR(team(i):bin(x(i); !所有變量為0-1變量;END所得到的解為:x(1)=0,x(2)=1,x(3)=1,x(4)=1,x(5)=1,x(6)=1,x(7)=0,x(8)=0即第2,3,4,5,6名隊員被選上。最大平均身高為Z=1.864米5.有五項設計任務可供選擇。各項設計任務的預期完成時間分別為3,8,5,4,10(周)設計報酬分別為7,17,11,9,21(萬元)。設計任務只能一項一項地進行,總的期限為20周。選擇任務時必須滿足下面要求:(1) 至少完成3項設計任務。(2) 若選擇任務1,必須同時選擇任務2。(3) 任務3和任務4不能同時選擇。 應當選擇哪些任務,才能使總的設計報酬最大?分析與求解:這是一個0-1整數規劃問題。設0-1變量如下:設各項設計任務的完成時間為()表示,設計報酬為()表示。則容易得到目標函數:根據題目要求分別列出約束條件如下:總期限為避免20周,則約束條件為 至少完成3項設計任務,則若選擇任務1,必須同時選擇任務2,則。任務3和任務4不能同時選擇,則,該約束表達式表明任務3和任務4至多只能選擇1個。 因此對該問題建立的數學模型如下:LINGO程序如下:MODEL:SETS:mat/1.5/:m,t,x;ENDSETSDATA:m=7,17,11,9,21; !定義報酬數組;t=3,8,5,4,10; !定義完成時間;ENDDATAmax=SUM(mat(i):m(i)*x(i); !定義目標函數;SUM(mat(i):t(i)*x(i)=3; !至少完成3項任務;x(2)=x(1); !若選擇任務1,必須同時選擇任務2。;x(3)+x(4)=1; !任務3和任務4不能同時選擇。;FOR(mat(i):BIN(x(i); !使各變量為0-1變量;END得到的解為x(1)=1,x(2)=1,x(3)=1,x(4)=0,x(5)=0。最大報酬為35萬元。即在滿足各種約束條件下,選擇設計任務1,2,3,可使總報酬達到最大為35萬元。6 固定費用有四種資源被用于生產三種產品,資源量、產品單件可變費用、單件售價、資源單耗量及組織三種商品生產的固定費用見下表。現要求制定一個生產計劃,使總收益最大。產品單耗量資源IIIIII資源量A248500B234300C123100D357700單件可變費用4612固定費用100150200單件售價71020分析與求解:總收益等于銷售收入減去生產產品的固定費用與可變費用之和。問題的困難之處在于事先不知道某種產品是否生產,因而不能確定是否有相應的固定費用。可引入用0-1變量來解決是否需要固定費用問題。設是第種產品的產量,;再設 第I種產品銷售一件可收入7-4=3元,第II種產品銷售一件可收入10-6=4元,第III種產品銷售一件可收入20-12=8元。則問題的整數規劃模型為:其中為的某個上界。如根據第2個約束條件,可取, 。也可統一取其最大值。如果生產第種產品,則起產量。由約束條件知,此時相應的生產第種產品的固定費用在目標函數被考慮。如果不生產第種產品,則起產量。由約束條件知可為0也可為1。但顯然只有有利于目標函數最大,從而相應的生產第種產品的固定費用在目標函數將不被考慮。因此引入是合理的。下面是LINGO程序。MODEL:DATA:M=150;ENDDATAmax=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;!目標函數;2*x1+4*x2+8*x3=500;2*x1+3*x2+4*x3=300;x1+2*x2+3*x3=100;3*x1+5*x2+7*x3=700;x1=M*y1;x2=M*y2;x3New。啟動New屬性單,選擇Projects頁面。再選擇WIN32 Dynamic-Link Library。在右邊Project name標簽下的編輯框中任意輸入一個工程名。如CALC。點擊OK命令按鈕后就建立了一個新的空的工程。2選擇Project-Add to Project-New。在New屬性單中選擇File頁面。在下面空白框中選擇C+ Source File。在右邊File標簽下的編輯框中輸入一個文件名。如CB。3編輯C+程序CB.CPP如下:#include #include #include #include #include #define N 3#define DllExport extern C _declspec(dllexport) /該函數計算成本DllExport void MYUSER(int* NumArgs,double *x,double *dResult) double sum; if(*NumArgs=0&x0=41&x1=101&x1=0&x1=51&x1=0&x2=100) sum+=5*x2; else sum+=4*x2; *dResult=sum; /返回成本總值注意在程序中MYUSER函數的第一個整型變量NumArgs代表輸入的變量個數。根據LINGO調用時輸入的變量個數,可以在C+程序內部得到輸入變量的總數。第二個輸入為向量x,就是外部輸入的變量。第三個變量dResult用于返回最后的計算結果。用LINGO調用時只需要輸入各變量就行了,自然會返回C+程序計算的結果dResult。 變好程序后,按F7運行后生成動態庫CALC.DLL。將其拷貝到LINGO目錄下,并將文件名改名為MYUSER.DLL。啟動LINGO,就可以通過外部函數USER調用動態庫中自己編寫的函數。LINGO程序:!采用動態庫編寫自己的函數;MODEL:max=12*x1+7*x2+6*x3-USER(x1,x2,x3);!目標函數;x1+2*x2+x3=100; !技術服務的約束;10*x1+4*x2+5*x3=700; !直接勞動的約束;3*x1+2*x2+x3=400; !材料的約束;GIN(x1);GIN(x2);GIN(x3);end迭代6步得到局部最優解為x1=70,x2=0,x3=0。總利潤最大為210元。容易驗證,該局部最優解也是全局最優解。8.某企業和用戶簽定了設備交貨合同,已知該企業各季度的生產能力、每臺設備的生產成本和每季度末的交貨量見下表,若生產出的設備當季度不交貨,每臺設備每季度需要支付保管費0.1萬元,試問在遵守合同的條件下,企業應如何安排生產計劃,才能使年消耗費用最低?季度工廠生產能力(臺)交貨量(臺)每臺設備生產成本(臺)1251512.02352011.03302511.54202012.5分析與求解:方法1:設第季度生產臺,庫存臺,。第季度生產能力用表示,交貨量用表示,每臺設備生產成本用表示。則建立目標函數為:LINGO程序如下:MODEL:SETS:QUART/1.4/:x,y,p,d,c;ENDSETSDATA:!指定數據;p=25,35,30,20;d=15,20,25,20;c=12.0,11.0,11.5,12.5;ENDDATAmin=sum(QUART(i):c(i)*x(i)+0.1*y(i);!目標函數;FOR(QUART(i):x(i)=p(i); !生產能力限制;FOR(QUART(i)|i#GT#1:y(i)=y(i-1)+x(i)-d(i); y(1)=x(1)-d(1);end得到的結果如下:x1=15,x2=35,x3=30,x4=0;y1=0,y2=15,y3=20,y4=0。年消耗最小費用為913.5萬元。方法1:設第季度生產第季度交貨的臺數,第季度生產能力用表示,交貨量用表示,每臺設備生產成本用表示。由于生產能力的限制,需要滿足下面條件: 根據交貨量的規定,應滿足如下條件: 第季度生產第季度交貨的每臺設備所消耗的費用,應等于生產成本加上保管維護費用之和,其值如下表:生產季i交貨季j1234123412.012.111.012.211.111.512.311.211.612.5則該模型表示如下:LINGO程序如下:MODEL:SETS:QUART/1.4/:p,d;LINK(QUART,QUART)|&1#LE#&2:x,c; !只取上三角陣;ENDSETSDATA:!指定數據;p=25,35,30,20;d=15,20,25,20;c=12.0 12.1 12.2 12.3 11.0 11.1 11.2 11.5 11.6 12.5; ENDDATAMIN=SUM(LINK:c*x);!目標函數;FOR(QUART(i):SUM(QUART(j)|j#GE#i:x(i,j)=p(i); !生產能力限制;FOR(QUART(j):SUM(QUART(i)|i#LE#j:x(i,j)=d(j); !交貨合同限制;end得到的結果如下:X(1,1)=15,X(1,2)=0,X(1,3)=0,X(1,4)=0;X(2,2)=20,X(2,3)=0,X(2,4)=15。X(3,3)=25, X(3,4)=5;X(4,4)=0。年消耗最小費用為913.5萬元。可以看出,第1季度生產量為15臺,第2季度生產量為35臺,第3季度生產量為30臺,第4季度生產量為0臺,與前面方法得到的結果一樣。其最小費用也一樣。9 (TSP問題) 設有一個售貨員從10個城市中的某一個城市出發,去其它9個城市推銷產品。10個城市相互距離如下表。要求每個城市到達一次僅一次后,回到原出發城市。問他應如何選擇旅行路線,使總路程最短。城市1234567891010745861213111827031091451417173430591021827124510501491092316589914078720196614109701352513712521108130232118813148975230181291117272320252118016101817121619131812160問題分析與建模: 設城市之間距離用矩陣來表示,其中為下三角矩陣,表示城市與城市之間的距離。設0-1矩陣用來表示經過的各城市之間的路線。設 則該TSP問題轉化為如下線性模型:LINGO程序如下:!TSP quesion;MODEL:SETS:city/1.10/;link(city,city)|&1#GT#&2:d,s;ENDSETSDATA:d= 7 4 3 5 10 5 8 9 9 14 6 14 10 9 7 12 5 21 10 8 13 13 14 8 9 7 5 23 11 17 27 23 20 25 21 18 18 17 12 16 19 13 18 12 16;ENDDATA MIN=SUM(link:d*s); SUM(city(j)|j#GT#1:S(j,1)=2; !與第1個城市相連的有兩個城市; !與第i個城市相連有兩個城市; FOR(city(i)|i#GT#1:SUM(city(j)|j#GT#i:s(j,i)+ SUM(city(k)|k#LT#i:s(i,k)=2);FOR(link:BIN(s);得到的結果如下: S(3,2)=1,S(4,1)=1,S(4,3)=1,S(6,5)=1,S(7,2)=1,S(7,5)=1,S(8,6)=1,S(9,1)=1,S(10,8)=1,S(10,9)=1。其它全為0。 其最短路線為143275681091,最短距離為77公里。 10. 某公司有資金4萬元,可向A,B,C三個項目投資。已知各項目不同投資額的相應效益如下表。問如何分配資金可使總效益最大。項目 投資額(萬元) 01234A041486066B042506066C064687876模型分析與建立: 設項目有個,每個項目有種投資方式。第個項目的第種投資方式效益為萬元。則投資可有效益矩陣為來表示。每個項目的投資方式的資金分配用向量來表示。本題。 設 則可建立如下模型: LINGO程序如下:MODEL:SETS:item/1.3/;kind/1.5/:A;link(item,kind):S,C;ENDSETSDATA:A=0,1,2,3,4; !投資錢的情況;C=0,41,48,60,66, 0,42,50,60,66, 0,64,68,78,76; !投資矩陣;ENDDATAMAX=SUM(link:S*C);SUM(item(i):SUM(kind(j):S(i,j)*A(j)=4; !總共投資的錢為4萬元;FOR(item(i):SUM(kind(j):S(i,j)=1);!每個項目最多投資一次;FOR(LINK:BIN(S);!限制S(i,j)只能取0,1;END結果如下:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅政法大學《工程應用軟件》2023-2024學年第二學期期末試卷
- 重慶資源與環境保護職業學院《國際商務綜合模擬與實訓》2023-2024學年第二學期期末試卷
- 衡陽師范學院《小學教師課堂教學技能訓練》2023-2024學年第二學期期末試卷
- 廣西職業技術學院《趣說HR》2023-2024學年第二學期期末試卷
- 湖南女子學院《測試技術與傳感器》2023-2024學年第二學期期末試卷
- 濮陽科技職業學院《工程經濟與建設項目管理》2023-2024學年第二學期期末試卷
- 吉利學院《制藥過程自動化技術實驗》2023-2024學年第二學期期末試卷
- 大連汽車職業技術學院《媒介綜合設計》2023-2024學年第二學期期末試卷
- 蘭考三農職業學院《急危重癥護理學實訓》2023-2024學年第二學期期末試卷
- 賓館客房促銷活動方案
- 中華人民共和國民營經濟促進法
- 臨床類面試真題及答案
- 夫妻間借款協議合同
- 【8地一模 初二會考】2025年安徽省亳州市利辛縣中考一模地理試題(含解析)
- ktv服務員合同協議書范本
- 2025年中國心電電極片市場調查研究報告
- 監管方式(貿易方式)與征免性質與征免方式對應關系及其代碼和解釋
- 廣東省退休年齡新規定
- 2025-2030醫療設備器械行業市場發展分析及投資前景研究報告
- 城投公司競聘試題及答案
- 建筑施工企業售后服務保障方案
評論
0/150
提交評論