下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Lingo超经典案例大全LINGO是Linea门nteractive and General Optimizer 的缩写,即 交互式的线性和通用优化求 解器"。Lingo超强的优化计算能力在很多方面(线性规划、非线性规划、线性整数规划、非 线性整数规划、非线性混合规戈ij、二次规划等)比 matlab、maple等强得多,Lingo编程简 洁明了,数学模型不用做大的改动(或者不用改动)便可以直接采用Lingo语言编程,十分直观。Lingo模型由4个段构成:(1)集合段(sets endsets) ; (2)数据段(data enddata);(3)初始段(init endinit )
2、 ; (4)目标与约束段。Lingo的五大优点:1 .对大规模数学规划,LINGO语言所建模型较简洁,语句不多;2 .模型易于扩展,因为 FOR、SUM等语句并没有指定循环或求和的上下限,如果在集合定 义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;3 .数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据 部分即可,其它语句不变;4 .集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是 实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。5 .使用了集合以及FOR、SUM等集合操作函数以后可以用简洁的语句
3、表达出常见的规划模 型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.一、求解线性整数规划、非线性整数规划问题:1 .线性整数规划:Max工-为+a 2(951X】dX? < 1 14 2141 - 2Ali + E 3七.三> 0.再整数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.运用matlab求时可以发现有两组解:x1=3 , x2=1和x1=2 ,x2=2。通过验证也可知这两组解均满足。Ling
4、o的一个缺陷是:每次只能输出最优解中的一个(有时不只一个)。那么,怎样求得其他解呢? 一个办法是将求得的解作为约束条件,约束x1不等于3, x2不等于1,再求解。如下:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;gin(x1);gin(x2);abs(x1-3)>0.001;abs(x2-1)>0.001;end求得x1=2, x2=2.若再次排除这组解,发现 Lingo解不出第三组解了,这时我们可以断定: 此优化模型有两组解:x1=3 , x2=1 和 x1=2 , x2=2.求解模型时需注意:Lingo中,默认变量
5、均为非负;输出的解可能是最优解中的一组,要判 断、检验是否还有其他解(根据具体问题的解的情况或用排除已知最优解的约束条件法)。2、非线性整数规划:Max 二=a; + xj + 3x1 十 十 - 8-2x2 - 34 - x4 - 2a0 0 -Y.工 99 (? L.5)x.< 400I Z 34 J+ 2a + 2x3 + 工4 + 6x5 < 800lx. +6M < 200 LjLJ+.v4 +5x5 < 200model:sets:row/1.4/:b;col/1.5/:c1,c2,x;link(row,col):a;endsetsdata:c1=1,1,3
6、,4,2;c2=-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*xA2+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。这里,我们看不出是否还有其他解,需要将已知的最优解排除掉。利用1的方法分别可得到其他解:x1=48,x2=98,x3=1,x4=
7、98,x5=19. 最大值为 50330。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。发现x1, x2, x4, x5均单调减少,x3单调增加。最大值越来越小。可以简单判断第一组为 最优的。当然,能够一一检验最好。二、最优选择问题某钻井队要从10个可供选择的井位中确定 5个钻井探油,使总的钻探费用为最小。若10个井位的代号为 s1,s2,.,s10相应的钻探费用 c1,c2,c10为5,8,10
8、,6,9,5,7,6,10,8.并且井位选 择上要满足下列限制条件:(1)或选择s1和s7,或选择钻探s9;(2)选择了 s3或s4就不能选s5,或反过来也一样;(3) 在s5,s6,s7,s8中最多只能选两个.试建立这个问题的整数规划模型,确定选择的井位。取0-1变量s_i,若s_i=1,则表示选取第i个井,若s_i=0,则表示不选取第i个井。建立数学 模型如下:10min,sgt=iG + S7_2)(%_l) = 0S3s5 + S4s5 = 0s.A $5 +s& +j +% W 210铸=51-1& g0,1(z = 1,2,.,10)U 勾,jjricL.co(ri
9、i.c:ri/Li/?7tJ7aa7295model:sets:variables/1.10/:s,cost;endsetsdata:cost=5 8 10 6 9 5 7 6 10 8;enddatamin=sum(variables:cost*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: 26Variab
10、leS( 1)S( 2)Value1.0000001.0000000.000000Reduced Cost-4.0000000.0000002.000000S( 4)1.000000-2.000000S( 5)0.0000000.000000S( 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以达到最小费用 31.三、路径和最短问题:设平面上
11、有N个点,求一点,使得这个点到所有点距离之和最小。这里,取 N=8。数据点 是15的随机数。Lingo :model:sets:position/1.8/:x,y;ab/1/:a,b;endsetsdata:text('E:matlab7.0workdata.txt尸x,y;!读入到 matlab 的工作空间中;text('E:matlab7.0workdata1.txt尸a,b;enddatax(1)=1+4*rand(0.12345);y=1+4*rand(0.25);for(position(i)|i#ge#2:x(i)=1+4*rand(x(i-1);!随机产生 15
12、中的 8 个点;for(position(i)|i#ge#2:y(i)=1+4*rand(y(i-1);objmin=sum(position(i):sqrt(x(i)-aF2+(y(i)-b42);!目标函数;bnd(1,a(1),5);bnd(1,b(1),5);endmatlab :clear;clc;close all;load('data.txt');load('datal.txt');hold on;plot(data1(1),data1(2),'o','MarkerSize',15,'MarkerFaceCo
13、lor','r');plot(data(:,1),data(:,2),or','MarkerSize',15,'MarkerFaceColor','b');set(gcf,'Color','w');Solving the problem of the minimur distance of tne sum cf all the blue points towards the being known red point.23-Bing 金卜 s 1rderi/072 讷 7罚722I
14、,set(gca,'FontSize',16)grid off;data1=repmat(data1,8,1);P=data1(:,1)'data(:,1)'Q=data1(:,2)'data(:,2)'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 t
15、owardsthe being known red point.');gtext('The minimun distance is ',num2str(10.2685),'.','FontSize',16,'Color','r');三、运输+选址问题:某公司有6个建筑工地,位置坐标为(ai, bi)(单位:公里,水泥日用量di (单位:吨)i16a1.25b1.25d311B (2, 7),记(xj,yj),j=1,2,日储量 ej各有 20 吨。TH minirnun distance ii 102685
16、23458.750.55.7537.250.754.7556.57.755476现有2料场,位于A (5, 1),假设料场和工地之间有直线道路,制定每天的供应计划,即从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。取决策变量c_ij表示i工地从j料场运来的水泥量。模型(线性模型)为:26.min E Z S J区一y +(% - y尸 1 5=1(2:% = L 2,6Z% Ke,/ = 1,2model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25 8.75
17、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;x=5 2;y=i 7;e=20 20;enddataobjmin=sum(link(i,j):c(i,j)*sqrt(a(i)-x(j)A2+(b(i)-yO)A2);!目标函数;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.0000
18、00C( 3, 1)0.000000C( 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)Objective value:10.00000136.2275(2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下使总吨公里数最小。模型一样,未知量变为料场位置 (xj,yj)和运量cij ,变为非线性优化问题。model:sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(de
19、mand,supply):c;endsetsdata: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)A2+(b(i)-y(j)A2);!目标函数;for(demand(i):sum(supply(j):c(i,j)=d(i);for(supply(j):sum(demand(i):c(i,j)<=e(j);for(supply:fre
20、e(x);free(y);end求得:C( 1,1)3.000000C( 1,2)0.000000C( 2,1)0.000000C( 2, 2)5.000000C( 3, 1)4.000000C( 3, 2)0.000000C( 4, 1)7.000000C( 4, 2)0.000000C( 5,1)6.000000C( 5, 2)0.000000C( 6, 1)0.000000C( 6, 2)11.00000(x1 , y1) = (3.254884, 5.652331 )(x2, y2) = (7.250000, 7.750000)Objective value:85.26604四、路径最
21、短问题:如上图,求从S到T的最短路径。设d(x,y):城市x与城市y之间的直线距离;L(x)城市S到城 市x的最优行驶路线的路长。模型为:min L(x)+d(x,y)L(S)=0model:sets:city/S,A1,A2,A3,B1,B2,C1,C2,T/:L;road(city,city)/S,A1 S,A2 S,A3 A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2 B1,C1 B1,C2 B2,C1 B2,C2C1,T C2,T/:d;endsetsdata:d=6 3 36 5 8 6 7 46 7 8 95 6;L=0,6,3,3,;enddatafor(
22、city(j)|j#gt#index(city,S):L(j)=min(road(i,j):L(i)+d(i,j); end求得最短路径为20.五、指派问题(0-1规划问题):四个人完成4项任务所用的时间如下,取短?任务t1人员m124问如何指派任务使得完成所有任务的时间t2t3t41513m21510414m31391416m497811c_ij:表示第i个人完成第j项任务所用的时间;决策变量x_ij:若第i个人选择第j项任务则x_ij=1;否则,x_ij=0 ;模型为:44min汇2,产了7=1广4工 Xq =1/ = 123力41=14'X% =1J = 123"J=1
23、% £°JLmodel:sets:task/1.4/:t;man/1.4/:m;link(man,task):c,x;endsetsdata:c=2 15 13 410 4 14 159 14 16 137 8 11 9;enddataobjmin=sum(link:c*x);for(task(j):sum(man(i):x(i,j)=1);for(man(i):sum(task(j):x(i,j)=1);for(link:bin(x);end求得:最优指派为: m1-t4,m2-t2,m3-t1,m4-t3最优值为:28。六、装配线平衡模型(0-1规划问题)11件任务(A
24、K)分配到4个工作站(14),任务的优先次序如下图,每件任务所花 费的时间如下表。目标是为每个工作站分配加工任务,尽可能使每个工作站执行相同的任务量,其最终装配线周期最短。任务 ABCDEFGHIJK时间 45 11 9 50 15 12 12 12 12 8 9T(i):为完成第i项任务需要的时间。SETS:TASK/ ABCDEFGHIJK/: T; !任务集合,有一个完成时间属性T;PRED( TASK, TASK)/ A,B B,C C,F C,G F,J G,JJ,K D,E E,H E,I H,J I,J /; !任务之间的优先关系集合(A必须完成才能开始B,等等); STATIO
25、N/1.4/; !工作站集合;TXS( TASK, STATION): X;! X 是派生集合TXS的一个属性。如果X(I, K) =1,则表 示第I个任务指派给第K个工作立完成;ENDSETS DATA:T = 45 119 50 15 12 12 12 12 8 9; !任务 A B C D E F G H I JK 的完成时间;ENDDATAFOR( TASK( I): SUM( STATION( K): X( I, K) = 1); !每一个作业必须指派到一 个工 作站;FOR( PRED( I, J): SUM( STATION( K): X(I, K)-SUM( STATION(
26、K): X(J,K) )>=0); !对于每一个存在优先关系的作业对(I,J说,I先J后安排;FOR( STATION( K):SUM( TXS( I, K): T( I) * X( I, K) <= CYCTIME); !对于 每一个 工作站来说,其花费时间必须不大于装配线周期;MIN = CYCTIME; !目标函数是最小化转配线周期;FOR( TXS: BIN( X);脂定 X(I,J)为 0/1 变量; END解得最短周期为50. 分配情况为:A-1 , B-3 , C-4 , D-2 , E-3, F-4 , G-4 , H-3 , I-3 , J-4, K-4.七、选址
27、问题某海岛上有12个主要的居民点,每个居民点的位置(用平面坐标x,y表示,距离单位:km) 和居住的人数(r)如下表所示。现在准备在海岛上建一个服务中心为居民提供各种服务, 那么服务中心应该建在何处?x 0 8.20 0.50 5.70 0.77 2.87 4.43 2.58 0.72 9.76 3.19 5.55y 0 0.50 4.90 5.00 6.49 8.76 3.26 9.32 9.96 3.16 7.20 7.88r 600 1000 800 1400 1200 700 600 800 1000 1200 1000 1100设建在(a, b)处最合理。建立模型:mm/ = J(x
28、f-a)2 -b)2MODEL:SETS:VAR/1.12/:X,Y,R;ENDSETSDATA:X=0 8.20 0.50 5.70 0.77 2.87 4.43 2.58 0.72 9.76 3.19 5.55;Y=0 0.50 4.90 5.00 6.49 8.76 3.26 9.32 9.96 3.16 7.20 7.88;R=600 1000 800 1400 1200 700 600 800 1000 1200 1000 1100;ENDDATAMIN=SUM(VAR:SQRT(X-A)A2+(Y-BF2)*R);END求得:(a,b)=(3.601028,6.514223),最小
29、值为:44236.04。10Crrioooj>800>-ri700-1针.争100s1000 . 1;两 布9 opttmal pasitiuril产BQ。r=GOOL-;f=1200y r=1000910八、婚配问题:10对年龄相当的青年,任意一又男女青年配对的概率pij见下表。试给出一个配对方案,使总的配对概率最大。w1w2w3w4w5w6w7 w8;w9w10ml 0.58280.20910.41540.21400.68330.45140.60850.08410.1210 0.2319m2 0.42350.37980.30500.64350.21260.04390.01580
30、.4544 0.4508 0.2393m3 0.51550.78330.87440.32000.83920.02720.01640.4418 0.7159 0.0498m4 0.33400.68080.01500.96010.62880.31270.19010.3533 0.8928 0.0784m5 0.43290.46110.76800.72660.13380.01290.58690.1536 0.2731 0.6408m6 0.22590.56780.97080.41200.20710.38400.05760.6756 0.2548 0.1909m7 0.57980.79420.9901
31、0.74460.60720.68310.36760.6992 0.8656 0.8439m8 0.76040.05920.78890.26790.62990.09280.63150.7275 0.2324 0.1739m9 0.52980.60290.43870.43990.37050.03530.71760.4784 0.8049 0.1708m10 0.64050.05030.49830.93340.57510.61240.69270.5548 0.9084 0.9943取xx_ij为0-1型决策变量。模型为:10 10max/ = nS P*j£=1尸r 10f=l10,小 V
32、x. = 1(,= 1240) J7 = 1,e 0,1kmodel: sets:man/m1.m10/;woman/w1.w10/;link(man,woman):p,x;endsetsdata:p=0.58280.20910.41540.21400.68330.45140.60850.08410.12100.23190.42350.37980.30500.64350.21260.04390.01580.45440.45080.23930.51550.78330.87440.32000.83920.02720.01640.44180.71590.04980.33400.68080.01500
33、.96010.62880.31270.19010.35330.89280.07840.43290.46110.76800.72660.13380.01290.58690.15360.27310.64080.22590.56780.97080.41200.20710.38400.05760.67560.25480.19090.57980.79420.99010.74460.60720.68310.36760.69920.86560.84390.76040.05920.78890.26790.62990.09280.63150.72750.23240.17390.52980.60290.43870
34、.43990.37050.03530.71760.47840.80490.17080.64050.05030.49830.93340.57510.61240.69270.55480.90840.9943;enddatamax=prod(man(i):sum(woman(j):p(i,j)*x(i,j );for(woman(j):sum(link(i,j):x(i,j)=1);for(man(i):sum(link(i,j):x(i,j)=1);for(link:bin(x);end求解结果:m1-w5,m2-w8,m3-w2,m4-w4,m5-w7,m6-w3,m7-w6,m8-w1,m9-
35、w9,m10-w10.最大值为0.055.九、护士值班安排问题某医院,从周一到周日都要有人值班,每天至少需要的护士如表。要求每个护士每周连续上班5天,试问该医院至少需要多少护士?并给出上班安排计划。周 1 2 3 4 5 6 7人 20 16 13 16 19 14 12取决策变量star (i)周i开始值班的人数;目标函数:min sumstar(i) (i=1,2,3 ,7)约束条件:连续工作五天,周j值班的人数>=required (j) (j=1,2,3,7)model:sets:days/mon.sun/: required,start;endsetsdata:!每天所需的最少
36、职员数;required = 20 16 13 16 19 14 12;enddata!最小化每周所需职员数;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人,周五3人, 周六3人,周日0人。十、填数问题分别把1,2,16填到图示的16个圈,使得每个三角形上的所有圈的数的和为81 (共4个三角形)。把圆圈编号决策变量:e_ij=1,第i个圈填数a_j;e_ij=0,第i个圈不填数
37、a_j。a_j=j,j=1,2,3,,16。模型:16max > e. a.工f 16=1361,7=116=81(左= 1,2,3,4)f出16s t 2X = 1(/ = 12/6)1=116X 号=1。= 12 ,16)产1% w10)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 8 9 1 1
38、0 11 12 13 14/;endsetsdata:a=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;enddataobjmax=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)=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):s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地层测试工安全生产规范水平考核试卷含答案
- 公司生猪屠宰加工工职业健康及安全技术规程
- 公司紫胶蒸发工岗位工艺技术规程
- 石质文物修复师岗位职业健康及安全技术规程
- 绿色润滑剂减摩机理-洞察与解读
- 物业智能社区活动创新创业项目商业计划书
- 电子聚酰亚胺(PI)创新创业项目商业计划书
- 胸腔镜手术辅助设备企业制定与实施新质生产力项目商业计划书
- 2025家政公司服务合同样本
- 建筑公司招标投标管理流程
- 南湖红船景区讲解
- 2025年少先队辅导员知识竞赛题库及答案
- 2023年游泳竞赛规则
- 供货进度保证措施方案
- 2025至2030可穿戴生命体征监护仪行业市场占有率及投资前景评估规划报告
- 教师待岗人员管理办法
- 规培中医基础理论
- 三级安全教育试题及答案(包含公司级、部门级、班组级)
- 2025至2030中国碳中和产业发展分析及投资机会分析报告
- 食品生产许可培训课件
- 市场监督管理行政执法
评论
0/150
提交评论