数学建模-运筹学2013
- 格式:doc
- 大小:219.00 KB
- 文档页数:30
最优化建模和计算1、Lindo和Lingo基本程序生产100套钢架,长2.9、2.1、1.5米各1根/套,原料长7.4米,如何下料?下料的所有方案1 2 3 4 5 6 7 82.9 2 1 1 1 0 0 0 02.1 0 2 1 0 3 2 1 01.5 1 0 1 3 0 2 3 4料头0.1 0.3 0.9 0 1.1 0.2 0.8 1.4给出下料问题的计算程序:Lindo程序:!min 0.1x1+0.3x2+0.9x3+0x4+1.1x5+0.2x6+0.8x7+1.4x8 min 1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8subject to2x1+1x2+1x3+1x4+0x5+0x6+0x7+0x8>1000x1+2x2+1x3+0x4+3x5+2x6+1x7+0x8>1001x1+0x2+1x3+3x4+0x5+2x6+3x7+4x8>100endgin x1gin x2gin x3gin x4gin x5gin x6gin x7gin x8Lingo程序:model:sets:E/1..8/:c,x;F/1..3/:b;link(F,E):a;endsetsmin=@sum(E(j):c(j)*x(j));@for(F(i):@sum(E(j):a(i,j)*x(j))>100); @for(E(j):x(j)>0);@for(E(j):@gin(x));data:!c=0.1,0.3,0.9,0,1.1,0.2,0.8,1.4;c=1,1,1,1,1,1,1,1;a=2,1,1,1,0,0,0,0,0,2,1,0,3,2,1,0,1,0,1,3,0,2,3,4;enddataend2、建模和编程练习1 五年期投资计划:五年内有4个投资项目,情况是:(1)1至4年,每年年初投资,次年末回收本利115%;(2)第3年初投资,第5年末回收本利125%(最大投资额不超过4万元);(3)第2年初投资,第5年末回收本利140%(最大投资额不超过3万元);(4)每年年初投资,年末回收本利106%。
给你10万,给出投资计划。
请分析投资规律。
项目 1 2 3 4 5 5年末1 x11 x21 x31 x41 1.15x412 x32<4 1.25x323 x23<3 1.40x234 x14 x24 x34 x44 x54 1.06x54101.06x14 1.15x11+1.06x241.15x21+1.06x341.15x31+1.06x44max 4x1+10x2+3x3-2x4 subject to2x1+3x2<163x1+4x2<242x2-x3-x4=0x3<5endgin x1gin x2gin x3gin x42 某钻井队从10个可供选择的井位中确定5个钻井探油,使总费用最小。
10个井位S1到S10相应的钻探费为:4,6,7,3,4,5,7,3,5,6。
且满足:(1)或选择S1和S7,或选择S8;(2)选择了S3或S4,就不能选择S5;或反过来也一样;(3)在S5、S6、S7、S8中最多只能选两个。
101min i i i Z c x ==∑1015ii x==∑17x x = 181x x +≥ 351x x +≤ 451x x +≤ 56782x x x x +++≤0,1i x =model:data:N= 10;! N>= 10;enddatasets:A/1..N/: c,x;endsetsmin=@sum(A(i): c(i)*x(i));@sum(A(i): x(i))=5;x(1)=x(7);x(1)+x(8)>=1;x(3)+x(5)<=1;x(4)+x(5)<=1;x(5)+x(6)+x(7)+x(8)<=2;@for(A:@bin(x));data:c= 4 6 7 3 4 5 7 3 5 6; enddataend3 分配问题(指派问题,Assignment Problem )这是个给n 个人分配n 项工作以获得某个最高总效果的问题。
第i 个人完成第j 项工作需要平均时间ij c 。
要求给每个人分配一项工作,并要求分配完这些工作,以使完成全部任务的总时间为最小。
该问题可表示如下:⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧=====∑∑∑∑====1,0,,2,1,1,,2,1,1..min 1111ij n j ij n i ij n i n j ijij x n i x n j x t s x c现在7个将被分配去做7项工作,他们的工作时间如下表:j1 j2 j3 j4 j5 j6 j7 w1 6 2 6 7 4 2 5w2 4 9 5 3 8 5 8 w3 5 2 1 9 7 4 3 w4 7 6 7 3 9 2 7 w5 2 3 9 5 7 2 6 w6 5 5 2 2 8 11 4 w7 9 2 3 12 4 5 10;问如何分配工作,使得完成所有工作时所花费的时间总和最少?model:!3个工人,3个工作的分配问题;sets:workers/w1..w3/;jobs/j1..j3/;links(workers,jobs): cost,volume;endsetsmin=@sum(links: cost*volume);@for(workers(I):@sum(jobs(J): volume(I,J))=1); @for(jobs(J):@sum(workers(I): volume(I,J))=1); @for(links:@bin(volume));data:cost= 6 2 64 9 55 2 1;enddataendmodel:!7个工人,7个工作的分配问题;sets:workers/w1..w7/;jobs/j1..j7/;links(workers,jobs): cost,volume;endsetsmin=@sum(links: cost*volume);@for(workers(I):@sum(jobs(J): volume(I,J))=1);@for(jobs(J):@sum(workers(I): volume(I,J))=1); data:cost= 6 2 6 7 4 2 54 95 3 8 5 85 2 1 9 7 4 37 6 7 3 9 2 72 3 9 5 7 2 65 5 2 2 8 11 49 2 3 12 4 5 10;enddataend4 (加工问题)有m台机床,n种零件在机床加工,工时为a1, a2, …, a n。
问如何分配使各机床的总加工任务尽可能均衡。
对4n=,工时为6,10,4,7,8,3为例进行计算。
m=,60min x01n j ij j a xx =≤∑ 11m ij j x==∑0,1ij x =model:sets:parts/1..6/:a;machines/1..4/;links(machines,parts): x;endsetsmin=x1;@for(machines(I):@sum(parts(J): a(J)*x(I,J))<=x1);@for(parts(J):@sum(machines(I): x(I,J))=1);@for(links:@bin(x));data:a= 6 10 4 7 8 3;enddataend5 有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的)。
由于4名同学的专业背景不同,所以每人在三个阶段的面试时间也不同,如下表所示(单位:分钟):秘书初试主管复试经理面试同学甲13 15 20同学乙10 20 18同学丙20 16 10同学丁8 10 15这4名同学约定他们全部面试完以后一起离开公司。
假定现在时间是早晨8:00,问他们最早何时能离开公司?(建立规划模型求解)本问题是一个排列排序问题。
对于阶段数不小于3的问题没有有效算法,也就是说对于学生数稍多一点儿(比如20)的情况是无法精确求解的。
为此人们找到了很多近似算法。
这里我们建立的规划模型可以实现该问题的精确求解,但你会看到它的变量和约束是学生数的平方。
因此,当学生数稍多一点儿规划模型的规模将很大,求解会花费很长时间。
!三阶段面试模型;model:sets:students; !学生集三阶段面试模型;phases; !阶段集;sp(students,phases):t,x;!t面试时所花费时间,x面试前所花费时间;ss(students,students) | &1 #LT# &2:y;endsetsdata:students = s1..s4;phases = p1..p3;t=13 15 2010 20 1820 16 108 10 15;enddatans=@size(students); !学生数;np=@size(phases); !阶段数;!单个学生面试时间先后次序的约束;@for(sp(I,J) | J #LT# np:x(I,J)+t(I,J)<=x(I,J+1));!学生间的面试先后次序保持不变的约束;@for(ss(I,K):@for(phases(J):x(I,J)+t(I,J)-x(K,J)<=200*y(I,K);x(K,J)+t(K,J)-x(I,J)<=200*(1-y(I,K));));!目标函数;min=TMAX;@for(students(I):x(I,3)+t(I,3)<=TMAX);!把Y定义0-1变量;@for(ss: @bin(y));end6 最短路问题 给定N 个点),,2,1(N i p i =组成集合}{i p ,由集合中任一点i p 到另一点j p 的距离用ij c 表示,如果i p 到j p 没有弧联结,则规定+∞=ij c ,又规定)1(0N i c ii ≤≤=,指定一个终点N p ,要求从i p 点出发到N p 的最短路线。
这里我们用动态规划方法来做。
用所在的点i p 表示状态,决策集合就是除i p 以外的点,选定一个点j p 以后,得到效益ij c 并转入新状态j p ,当状态是N p 时,过程停止。
显然这是一个不定期多阶段决策过程。
定义)(i f 是由i p 点出发至终点N p 的最短路程,由最优化原理可得⎪⎩⎪⎨⎧=-=+=0)(1,,2,1)},({min )(N f N i j f c i f ij j 这是一个函数方程,用LINGO 可以方便的解决。