Lingo 精选题目及答案答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。
1、简单线性规划求解(目标函数)2134m axx x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x2、整数规划求解219040Maxx x z +=⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x x 3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x4、非线性规划求解||4||3||2||m in4321x x x x z +++=s.t. ⎪⎪⎩⎪⎪⎨⎧-=+--=-+-=+--2132130432143214321x x x x x x x x x x x x5、集合综合应用产生一个集合5052--=x x y ,(10,...,2,1=x ),求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。
6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。
6.1 指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:问指派哪个人去完成哪项工作,可使总的消耗时间为最小?6.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+x2<10;x1+x2<8;x2<7;end2、model:max=40*x1+90*x2;9*x1+7*x2<56;7*x1+20*x2<70;@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*x4<10;@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));!产生元素;@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 项工作用时ij t ,标志变量ij f 定义如下:⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin∑∑==⨯4141i j ij ijt fs.t. 141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作model : sets :work/A B C D/;worker/jia yi bing ding/; time(worker,work):t,f; endsets!目标函数可以用[obj]标志出,也可以省略;[obj] min =@sum (time(i,j):t(i,j)*f(i,j)); data :!可以直接复制表格,但是在最后要有分号; t=; e !每份工作都有一人做;@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设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给居民区j 的煤量为ij g那么可以列出如下优化方程式∑∑==⨯=3121min j i ij ij L gs.t ()3,2,121==∑=j d gi jij()2,131=≤∑=i s gj iijmodel : sets :supply/1,2/:s; demand/1,2,3/:d;link(supply,demand):road,sd; endsets data :road=10 5 6 4 8 12; d=50 70 40; s=60 100; 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));end1.线性规划模型。
某战略轰炸机群奉命摧毁敌人军事目标。
已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。
为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。
飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。
又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。
表1 相关数据2、资源配置模型。
某工厂有原料钢管:每根19米,用户需求4米50根,6米20根,8米15根。
如何下料钢管剩余总余量最小? 由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。
表1 不同切割的模式模式4米钢管根数6米钢管根数8米钢管根数余料(米)1 4 0 0 32 3 1 0 13 2 0 1 34 1 2 0 35 1 1 1 16 0 3 0 13、图论模型(动态规划)。
求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量。
其中(x,y)中x表示容量,y表示费用。
图1 网络图题目解答1.线性规划模型。
解:设用了x 枚重型炸弹,用了y 枚轻型炸弹,攻击的是第i 个部位,再设一标志变量f 定义如下:⎩⎨⎧=个部位不攻击第个部位攻击第i i f i 01目标函数为: ()[]∑=⨯⨯+⨯=41max i i li ih f p y px()()480002004/3/2004/2/≤++⨯+++⨯i i i i d d y d d x48≤x ,32≤y141=∑=i ifmodel : sets :pd/1..4/:Ph,Pl,d,f; endsets data :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)+200<48000); x<48;y<32;@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米钢管根数余料(米)1 4 0 0 323 1 0 1 3 2 0 1 34 1 2 0 35 1 1 1 16 0 3 0 1 设:模式i 的供应量为i m ,对于第i 种模式,切割的4米钢管根数,6米钢管根数,8米钢管根数,分别为ij t ,余料为i s ,每种钢管的需求量分别为i d ,再设一标志变量f 定义如下:⎩⎨⎧=种模式不采用第种模式采用第i i f i 01目标函数:min∑=⨯⨯71i i i im s fj j i ij id m t f=⨯⨯∑=71i =1,2,…,7∑==713i ifmodel : sets :mode/1..7/:m,s,f; demand/1..3/:d; md(mode,demand):t; endsets data :s=3 1 3 3 1 1 3; d=50 20 15; t=4 0 0 3 1 0 2 0 1 1 2 0 1 1 1 0 3 0 00 2; 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 表示费用。
图1 网络图1)求最小费用,解法一:稀疏矩阵0-1规划法假设图中有n 个原点,现需要求从定点1到n 的最短路。
设决策变量为ij f ,当1=ij f ,说明弧(i ,j )位于定点1至定点n 的路上;否则0=ij f ,其数学规划表达式为min∑∑==n i nj ij ijf w11约束条件,源点只有一条路指出去,终点只有一条路指进来,其余各点指进去的和指出去的相等,表达式如下,⎪⎩⎪⎨⎧≠=-==-∑∑==ni n i i f f nj ji n j ij ,10,1,1111model : sets :node/1..6/;road(node,node)/1 2,1 3,2 4,2 5, 3 4,3 5,4 6,5 6/:w,f; endsets data :w=2 1 5 3 4 3 0 0; 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; end解法二:求源点到任意点的最小费用,动态规划法。