第一次作业

  • 格式:docx
  • 大小:56.39 KB
  • 文档页数:5
第二个会员获得的第6,44,62
第三个会员获得的第32,50,80
第四个会员获得的第7,18,41
第五个会员获得的第11,66,68
第六个会员获得的第19,53,66
第七个会员获得的第26,66,81
第九个会员获得的第53,78,100
第十个会员获得的第41,55,85
第十一个会员获得的第59,63,66
解:
Lingo求解为:当a=0.95时DVD最小购买量min z=1781.25
Lingo程序为:
model:
sets:
si/1..1000/:z;
sj/1..100/:y;
lij(si,sj):c,x;
endsets
data:
c=@file('E:\a2.txt');
a=0.95;
enddata
min=@sum(sj(j):y(j));
第二十九个会员获得的第26,30,55
第三十个会员获得的第37,62,98
Lingo程序如下:
model:
sets:
si/1..1000/:z;
sj/1..100/:n;
lij(si,sj):c,x;
endsets
data:
n=@file('E:\a1.txt');
c=@file('E:\a2.txt');
a<=1/27000*@sum(lij(i,j):c(i,j)*x(i,j));
@for(si(i):@sum(sj(j):x(i,j))-3*z(i)=0);
@for(sj(j):@sum(si(i):x(i,j))<1.6*y(j));
@for(lij(i,j):x(i,j)<c(i,j));
@for(lij(i,j):@bin(x(i,j)));
(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?
解:
(1)设Cij为料场j向工地i运输水泥量,建筑工地坐标为(ai,bi),日储量为ej,水泥日用量为di.
设目标函数为:min
s.t
用lingo求解为:A料场向工地1运送3吨,向工地2运送5吨,向工地3运送1.767吨,向工地4运送7吨,向工地5运送3.3476吨,向工地6运送1吨。B料场向工地1运送3.427吨,向工地2运送6.8276吨,向工地3运送4吨,向工地4运送1.567吨,向工地5运送6吨,向工地6运送10吨。
d=3,5,4,7,6,11;
e=20,20;
x=5,2;
y=1,7;
enddata
init:
x,y=5,1,2,7;
endinit
min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));
@for(demand(i):[DEMAND_CON]@sum(supply(j):c(i,j))=d(i););
第一次作业
1.某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。
(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。
DVD1=6250,DVD2=3125,DVD3=1563,DVD4=782,DVD5=313
以上为以一个月为周期,当以三个月为周期的时候同样可以得到以下表达式:
3*(DVDi+0.6*DVDi)=0.95*Vi
解出
DVD1=3959,DVD2=1980,DVD3=990,DVD4=495,DVD5=198
2)表2中列出了网站手上100种DVD的现有张数和当前需要处理的1000位会员的在线订单,如何对这些DVD进行分配,才能使会员获得最大的满意度?请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD。
问题二的0-1整数线性规划模型如下:
Lingo求解为:
最大满意度为0.91556;
第一个会员获得的第8,41,98
model:
sets:
demand /1..6/:a,b,d;
supply /1..2/:x,y,e;
link (demand,supply):c;
endsets
data:
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=3,5,4,7,6,11;
@for(supply(i):[SUPPLY_CON]@sum(demand(j):c(j,i))<=e(i););
End
第二题:
1)网站正准备购买一些新的DVD,通过问卷调查1000个会员,得到了愿意观看这些DVD的人数(表1给出了其中5种DVD的数据)。此外,历史数据显示,60%的会员每月租赁DVD两次,而另外的40%只租一次。假设网站现有10万个会员,对表1中的每种DVD来说,应该至少准备多少张,才能保证希望看到该DVD的会员中至少50%在一个月内能够看到该DVD?如果要求保证在三月内至少95%的会员能够看到该DVD呢?
局部最优解为135.2815
Lingo程序为:
model:
sets:
demand /1..6/:a,b,d;
supply /1..2/:x,y,e;
link (demand,supply):c;
endsets
data:
a=1.25,8.75,0.5,5.75,3,7.25;
b=1.25,0.75,4.75,5,6.5,7.25;
@for(supply(i):[SUPPLY_CON]@sum(demand(j):c(j,i))<=e(i););
标为:(3.254883,5.652332)
(7.25,7.25)
节省的吨千米数为:135.2815-82.82565=52.45585
lingo程序如下:
第二十一个会员获得的第45,51,53
第二十二个会员获得的第38,55,57
第二十三个会员获得的第29,81,95
第二十四个会员获得的第37,41,76
第二十五个会员获得的第9,69,81
第二十六个会员获得的第22,68,95
第二十七个会员获得的第50,58,78
第二十八个会员获得的第,8,34,82
@for(lij(i,j):@bin(x(i,j)));
@for(si(i):@bin(z(i)));
End
3)继续考虑表2,并假设表2中DVD的现有数量全部为0。如果你是网站经营管理人员,你如何决定每种DVD的购买量,以及如何对这些DVD进行分配,才能使一个月内95%的会员得到他想看的DVD,并且满意度最大?
enddata
max=1/27000*@sum(lij(i,j):c(i,j)*x(i,j));
@for(si(i):@sum(sj(j):x(i,j))-3*z(i)=0);
@for(sj(j):@sum(si(i):x(i,j))<n(j));
@for(lij(i,j):x(i,j)<c(i,j));
解:
建立如下模型:
DVDi:第i种DVD需要购买的数量;
Vi:想看第i中DVD的人的数量;
以一个月为租赁周期,其中有40%的人租一次DVD,有60%的人租两次DVD
如下所示:
第一次租第二次租
占60%
占40%
可列出如下表达式:
DVDi+DVD*0.6=50%*Vi
可解出
V1=20000,V2=10000,V3=5000,V4=2500,V5=1000
e=20,20;
enddata
init:
x,y=5,1,2,7;
endinit
min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));
@for(demand(i):[DEMAND_CON]@sum(supply(j):c(i,j))=d(i););
第十二个会员获得的第2,31,41
第十三个会员获得的第21,78,96
第十四个会员获得的第23,52,89
第十五个会员获得的第13,52,85
第十六个会员获得的第10,84,97
第十七个会员获得的第47,51,67
第十八个会员获得的第41,60,78
第十九会员获得的第66,84,86
第二十个会员获得的第45,61,89
@for(si(i):@bin(z(i)));
End