版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Lingo超經(jīng)典案例大全LINGO是Linear Interactive and General Optimizer的縮寫,即“交互式的線性和通用優(yōu)化求解器”。Lingo超強(qiáng)的優(yōu)化計算能力在很多方面(線性規(guī)劃、非線性規(guī)劃、線性整數(shù)規(guī)劃、非線性整數(shù)規(guī)劃、非線性混合規(guī)劃、二次規(guī)劃等)比matlab、maple等強(qiáng)得多,Lingo編程簡潔明了,數(shù)學(xué)模型不用做大的改動(或者不用改動)便可以直接采用Lingo語言編程,十分直觀。Lingo模型由4個段構(gòu)成:(1)集合段(setsendsets);(2)數(shù)據(jù)段(dataenddata);(3)初始段(init endinit);(4)目標(biāo)與約束段。Ling
2、o的五大優(yōu)點(diǎn):1. 對大規(guī)模數(shù)學(xué)規(guī)劃,LINGO語言所建模型較簡潔,語句不多;2. 模型易于擴(kuò)展,因為FOR、SUM等語句并沒有指定循環(huán)或求和的上下限,如果在集合定義部分增加集合成員的個數(shù),則循環(huán)或求和自然擴(kuò)展,不需要改動目標(biāo)函數(shù)和約束條件;3. 數(shù)據(jù)初始化部分與其它部分語句分開,對同一模型用不同數(shù)據(jù)來計算時,只需改動數(shù)據(jù)部分即可,其它語句不變;4. “集合”是LINGO有特色的概念,它把實(shí)際問題中的事物與數(shù)學(xué)變量及常量聯(lián)系起來,是實(shí)際問題到數(shù)學(xué)量的抽象,它比C語言中的數(shù)組用途更為廣泛。5. 使用了集合以及FOR、SUM等集合操作函數(shù)以后可以用簡潔的語句表達(dá)出常見的規(guī)劃模型中的目標(biāo)函數(shù)和約束條
3、件,即使模型有大量決策變量和大量數(shù)據(jù),組成模型的語句并不隨之增加一、求解線性整數(shù)規(guī)劃、非線性整數(shù)規(guī)劃問題:1.線性整數(shù)規(guī)劃:model:max=x1+x2;x1+9/14*x2=51/14;-2*x1+x2=1/3;gin(x1);gin(x2);end求得x1=3,x2=1,最大值為4.運(yùn)用matlab求時可以發(fā)現(xiàn)有兩組解:x1=3,x2=1和x1=2,x2=2。通過驗證也可知這兩組解均滿足。Lingo的一個缺陷是:每次只能輸出最優(yōu)解中的一個(有時不只一個)。那么,怎樣求得其他解呢?一個辦法是將求得的解作為約束條件,約束x1不等于3,x2不等于1,再求解。如下:model:max=x1+x2
4、;x1+9/14*x2=51/14;-2*x1+x20.001;abs(x2-1)0.001;end求得x1=2,x2=2.若再次排除這組解,發(fā)現(xiàn)Lingo解不出第三組解了,這時我們可以斷定:此優(yōu)化模型有兩組解:x1=3,x2=1和x1=2,x2=2.求解模型時需注意:Lingo中,默認(rèn)變量均為非負(fù);輸出的解可能是最優(yōu)解中的一組,要判斷、檢驗是否還有其他解(根據(jù)具體問題的解的情況或用排除已知最優(yōu)解的約束條件法)。2、非線性整數(shù)規(guī)劃:model:sets:row/1.4/:b;col/1.5/:c1,c2,x;link(row,col):a;endsetsdata:c1=1,1,3,4,2;c2
5、=-8,-2,-3,-1,-2;a=1 1 1 1 11 2 2 1 62 1 6 0 00 0 1 1 5;b=400,800,200,200;enddatamax=sum(col:c1*x2+c2*x);for(row(i):sum(col(j):a(i,j)*x(j)b(i);for(col:gin(x);for(col:bnd(0,x,99);End求得:x1=50,x2=99,x3=0,x4=99,x5=20.最大值為51568。這里,我們看不出是否還有其他解,需要將已知的最優(yōu)解排除掉。利用1的方法分別可得到其他解:x1=48,x2=98,x3=1,x4=98,x5=19.最大值為5
6、0330。x1=45,x2=97,x3=2,x4=97,x5=18.最大值為49037。x1=43,x2=96,x3=3,x4=96,x5=17.最大值為47859。x1=40,x2=95,x3=4,x4=95,x5=16.最大值為46636。.發(fā)現(xiàn)x1,x2,x4,x5均單調(diào)減少,x3單調(diào)增加。最大值越來越小??梢院唵闻袛嗟谝唤M為最優(yōu)的。當(dāng)然,能夠一一檢驗最好。二、最優(yōu)選擇問題某鉆井隊要從10個可供選擇的井位中確定5個鉆井探油,使總的鉆探費(fèi)用為最小。若10個井位的代號為s1,s2,.,s10,相應(yīng)的鉆探費(fèi)用c1,c2,.,c10為5,8,10,6,9,5,7,6,10,8.并且井位選擇上要滿
7、足下列限制條件:(1) 或選擇s1和s7,或選擇鉆探s9;(2) 選擇了s3或s4就不能選s5,或反過來也一樣;(3) 在s5,s6,s7,s8中最多只能選兩個.試建立這個問題的整數(shù)規(guī)劃模型,確定選擇的井位。取0-1變量s_i,若s_i=1,則表示選取第i個井,若s_i=0,則表示不選取第i個井。建立數(shù)學(xué)模型如下:model:sets:variables/1.10/:s,cost;endsetsdata:cost=5 8 10 6 9 5 7 6 10 8;enddata HYPERLINK mailto:min=sum(variables:cost*s min=sum(variables:c
8、ost*s);(s(1)+s(7)-2)*(s(9)-1)=0;s(3)*s(5)+s(4)*s(5)=0;sum(variables(i)|i#ge#5#and#i#le#8:s(i)=2;sum(variables:s)=5;for(variables:bin(s);end求得:Total solver iterations:26VariableValueReduced CostS( 1)1.000000-4.000000S( 2)1.0000000.000000S( 3)0.0000002.000000S( 4)1.000000-2.000000S( 5)0.0000000.000000
9、S( 6)1.000000-1.000000S( 7)1.0000000.000000S( 8)0.0000000.000000S( 9)0.0000002.000000S( 10)0.0000000.000000Objective value:31.00000即選擇井S1,S2,S4,S6,S7以達(dá)到最小費(fèi)用31.三、路徑和最短問題:設(shè)平面上有N個點(diǎn),求一點(diǎn),使得這個點(diǎn)到所有點(diǎn)距離之和最小。這里,取N=8。數(shù)據(jù)點(diǎn)是15的隨機(jī)數(shù)。Lingo:model:sets:position/1.8/:x,y;ab/1/:a,b;endsetsdata:text(E:matlab7.0workdata.t
10、xt)=x,y;!讀入到matlab的工作空間中;text(E:matlab7.0workdata1.txt)=a,b;enddatax(1)=1+4*rand(0.12345);y(1)=1+4*rand(0.25);for(position(i)|i#ge#2:x(i)=1+4*rand(x(i-1);!隨機(jī)產(chǎn)生15中的8個點(diǎn);for(position(i)|i#ge#2:y(i)=1+4*rand(y(i-1);objmin=sum(position(i):sqrt(x(i)-a(1)2+(y(i)-b(1)2);!目標(biāo)函數(shù);bnd(1,a(1),5);bnd(1,b(1),5);end
11、matlab:clear;clc;close all;load(data.txt);load(data1.txt);hold on;plot(data1(1),data1(2),o,MarkerSize,15,MarkerFaceColor,r);plot(data(:,1),data(:,2),or,MarkerSize,15,MarkerFaceColor,b);set(gcf,Color,w);set(gca,FontSize,16)grid off;data1=repmat(data1,8,1);P=data1(:,1);data(:,1);Q=data1(:,2);data(:,2)
12、;plot(P,Q,g,LineWidth,2);xlabel(x);ylabel(y);title(Solving the problem of the minimun distance of tne sum of all the blue points towards the being known red point.);gtext(The minimun distance is ,num2str(10.2685),.,FontSize,16,Color,r);三、運(yùn)輸+選址問題:某公司有6個建筑工地,位置坐標(biāo)為(ai, bi) (單位:公里),水泥日用量di (單位:噸)i123456
13、a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611(1)現(xiàn)有2料場,位于A(5,1),B(2,7),記(xj,yj),j=1,2,日儲量ej各有20噸。假設(shè)料場和工地之間有直線道路,制定每天的供應(yīng)計劃,即從A, B兩料場分別向各工地運(yùn)送多少噸水泥,使總的噸公里數(shù)最小。取決策變量c_ij表示i工地從j料場運(yùn)來的水泥量。模型(線性模型)為:model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25 8.75 0.5 5.75 3 7.
14、25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;x=5 2;y=1 7;e=20 20;enddataobjmin=sum(link(i,j):c(i,j)*sqrt(a(i)-x(j)2+(b(i)-y(j)2);!目標(biāo)函數(shù);for(demand(i):sum(supply(j):c(i,j)=d(i);for(supply(j):sum(demand(i):c(i,j)=e(j);end求得:C( 1, 1)3.000000C( 1, 2)0.000000C( 2, 1)5.000000C( 2, 2)0.000000C( 3, 1)0.0000
15、00C( 3, 2)4.000000C( 4, 1)7.000000C( 4, 2)0.000000C( 5, 1)0.000000C( 5, 2)6.000000C( 6, 1)1.000000C( 6, 2)10.00000Objective value:136.2275(2)改建兩個新料場,需要確定新料場位置(xj,yj)和運(yùn)量cij,在其它條件不變下使總噸公里數(shù)最小。模型一樣,未知量變?yōu)榱蠄鑫恢?xj,yj)和運(yùn)量cij ,變?yōu)榉蔷€性優(yōu)化問題。model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;end
16、setsdata:a=1.25 8.75 0.5 5.75 3 7.25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;e=20 20;enddatainit:x=5 2;y=1 7;endinitobjmin=sum(link(i,j):c(i,j)*sqrt(a(i)-x(j)2+(b(i)-y(j)2);!目標(biāo)函數(shù);for(demand(i):sum(supply(j):c(i,j)=d(i);for(supply(j):sum(demand(i):c(i,j)=0);!對于每一個存在優(yōu)先關(guān)系的作業(yè)對(I,J)來說,I先J后安排;FOR(STATI
17、ON(K):SUM(TXS(I,K):T(I)*X(I,K)=required(j)(j=1,2,3,.,7)model:sets:days/mon.sun/: required,start;endsetsdata:!每天所需的最少職員數(shù);required = 20 16 13 16 19 14 12;enddata!最小化每周所需職員數(shù);min=sum(days: start);for(days(J):sum(days(I) | I #le# 5:start(wrap(J+2+I,7) = required(J);end解得:總共需要22人,周一8人開始值班,周二2人,周三0人,周四6人,周
18、五3人,周六3人,周日0人。十、填數(shù)問題分別把1,2,16填到圖示的16個圈內(nèi),使得每個三角形上的所有圈內(nèi)的數(shù)的和為81(共4個三角形)。決策變量:e_ij=1,第i個圈填數(shù)a_j;e_ij=0,第i個圈不填數(shù)a_j。a_j=j,j=1,2,3,.,16。模型:model:sets:number/1.16/:a;link(number,number):e;tri1(number)/1 2 3 4 5 6 7 8 9/;tri2(number)/1 2 3 4 16 15 12 11 10/;tri3(number)/4 5 6 7 14 13 12 15 16/;tri4(number)/7
19、8 9 1 10 11 12 13 14/;endsetsdata:a=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;enddataobj HYPERLINK mailto:max=sum(link(i,j):e(i,j)*a(j max=sum(link(i,j):e(i,j)*a(j);for(number(i):sum(link(i,j):e(i,j)=1);for(number(j):sum(link(i,j):e(i,j)=1);for(link(i,j):bin(e(i,j);sum(number(j):sum(tri1(i):e(i,j)*a(j)
20、=81;sum(number(j):sum(tri2(i):e(i,j)*a(j)=81;sum(number(j):sum(tri3(i):e(i,j)*a(j)=81;sum(number(j):sum(tri4(i):e(i,j)*a(j)=81;sum(link(i,j):e(i,j)*a(j)=136;end紅色的那句程序可以去掉,也可以為: HYPERLINK mailto:min=sum(link(i,j):e(i,j)*a(j min=sum(link(i,j):e(i,j)*a(j),但求的結(jié)果不同,結(jié)果都符合要求。編號116的圓圈的填數(shù)結(jié)果至少有3種:(1)12 11 1
21、10 7 8 14 13 5 9 4 16 2 6 15 3(2)14 3 5 15 8 7 13 4 12 6 11 10 9 2 16 1(3)14 11 4 15 9 8 13 2 5 16 3 10 12 6 1 7為了求得更多的解,可以約束編號116的圓圈的填數(shù)結(jié)果不為以上3種結(jié)果。model:sets:number/1.16/:a;link(number,number):e;tri1(number)/1 2 3 4 5 6 7 8 9/;tri2(number)/1 2 3 4 16 15 12 11 10/;tri3(number)/4 5 6 7 14 13 12 15 16/
22、;tri4(number)/7 8 9 1 10 11 12 13 14/;yueshu1:c1;yueshu2:c2;yueshu3:c3;endsetsdata:a=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;c1=12 11 1 10 7 8 14 13 5 9 4 16 2 6 15 3;c2=14 3 5 15 8 7 13 4 12 6 11 10 9 2 16 1;c3=14 11 4 15 9 8 13 2 5 16 3 10 12 6 1 7;enddataobjmin=sum(number(i):sum(number(j):e(i,j)*a
23、(j);for(number(i):sum(number(j):e(i,j)=1);for(number(j):sum(link(i,j):e(i,j)=1);for(link(i,j):bin(e(i,j);sum(number(j):sum(tri1(i):e(i,j)*a(j)=81;sum(number(j):sum(tri2(i):e(i,j)*a(j)=81;sum(number(j):sum(tri3(i):e(i,j)*a(j)=81;sum(number(j):sum(tri4(i):e(i,j)*a(j)=81;sum(link(i,j):e(i,j)*a(j)=136;s
24、um(yueshu1(j):sum(link(i,j):e(i,j)16;sum(yueshu2(j):sum(link(i,j):e(i,j)16;sum(yueshu3(j):sum(link(i,j):e(i,j)16;end解得:(4)12 15 11 10 3 8 16 1 5 4 7 14 9 13 2 6可以繼續(xù)下去:十一、數(shù)獨(dú)求解在琳瑯在線數(shù)獨(dú)隨機(jī)截取一至尊級題目如下:用Lingo求解這道題。附錄資料:matlab畫二次曲面一、螺旋線1.靜態(tài)螺旋線a=0:0.1:20*pi;h=plot3(a.*cos(a),a.*sin(a),2.*a,b,linewidth,2);axis
25、(-50,50,-50,50,0,150);grid onset(h,erasemode,none,markersize,22);xlabel(x軸);ylabel(y軸);zlabel(z軸);title(靜態(tài)螺旋線); 2.動態(tài)螺旋線t=0:0.1:10*pi;i=1;h=plot3(sin(t(i),cos(t(i),t(i),*,erasemode,none);grid onaxis(-2 2 -2 2 0 35)for i=2:length(t) set(h,xdata,sin(t(i),ydata,cos(t(i),zdata,t(i); drawnow pause(0.01)en
26、dtitle(動態(tài)螺旋線);(圖略) 3.圓柱螺旋線t=0:0.1:10*pi;x=r.*cos(t);y=r.*sin(t);z=t;plot3(x,y,z,h,linewidth,2);grid onaxis(square)xlabel(x軸);ylabel(y軸);zlabel(z軸);title(圓柱螺旋線) 二、旋轉(zhuǎn)拋物面b=0:0.2:2*pi;X,Y=meshgrid(-6:0.1:6);Z=(X.2+Y.2)./4;meshc(X,Y,Z);axis(square)xlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(旋轉(zhuǎn)拋物面
27、)或直接用:ezsurfc(X.2+Y.2)./4) 三、橢圓柱面load clownezsurf(2*cos(u),4*sin(u),v,0,2*pi,0,2*pi)view(-105,40) %視角處理shading interp %燈光處理colormap(map) %顏色處理grid on %添加網(wǎng)格線axis equal %使x,y軸比例一致xlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(橢圓柱面) %添加標(biāo)題四、橢圓拋物面b=0:0.2:2*pi;X,Y=meshgrid(-6:0.1:6);Z=X.2./9+Y.2./4;m
28、eshc(X,Y,Z);axis(square)xlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(橢圓拋物面)或直接用:ezsurfc(X.2./9+Y.2./4)五、雙葉雙曲面ezsurf(8*tan(u)*cos(v),8.*tan(u)*sin(v),2.*sec(u),-pi./2,3*pi./2,0,2*pi)axis equalgrid onaxis squarexlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(雙葉雙曲面)六、雙曲柱面load clownezsurf(2*s
29、ec(u),2*tan(u),v,-pi/2,pi/2,-3*pi,3*pi)hold on %在原來的圖上繼續(xù)作圖ezsurf(2*sec(u),2*tan(u),v,pi/2,3*pi/2,-3*pi,3*pi)colormap(map)shading interpview(-15,30)axis equalgrid onaxis equalxlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(雙曲柱面)七、雙曲拋物面(馬鞍面)X,Y=meshgrid(-7:0.1:7);Z=X.2./8-Y.2./6;meshc(X,Y,Z);view(
30、85,20)axis(square)xlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(雙曲拋物面)或直接用:ezsurfc(X.2./8-Y.2./6) 八、拋物柱面X,Y=meshgrid(-7:0.1:7);Z=Y.2./8;h=mesh(Z);rotate(h,1 0 1,180) %旋轉(zhuǎn)處理%axis(-8,8,-8,8,-2,6);axis(square)xlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(拋物柱面)或直接用:ezsurfc(Y.2./8) 九、環(huán)面ezmesh(5+2*cos(u)*cos(v),(5+2*cos(u)*sin(v),2*sin(u),0,2*pi,0,2*pi)axis equalgrid onxlabel(x軸);ylabel(y軸);zlabel(z軸);shading flat;title(環(huán)面)十、橢球ezsurfc(5*cos(u)*sin(v),(3*sin(u)*sin(v),4*cos(v),0,2*pi,0,2*pi)axis equalgrid onxlabe
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 假期讀一本好書讀后感900字(12篇)
- 2024全新能源開發(fā)項目投資與合作合同
- 中式快餐創(chuàng)業(yè)計劃書
- 2024年工業(yè)設(shè)備維修協(xié)議
- 2024年度4S店租賃期內(nèi)公共區(qū)域維護(hù)與管理協(xié)議
- 2024年建筑工程消防設(shè)計與施工合同
- 2024年企業(yè)廣告發(fā)布與媒體投放合同
- 2024年大數(shù)據(jù)分析與應(yīng)用服務(wù)協(xié)議
- 2024年度「惠州技術(shù)開發(fā)」合同標(biāo)的:技術(shù)研發(fā)與成果共享
- 2024年工程項目混凝土供應(yīng)合同
- 幼兒園繪本故事:《袁隆平》 課件
- GB∕T 19492-2020 油氣礦產(chǎn)資源儲量分類
- 建設(shè)工程資料用表(全套)
- 中考物理之透鏡作圖(含解析)
- DB33∕T 1251-2021 燃?xì)庥脩粼O(shè)施安全檢查標(biāo)準(zhǔn)
- 車輛評估報告格式(共7頁)
- 江都特校培智部八年級初二語文期終試卷(A)
- GB∕T 10544-2022 橡膠軟管及軟管組合件 油基或水基流體適用的鋼絲纏繞增強(qiáng)外覆橡膠液壓型 規(guī)范
- 分布式光伏電站視頻監(jiān)控系統(tǒng)典型配置方案
- (完整版)全身體格檢查評分標(biāo)準(zhǔn)(表)
- 通信管道隱蔽工程檢查記錄
評論
0/150
提交評論