1/12Lingo精选题目及答案答题要求:将Lingo程序复制到Word文档中,并且附上最终结果。1、简单线性规划求解(目标函数)2134maxxxzs.t.(约束条件)0,781022122121xxxxxxx2、整数规划求解219040Maxxxz0,702075679212121xxxxxx3、0-1规划求解Max432215.18.04.0xxxxf10106234321xxxx10,,,4321或xxxx4、非线性规划求解||4||3||2||min4321xxxxzs.t.2132130432143214321xxxxxxxxxxxx5、集合综合应用产生一个集合5052xxy,(10,...,2,1x),求y前6个数的和S1,后6个数的和S2,第2~8个数中的最小值S3,最大值S4。6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo程序和最终结果。6.1指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:工作工人ABCD甲15182124乙19232218丙26171619丁19212317问指派哪个人去完成哪项工作,可使总的消耗时间为最小?2/126.2分配问题某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。问如何分配供煤量使得运输量(即t·km)达到最小?1、model:max=4*x1+3*x2;2*x1+x210;x1+x28;x27;end2、model:max=40*x1+90*x2;9*x1+7*x256;7*x1+20*x270;@gin(x1);@gin(x2);end3、model:max=x1^2+0.4*x2+0.8*x3+1.5*x4;3*x1+2*x2+6*x3+10*x410;@bin(x1);@bin(x2);@bin(x3);@bin(x4);end4、model:max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);x1-x2-x3+x4=0;x1-x2+x3-3*x4=1;x1-x2-2*x3+3*x4=-1/2;end5、model:sets:jihe/1..10/:y;ss/1..4/:S;endsets!由于y和s中部分有负数,所以要先去掉这个约束;@for(jihe:@free(y));@for(ss(i):@free(S));!产生元素;3/12@for(jihe(x):y(x)=x^2-5*x-50);S(1)=@sum(jihe(i)|i#le#6:y(i));S(2)=@sum(jihe(i)|i#ge#5:y(i));S(3)=@min(jihe(i)|i#ge#2#and#i#le#8:y(i));S(4)=@max(jihe(i)|i#ge#2#and#i#le#8:y(i));end6.1、设:第i个工人做第j项工作用时ijt,标志变量ijf定义如下:其他件工作个工人去做第指派第01jifijmin4141ijijijtfs.t.141iijf4,3,2,1j每份工作都有一人做411jijf4,3,2,1i每人都只做一项工作model:sets:work/ABCD/;worker/jiayibingding/;time(worker,work):t,f;endsets!目标函数可以用[obj]标志出,也可以省略;[obj]min=@sum(time(i,j):t(i,j)*f(i,j));data:!可以直接复制表格,但是在最后要有分号;t=15182124192322182617161919212317;enddata!每份工作都有一人做;@for(work(j):@sum(time(i,j):f(i,j))=1);!每人都只做一项工作;@for(worker(i):@sum(time(i,j):f(i,j))=1);!让f取0-1值,此条件可以省略;!@for(time(i,j):@bin(f(i,j)));end6.2设:煤厂进煤量is,居民区需求量为id,煤厂i距居民区j的距离为ijL,煤厂i供给4/12居民区j的煤量为ijg那么可以列出如下优化方程式3121minjiijijLgs.t3,2,121jdgijij2,131isgjiijmodel:sets:supply/1,2/:s;demand/1,2,3/:d;link(supply,demand):road,sd;endsetsdata:road=10564812;d=507040;s=60100;enddata[obj]min=@sum(link(i,j):road(i,j)*sd(i,j));@for(demand(i):@sum(supply(j):sd(j,i))=d(i));@for(supply(i):@sum(demand(j):sd(i,j))s(i));end5/121.线性规划模型。某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。表1相关数据要害部位离机场距离(千米)摧毁可能性每枚重型弹每枚轻型弹12344504805406000.100.200.150.250.080.160.120.20为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案。2、资源配置模型。某工厂有原料钢管:每根19米,用户需求4米50根,6米20根,8米15根。如何下料钢管剩余总余量最小?由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。表1不同切割的模式模式4米钢管根数6米钢管根数8米钢管根数余料(米)140032310132013412035111160301700233、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量。其中(x,y)中x表示容量,y表示费用。图1网络图123456(3,3)(6,5)6/12题目解答1.线性规划模型。解:设用了x枚重型炸弹,用了y枚轻型炸弹,攻击的是第i个部位,再设一标志变量f定义如下:个部位不攻击第个部位攻击第iifi01目标函数为:41maxiiliihfpypx480002004/3/2004/2/iiiiddyddx48x,32y141iifmodel:sets:pd/1..4/:Ph,Pl,d,f;endsetsdata:d=450,480,540,600;Ph=0.1,0.2,0.15,0.25;Pl=0.08,0.16,0.12,0.2;enddatamax=@sum(pd(i):(x*Ph(i)+y*Pl(i))*f(i));@for(pd(i):x*(d(i)/2+d(i)/4+200)+y*(d(i)/3+d(i)/4)+20048000);x48;y32;@for(pd(i):@bin(f(i)));@sum(pd(i):f(i))=1;!验证用油量;!l=x*(d(4)/2+d(4)/4+200)+y*(d(4)/3+d(4)/4)+200;end2、资源配置模型。某工厂有原料钢管:每根19米,用户需求4米50根,6米20根,8米15根。如何下料钢管剩余总余量最小?由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。表1不同切割的模式模式4米钢管根数6米钢管根数8米钢管根数余料(米)14003231013201341203511116030170023设:模式i的供应量为im,对于第i种模式,切割的4米钢管根数,6米钢管根数,8米钢7/12管根数,分别为ijt,余料为is,每种钢管的需求量分别为id,再设一标志变量f定义如下:种模式不采用第种模式采用第iifi01目标函数:min71iiiimsfjjiijidmtf71i=1,2,…,7713iifmodel:sets:mode/1..7/:m,s,f;demand/1..3/:d;md(mode,demand):t;endsetsdata:s=3133113;d=502015;t=400310201120111030002;enddata[obj]min=@sum(mode(i):f(i)*s(i)*m(i));@for(demand(j):@sum(mode(i):f(i)*m(i)*t(i,j))=d(j));@for(mode(i):@bin(f(i)));@sum(mode(i):f(i))3;end3、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量和最大流量下的最小费用。其中(x,y)中x表示容量,y表示费用。8/12图1网络图1)求最小费用,解法一:稀疏矩阵0-1规划法假设图中有n个原点,现需要求从定点1到n的最短路。设决策变量为ijf,当1ijf,说明弧(i,j)位于定点1至定点n的路上;否则0ijf,其数学规划表达式为minninjijijfw11约束条件,源点只有一条路指出去,终点只有一条路指进来,其余各点指进去的和指出去的相等,表达式如下,niniiffnjjinjij,10,1,1111model:sets:node/1..6/;road(node,node)/12,13,24,25,34,35,46,56/:w,f;endsetsdata:w=21534300;enddatan=@size(node);[obj]min=@sum(road(i,j):w(i,j)*f(i,j));@for(node(i)|i#ne#1#and#i#ne#n:@sum(road(i,j):f(i,j))=@sum(road(j,i):f(j,i)));@sum(road(i,j)|i#eq#1:f(i,j))=1;!下面这个条件可以省略,这个条件包含在上面的条件了,因为如果满足上面所以的条件指向终点的路只有且只有一条;@sum(road(j,i)|i#eq#n:f(j,i))=1;end123456(3,3)(6,5)9/12解法二:求源点到任意点的最小费用,动态规划法。求16的最小费用,只要求14+46和15+56中的最小费用,以同样的方法向上推,求14的最小费用只要求出12+24和13+34中的最小费用即可。可以归纳出如下的表达式:01LijcjLiLij,min,1imodel:sets:node/1..6/:L;road(node,node)/12,13,24,25,34,35,46,56/:c;endsetsdata:c=21534300;enddataL(1)=0;!求一点到任意点的最小费用;@for(node(i)|i#gt#1:L(i)=@min(road(j,i)|j#ne#i:(L(j)+c(j,i))));end解法三:邻接矩阵法。如果Evvji,,则称jv与iv邻接,具有n个顶点的图的邻接矩阵是一个n×n阶矩阵nnijaA,其分量为