2线性规划和整数规划实验.docx
《2线性规划和整数规划实验.docx》由会员分享,可在线阅读,更多相关《2线性规划和整数规划实验.docx(26页珍藏版)》请在冰豆网上搜索。
2线性规划和整数规划实验
工程数学
Gxxxxxxxxxxxxxx
E-mail:
xxxxxxxxxxxxxxxxxTel:
xxxxxxxxxxxxxxx
2数学建模基础:
1.
2.
2.1.实验目的与要求
●学会建立线性规划模型、整数规划模型
●学会LINGO软件的基本使用方法,求解线性规划和整数规划问题
●学会对线性规划问题进行灵敏度分析
●对计算结果进行分析和讨论
2.2.基本实验
生产计划安排
解:
(1)
Model:
Max=9.4*P1+10.8*P2+8.75*P3+7.8*P4;
10.5*P1+9.3*P2+11.6*P3+8.2*P4<=4800;
20.4*P1+24.6*P2+17.7*P3+26.5*P4<=9600;
3.2*P1+2.5*P2+3.6*P3+5.5*P4<=4700;
5.0*(P1+P2+P3+P4)<=4500;
P1>=100;
P2>=100;
P3>=100;
P4>=100;
@gin(P1);@gin(P2);@gin(P3);@gin(P4);
END
所以当SC320生产100根,SC325生产101根,SC340生产137根,SC370生产100根时,产生最大利润,利润为4009.55$。
(2)将整数限制去掉发现:
焊接工艺的对偶价格为0.49,而其他工艺步骤的对偶价格为0并且有剩余,因此焊接工艺的时间制约了最大利润的提高。
综上所述,我推荐提高焊接工艺。
(3)从第二问的图中可以发现,对每种钢材最小生产数量的限制的对偶价格是负值,因此最小生产数量影响了最大利润的提高。
另外如果将lingo语句中最小生产数量限制去掉后可发现:
如图:
最大利润提高了。
所以综上所述,各种电缆的最低生产数量制约了最大利润的提高。
工程进度问题
解:
假设某年某工程的完成量为Fxy,x表示工程的代号,x=1,2,3,y表示年数,y=1,2,3,如第一年工程1完成F11,工程3完成F31,到第二年工程已完成F12,工程3完成F32。
另有一个投入与完成的关系,即第一年的投入总费用的40%,该工程在年底就完成40%,
工程1利润:
50×F11+50×(F11+F12)+50×(F11+F12+F13)+50×(F11+F12+F13)
工程2利润:
70×F22+70×(F22+F23)+70×(F22+F23+F24)
工程3利润:
20×F31+150×(F31+F32)+150×(F31+F32+F33)+150×(F31+F32+F33+F34)
工程4利润:
20×F43+20×(F43+F44)
max=(50×F11+50×(F11+F12)+50×(F11+F12+F13)+50×(F11+F12+F13))+(70×F22+70×(F22+F23))+70×(F22+F23+F24)+(150×F31+150×(F31+F32)+150×(F31+F32+F33)+150×(F31+F32+F33+F34))+(20×F43+20×(F43+F44))
使得满足:
5000×F11+15000×F31=3000
5000×F12+8000×F22+15000×F32=6000
5000×F13+8000×F23+15000×F33+1200×F43=7000
8000×F24+15000×F34+12000×F44=7000
8000×F25+15000×F35=7000
F11+F12+F13=1
F22+F23+F24+F25≥0.25
F22+F23+F24+F25≤1
F31+F32+F33+F34+F35≥0.25
F31+F32+F33+F34+F35≤1
F43+F44=1
全为大于零的数
Model:
max=50*(4*F11+3*F12+2*F13)+70*(3*F22+2*F23+1*F24)+150*(4*F31+3*F32+2*F33+1*F34)+20*(2*F43+1*F44);
5000*F11+15000*F31<=3000;
5000*F12+8000*F22+15000*F32<=6000;
5000*F13+8000*F23+15000*F33+1200*F43<=7000;
8000*F24+15000*F34+1200*F44<=7000;
8000*F25+15000*F35<=7000;
F11+F12+F13=1;
F22+F23+F24+F25<=1;
F22+F23+F24+F25>=0.25;
F31+F32+F33+F34+F35<=1;
F31+F32+F33+F34+F35>=0.25;
F43+F44=1;
End
输出结果:
由结果可以看出第一年应将所有预算投入工程3中,第二年应将全部预算投入工程3中,第三年应将5000万投入工程1中,1200万投入工程4中,800万投入工程3中,第四年应将1800万投入工程2中,5200万投入工程,第五年应将200万投入工程2中,剩余6800万。
获得的最大利润523.75万元。
投资问题
解:
用xiA,xiB(i=1,2,3)表示第i年初给项目A,B的投资金额,则
max1.7*x3A+4*x2B;
s.t.x1A+x1B=100000;
1.7*x1A=x2A+x2B;
x3A=1.7*x2A+4*x1B;
x1A≤100000
x1B≤100000
程序如下:
MODEL:
max=1.7*X3a+4*X2b;
X1a+X1b=100000;
X2a+X2b-1.7*X1a=0;
X3a-1.7*X2a-4*X1b=0;
@bnd(0,X1a,100000);
@bnd(0,X1b,100000);
END
运行结果如下:
为了获得最大收益,该主管应该在第一年初的时候投资计划B100,000美元,在第三年初的时候将计划B的本+利一同投给计划A,3年末获取最大的收益680,000美元
生产计划与库存问题
解:
用xiA,xiB(i=6,7,8)表示6,7,8月给需求A,B的生产安排计划;yiA,yiB(i=6,7)为每月超需求生产数量,则
min=(500+5000+750)*30+(1000+1200+1200)*28+(y6A+y7A)*0.90+(y6B+y7B)*0.75
y6A=x6A-500
y7A=x7A+y6A-5000
y6B=x6B-1000
y7B=x7B+y6B–1200
y7A+x8A=750
y7B+x8B=1200
y6A≥0
y7A≥0
y6B≥0
y7B≥0
总的生产数量要求:
x6A+x7A+x8A=500+5000+750
x6B+x7B+x8B=1000+1200+1200
生产能力约束:
x6A÷1.25+x6B≦3500
x7A÷1.25+x7B≦3500
x8A÷1.25+x7B≦3000
程序如下:
Model:
min=(500+5000+750)*30+(1000+1200+1200)*28+(Y6A+Y7A)*0.90+(Y6B+Y7B)*0.75;
Y6A-(X6A-500)=0;
Y7A-(X7A+Y6A-5000)=0;
Y6B=X6B-1000;
Y7B=X7B+Y6B-1200;
Y7A+X8A=750;
Y7B+X8B=1200;
Y6A>=0;
Y7A>=0;
Y6B>=0;
Y7B>=0;
X6A+X7A+X8A=500+5000+750;
X6B+X7B+X8B=1000+1200+1200;
X6A/1.25+X6B<=3500;
X7A/1.25+X7B<=3500;
X8A/1.25+X7B<=3000;
@gin(X6A);@gin(X7A);@gin(X8A);@gin(Y6A);@gin(Y7A);@gin(X6B);@gin(X7B);@gin(X8B);@gin(Y6B);@gin(Y7B);
END
运行结果:
根据最低成本和满足需求的原则生产计划如下:
六月
七月
八月
生产A的计划
1125
4375
750
生产B的计划
2200
0
1200
职员日程安排问题
解:
设xi为每天工作的人数i=1,2,3,4,5,6,7则目标函数
minx1+x2+x3+x4+x5+x6+x7
s.t.
x1+x4+x5+x6+x7≥18
x1+x2+x5+x6+x7≥15
x1+x2+x3+x6+x7≥12
x1+x2+x3+x4+x7≥16
x1+x2+x3+x4+x5≥19
x2+x3+x4+x5+x6≥14
x3+x4+x5+x6+x7≥12
程序如下:
Model:
min=X1+X2+X3+X4+X5+X6+X7;
X1+X4+X5+X6+X7>=18;
X1+X2+X5+X6+X7>=15;
X1+X2+X3+X6+X7>=12;
X1+X2+X3+X4+X7>=16;
X1+X2+X3+X4+X5>=19;
X2+X3+X4+X5+X6>=14;
X3+X4+X5+X6+X7>=12;
END
运行结果:
油料生产安排问题
解:
设:
A原油A
B原油B
C1自产普通成品油
C2自产优质成品油
C3自产航空成品油
W1外购普通成品油
W2外购优质成品油
W3外购航空成品油
S1普通成品油存储桶数
S2优质成品油存储桶数
S3航空成品油存储桶数
则数学建模关系:
C1=0.20*A+0.25*B
C2=0.10*A+0.30*B
C3=0.25*A+0.10*B
C1n+W1n+S1(n-1)>=500
C2n+W2n+S2(n-1)>=700
C3n+W3n+S3(n-1)>=400
S1=C1–500
S2=C2–700
S3=C3–400
建立目标函数:
(假设外购成品油的成本=收入+惩罚费用)
max=(50*500+70*700+120*400)–(30*A+40*B)-(2*S1+3*S2+4*S3)–[(50+10)*W1+(70+15)*W2+(120+20)*W3]
资源约束:
A<=2500
B<=3000
S1>=0
S2>=0
S3>=0
程序如下:
MODEL:
max=(50*500+70*700+120*400)-(30*A+40*B)-(2*S1+3*S2+4*S3)-(50+10)*W1-(70+15)*W2-(120+20)*W3;
!
生产原油能力;
C1-(0.20*A+0.25*B)=0;
C2-(0.10*A+0.30*B)=0;
C3-(0.25*A+0.10*B)=0;
!
通过循环计算出月生产最大收益;
!
@forbutTBD;
C1+W1>=500;
C2+W2>=700;
C3+W3>=400;
!
资源约束条件;
A<=2500;
B<=3000;
C1>=0;
C2>=0;
C3>=0;
W1>=0;
W2>=0;
W3>=0;
S1>=0;
S2>=0;
S3>=0;
@gin(A);@gin(B);@gin(C1);@gin(C2);@gin(C3);@gin(W1);@gin(W2);@gin(W3);@gin(S1);@gin(S2);@gin(S3);
END
运行结果:
通过上面LINGO9.0运行的结果可知,若使利润最大化,每天采购原油A1180桶,原油B1060桶
最小覆盖问题
解:
MODEL:
SETS:
area/1..6/:
x;
link(area,area):
t,c;
ENDSETS
DATA:
t=
01020303020
10025352010
20250153020
30351501525
30203015014
20102025140;
ENDDATA
CALC:
@for(link:
c=@if(t#le#15,1,0));
ENDCALC
min=@sum(area:
x);
@for(area:
@bin(x));
@for(area(i):
@sum(area(j):
c(i,j)*x*(i))>=1);
END
运行结果:
在2和4区建立消防站即可。
2.3.加分实验
解:
设xi表示i(i=1,2…49)处是否安装摄像头,为1表示要安装,为0表示不要安装,则目标函数为:
x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20+x21+x22+x23+x24+x25+x26+x27+x28+x29+x30+x31+x32+x33+x34+x35+x36+x37+x38+x39+x40+x41+x42+x43+x44+x45+x46+x47+x48+x49;
为了使每条街道都能被拍摄到,我们有:
x1+x2>=1;
x1+x3>=1;
x2+x39>=1;
x2+x41+x42>=1;
x39+x40+x41>=1;
x3+x4>=1;
x4+x5>=1;
x4+x6+x8+x9>=1;
x6+x7>=1;
x9+x10>=1;
x3+x11>=1;
x12=1;
x11+x21+x22+x25+x26+x27>=1;
x22+x23>=1;
x23+x32+x38>=1;
x39=1;
x37+x38+x40>=1;
x31+x32>=1;
x25+x30>=1;
x26+x28>=1;
x28+x29>=1;
x30+x31+x33+x37+x43>=1;
x33+x34>=1;
x34+x35>=1;
x35+x36>=1;
x46=1;
x43+x44+x45>=1;
x44+x49>=1;
x45+x47>=1;
x47+x48>=1;
x24+x25>=1;
x17+x18+x19+x20+x21>=1;
x16+x20>=1;
x12+x15+x19>=1;
x14+x15+x16>=1;
x12+x13+x14>=1;
程序如下:
MODEL:
min=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20+x21+x22+x23+x24+x25+x26+x27+x28+x29+x30+x31+x32+x33+x34+x35+x36+x37+x38+x39+x40+x41+x42+x43+x44+x45+x46+x47+x48+x49;
x1+x2>=1;
x1+x3>=1;
x2+x39>=1;
x2+x41+x42>=1;
x39+x40+x41>=1;
x3+x4>=1;
x4+x5>=1;
x4+x6+x8+x9>=1;
x6+x7>=1;
x9+x10>=1;
x3+x11>=1;
x12=1;
x11+x21+x22+x25+x26+x27>=1;
x22+x23>=1;
x23+x32+x38>=1;
x39=1;
x37+x38+x40>=1;
x31+x32>=1;
x25+x30>=1;
x26+x28>=1;
x28+x29>=1;
x30+x31+x33+x37+x43>=1;
x33+x34>=1;
x34+x35>=1;
x35+x36>=1;
x46=1;
x43+x44+x45>=1;
x44+x49>=1;
x45+x47>=1;
x47+x48>=1;
x24+x25>=1;
x17+x18+x19+x20+x21>=1;
x16+x20>=1;
x12+x15+x19>=1;
x14+x15+x16>=1;
x12+x13+x14>=1;
END
运行结果:
为0的在此没写出来,由此我们可以得到,在点
2,3,5,7,9,12,15,20,22,25,28,32,33,35,39,40,44,46,47处要安装摄像头,共19个。