专题一练习
- 格式:doc
- 大小:627.03 KB
- 文档页数:9
倪进鑫 13工试4班 781. 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a ,b 表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。
目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。
假设从料场到工地之间均有直线道路相连。
(1)试制定每天的供应计划,即从A ,B 两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。
(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?工地位置(a ,b )及水泥日用量d 1 2 3 4 56 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6.5 7.25 d 35 4 76 11解:(1)设由A 向每个工地运送的水泥为i m ,由B 向每个工地运送的水泥为i n ,每个工地的坐标为),(i i y x ,每个工地的水泥需求量为i d ,则目标函数为:))7(2)-(x )1(5)-(x (z min 22i 6122i -++-+=∑=i i i i i y n y m约束条件:⎪⎪⎪⎩⎪⎪⎪⎨⎧≥+≤≤∑∑==i i i i i i i t n m n m )(20206161lingo 程序如下所示:sets :zb/1..6/:x,y; need/1..6/:d,m,n; endsets data :x=1.25,8.75,0.5,5.75,3,7.25; y=1.25,0.75,4.75,5,6.5,7.25; d=3,5,4,7,6,11; enddatamin =@sum (need(i):m(i)*((x(i)-5)^2+(y(i)-1)^2)^(1/2)+n(i)*((x(i)-2)^2+(y(i)-7)^2)^(1/2)); @sum (need(i):m(i))<20; @sum (need(i):n(i))<20;@for (need(i):m(i)+n(i)>d(i);); End算出总的吨千米数最小值为135.2815。
(2)设A 的坐标为),(11j j b a ,B 的坐标为),(22j j b a ,则目标函数为))()a -(x )()a -(x (z min 222j2i 61212j1i j i i i j i i b y n b y m -++-+=∑=约束条件:⎪⎪⎪⎩⎪⎪⎪⎨⎧≥+≤≤∑∑==i i i i i i i t n m n m )(20206161sets :zb/1..6/:x,y; need/1..6/:d,m,n; xin/1..2/:a,b; endsets data :x=1.25,8.75,0.5,5.75,3,7.25; y=1.25,0.75,4.75,5,6.5,7.25;d=3,5,4,7,6,11; enddatamin =@sum (need(i):m(i)*((x(i)-a(1))^2+(y(i)-b(1))^2)^(1/2)+n(i)*((x(i)-a(2))^2+(y(i)-b(2))^2)^(1/2)); @sum (need(i):m(i))<20; @sum (need(i):n(i))<20;@for (need(i):m(i)+n(i)>d(i);); @for (xin(j):@free (a(j))); @for (xin(j):@free (b(j))); end所以A 的坐标为(2.867429,6.037022);B 的坐标为(7.25,7.25)最小运量为82.18789。
2、 考虑如下的在线DVD 租赁问题。
顾客缴纳一定数量的月费成为会员,订购DVD 租赁服务。
会员对哪些DVD 有兴趣,只要在线提交订单,网站就会通过快递的方式尽可能满足要求。
会员提交的订单包括多张DVD ,这些DVD 是基于其偏爱程度排序的。
网站会根据手头现有的DVD 数量和会员的订单进行分发。
每个会员每个月租赁次数不得超过2次,每次获得3张DVD 。
会员看完3张DVD 之后,只需要将DVD 放进网站提供的信封里寄回(邮费由网站承担),就可以继续下次租赁。
请考虑以下问题: (1)网站正准备购买一些新的DVD ,通过问卷调查1000个会员,得到了愿意观看这些DVD 的人数(表1给出了其中5种DVD 的数据)。
此外,历史数据显示,60%的会员每月租赁DVD 两次,而另外的40%只租一次。
假设网站现有10万个会员,对表1中的每种DVD 来说,应该至少准备多少张,才能保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD ?如果要求保证在三个月内至少95%的会员能够看到该DVD 呢?(2)表2中列出了网站手上100种DVD 的现有张数和当前需要处理的1000位会员的在线订单,如何对这些DVD 进行分配,才能使会员获得最大的满意度?请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD 。
(3)继续考虑表2,并假设表2中DVD 的现有数量全部为0。
如果你是网站经营管理人员,你如何决定每种DVD 的购买量,以及如何对这些DVD 进行分配,才能使一个月内95%的会员得到他想看的DVD ,并且满意度最大? 解:(1)由表1可知:1001)5(,401)4(,201)3(,101)2(,51)1(=====DVD P DVD P DVD P DVD P DVD P由于60%的会员可以看2次,40%的看一次,则一个月内平均一个DVD 被看的次数至多为:0.62+0.4=1.6⨯则对每一种DVD 一个月内至少50%会员能看到该DVD 的数量为:DVD1:()10000050%62501.6P A ⨯⨯=DVD2:()10000050%31251.6P B ⨯⨯=DVD3:()10000050%15631.6P C ⨯⨯=DVD4:()10000050%7821.6P D ⨯⨯=DVD5:()10000050%3131.6P E ⨯⨯=三个月时的每个碟片利用次数为1.6×3=4.8,则具体数据为:DVD1:()10000095%39594.8P A ⨯⨯=DVD2:()10000095%19804.8P B ⨯⨯= DVD3:()10000095%9904.8P C ⨯⨯= DVD4:()10000095%4954.8P D ⨯⨯= DVD5:()10000095%1984.8P E ⨯⨯= (2)我们定义ij x 如下:011210001,2,100ij j i x j i i j ⎧=⎨⎩= 将第种DVD 不分配给第个会员 将第种DVD 分配给第个会员 =,,, 令1000100[]ij C c ⨯=表示第i 个会员对第j 种DVD 的满意指数矩阵。
(1,2,100)j n j =表示第j 种DVD 的现有数量。
显然,对每种DVD ,要求分配的总量不超过相应的现有数量j n 。
即10001,1,2, (i)j i xn j =≤=∑100 又根据假设,网站只向会员提供其预定的DVD ,即只有当满意指数ij c 不为0时,才可能进行分配。
故引入约束,1,2,...,1,2,...,100ij ij x c i j ≤==1000,进一步,对每个会员每次租赁只能获得3张其预定的DVD 或不能得到,有100130,1,2,...,1000ijj xi ===∑或在上述约束的前提下,我们追求会员的总体满意指数和100010011ij ij i j c x ==∑∑达到最大,显然,每个会员的最大满意指数为10+9+8=27,1000个会员最大的满意指数和为10002727000⨯=。
为了更好地表示满意度,我们将目标转化为用百分数表示的满意度为:1000100111max 27000ij ij i j w c x ===∑∑ ,由此可得规划模型如下:(2)LINGO程序如下所示:sets:vip/1..1000/:z;vedio/1..100/:n;link(vip,vedio):c,x;endsetsdata:n=10 40 15 20 20 12 30 33 35 25 29 31 28 61 2 28 28 26 3138 34 29 35 22 29 81 1 19 25 41 29 35 1 40 39 5 10630 29 2 110 6 15 36 34 11 32 25 2 64 40 26 33 26 612 11 38 44 36 27 31 42 44 12 81 10 35 33 30 2 40 15 1128 24 20 88 9 28 31 8 22 3 70 21 34 4 38 27 39 28 2415 50 24 36 55 2 40;c=@file(shuju.txt);enddatamax=1/27000*@sum(link(i,j):@if(c(i,j)#gt#0,(11-c(i,j))*x(i,j),c(i,j)* x(i,j)));@for(vip(i):@sum(vedio(j):x(i,j))-3*z(i)=0);@for(vedio(j):@sum(vip(i):x(i,j))<n(j));@for(link(i,j):x(i,j)<c(i,j));@for(link:@bin(x));@for(vip:@bin(z));end算出最大满意度为91.56% (3)LINGO程序如下所示:程序如下:sets:vip/1..1000/:z;vedio/1..100/:n,y;link(vip,vedio):c,x;endsetsdata:c=@file(shuju.txt);enddatamin=@sum(vedio(j):y(j));@sum(link(i,j):x(i,j))>1000*3*0.95;@for(vedio(j):@sum(vip(i):x(i,j))<1.6*y(j));1/27000*@sum(link(i,j):@if(c(i,j)#gt#0,(11-c(i,j))*x(i,j),c(i,j)*x(i, j)))>0.95;@for(vip(i):@sum(vedio(j):x(i,j))-3*z(i)=0;);@for(vedio(j):@sum(vip(i):x(i,j))<n(j););@for(link(i,j):x(i,j)<c(i,j));@for(link:@bin(x));@for(vip:@bin(z));end所以应该购买1782张DVD。