数学建模作业3.docx
《数学建模作业3.docx》由会员分享,可在线阅读,更多相关《数学建模作业3.docx(22页珍藏版)》请在冰豆网上搜索。
数学建模作业3
数学建模作业-----第三章
1生产计划安排
(1)设该工厂每天生产A产品
件,生产B产品
件,生产C产品
件,则获利为3
+
+4
.目标函数为max=3
+
+4
由题意编写相应的LINGO程序如下:
max=3*x1+x2+4*x3;
6*x1+3*x2+5*x3<=45;
3*x1+4*x2+5*x3<=30;
计算结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
27.00000
Totalsolveriterations:
0
VariableValueReducedCost
X15.0000000.000000
X20.0000002.000000
X33.0000000.000000
RowSlackorSurplusDualPrice
127.000001.000000
20.0000000.2000000
30.0000000.6000000
分析:
获利最大的生产方案是:
x1=5,x2=0,x3=3,即A产品5件,B产品0,C产品3件,获利最大为27元。
(2)利润变化范围分析:
点击LINGO下的Range,LINGO软件弹出灵敏度分析报告如下:
Rangesinwhichthebasisisunchanged:
ObjectiveCoefficientRanges
CurrentAllowableAllowable
VariableCoefficientIncreaseDecrease
X13.0000001.8000000.6000000
X21.0000002.000000INFINITY
X34.0000001.0000001.500000
RighthandSideRanges
RowCurrentAllowableAllowable
RHSIncreaseDecrease
245.0000015.0000015.00000
330.0000015.000007.500000
分析:
为保证基本方案不变,产品A,B,C的利润分别只能在2.4~4.8元/件、0~3元/件、2.5~5元/件变动。
(3)材料约束的影子价格为0.6>0.4,因此应购进原材料扩大生产。
由lingo结果:
RighthandSideRanges
RowCurrentAllowableAllowable
RHSIncreaseDecrease
245.0000015.0000015.00000
330.0000015.000007.50000
看出可以购进15个单位的原材料以扩大生产。
(4)
编写相应的LINGO程序如下:
max=3*x1+x2+4*x3+3*x4;
6*x1+3*x2+5*x3+8*x4<=45;
3*x1+4*x2+5*x3+2*x4<=30;
运行LINGO程序后,得到计算结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
27.50000
Totalsolveriterations:
0
VariableValueReducedCost
X10.0000000.1000000
X20.0000001.966667
X35.0000000.000000
X42.5000000.000000
RowSlackorSurplusDualPrice
127.500001.000000
20.0000000.2333333
30.0000000.5666667
可见最大利润27.5大于
(1)中的27,所以可以生产新产品D。
②工程进度问题
设工程i在第j年的完成量为xij,则可将利润表示为:
工程1:
50*x11+50*(x11+x12)+2*50*(x11+x12+x13)
工程2:
70*x22+70*(x22+x23)+70*(x22+x23+x24)
工程3:
150*x31+150*(x31+x32)+150*(x31+x32+x33)+150*(x31+x32+x33+x34)
工程4:
20*x43+20*(x43+x44)
由题意写出约束条件
第一年:
5000*x11+15000*x31<=3000
第二年:
5000*x12+8000*x22+15000*x32<=6000
第三年:
5000*x13+8000*x23+15000*x33+1200*x43<=7000
第四年:
8000*x24+15000*x34+1200*x44<=7000
第五年:
8000*x25+15000*x35<=7000
工程1:
x11+x12+x13=1
工程2:
x22+x23+x24+x25>=0.25;x22+x23+x24+x25<=1
工程3:
x31+x32+x33+x34+x35>=0.25;x31+x32+x33+x34+x35<=1
工程4:
x43+x44=1
编写LINGO程序:
max=50*xA1+50*(xA1+xA2)+50+50+
70*xB2+70*(xB2+xB3)+70*(xB2+xB3+xB4)+
150*xC1+150*(xC1+xC2)+150*(xC1+xC2+xC3)+150*(xC1+xC2+xC3+xC4)+
20*xD3+20;
xA1+xA2+xA3=1;
xB2+xB3+xB4+xB5>=0.25;
xB2+xB3+xB4+xB5<=1;
xC1+xC2+xC3+xC4+xC5>=0.25;
xC1+xC2+xC3+xC4+xC5<=1;
xD3+xD4=1;
5000*xA1+15000*xC1<=3000;
5000*xA2+8000*xB2+15000*xC2<=6000;
5000*xA3+8000*xB3+15000*xC3+1200*xD3<=7000;
8000*xB4+15000*xC4+1200*xD4<=7000;
8000*xB5+15000*xC5<=7000;
结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
523.7500
Totalsolveriterations:
9
VariableValueReducedCost
XA10.0000000.000000
XA20.0000000.000000
XB20.00000020.00000
XB30.00000010.00000
XB40.22500000.000000
XC10.20000000.000000
XC20.40000000.000000
XC30.5333333E-010.000000
XC40.34666670.000000
XD31.0000000.000000
XA31.0000000.000000
XB50.2500000E-010.000000
XC50.00000018.75000
XD40.0000008.000000
RowSlackorSurplusDualPrice
1523.75001.000000
20.000000-93.75000
30.0000000.000000
40.75000000.000000
50.75000000.000000
60.00000018.75000
70.000000-2.500000
80.0000000.3875000E-01
90.0000000.2875000E-01
100.0000000.1875000E-01
110.0000000.8750000E-02
126800.0000.000000
分析:
工程1在第三年投资
万
工程2在第四年投资
万第五年投资
万;
工程3在第一年投资
万,第二年投资
万,第三年投资
万,第四年投资
万;
工程4在第三年投资
万。
此时获得的利润为523.75万元。
3投资问题
设
(i=1,2,3,4,5)表示第i年年初给项目A,B,C和D的投资金额.
由题意的约束条件,写出lingo程序:
max=1.2*xA3+1.6*xC2+1.4*xD3;
xA1+xB1=30;
xA2+xC2-1.2*xA1=0;
xA3+xD3-1.2*xA2-1.5*xB1=0;
xB1<=20;
xC2<=15;
xD3<=10;
运行程序得到结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
57.50000
Totalsolveriterations:
2
VariableValueReducedCost
XA316.250000.000000
XC215.000000.000000
XD310.000000.000000
XA112.500000.000000
XB117.500000.000000
XA20.0000000.6000000E-01
RowSlackorSurplusDualPrice
157.500001.000000
20.0000001.800000
30.0000001.500000
40.0000001.200000
52.5000000.000000
60.0000000.1000000
70.0000000.2000000
结果分析:
第一年在机会A上投资12.5万元,在机会B上投资17.5万元,第二年在机会C上投资15万元,第三年在机会A上投资16.25万元,在机会D上投资10万元。
此时获得的最大收益57.5万元。
4生产计划与库存问题
相关变量定义见如下表
六月
七月
八月
经过工序Ⅰ
x1
x2
x3
经过工序Ⅱ
y1
y2
y3
半成品库存
x1-y1
x1-y1+x2-y2
x1-y1+x2-y2+x3-y3
成品库存
y1-500
y1-500+y2-450
y1-500+y2-450+y3-600
成品需求
500
450
600
工序Ⅰ的能力
800
700
550
工序Ⅱ的能力
1000
850
700
由题意,写出线性规划约束条件和目标方程:
min=50
+75
+60
+90
+55
+80
+
)+2(
),
s.t.
=
+
=500+
+
=
+
+
=450+
+
=
+
,
+
=600+
0.6
700.
编写LINGO程序:
min=50*x6a+75*x6b+60*x7a+90*x7b+55*x8a+80*x8b+(I6a+I7a+I8a)+2*(I6b+I7b+I8b);
x6a-x6b-I6a=0;
x6b-500-I6b=0;
x7a+I6a-x7b-I7a=0;
x7b+I6b-450-I7b=0;
x8a+I7a-x8b-I8a=0;
x8b+I7b-600-I8b=0;
0.6*x6a<=800;
0.8*x6b<=1000;
0.6*x7a<700;
0.8*x7b<850;
0.6*x8a<=550;
0.8*x8b<700;
结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
198600.0
Totalsolveriterations:
6
VariableValueReducedCost
X6A1333.3330.000000
X6B1250.0000.000000
X7A0.0000006.000000
X7B0.00000011.00000
X8A216.66670.000000
X8B300.00000.000000
I6A83.333330.000000
I7A83.333330.000000
I8A0.00000056.00000
I6B750.00000.000000
I7B300.00000.000000
I8B0.000000137.0000
RowSlackorSurplusDualPrice
1198600.0-1.000000
20.000000-53.00000
30.000000-131.0000
40.000000-54.00000
50.000000-133.0000
60.000000-55.00000
70.000000-135.0000
80.0000005.000000
90.0000003.750000
10700.00000.000000
11850.00000.000000
12420.00000.000000
13460.00000.000000
分析:
六月生产1333件半成品,其中1250件制成成品;
七月不生产;
八月生产217件半成品,其中300件制成成品。
并且得到最低的总消费为198600.0元
5志愿者排班问题
(1)
设
分别为8,10,11,13,14,16,17,19,20点安排的志愿者人数。
由题意,根据约束条件和目标函数,编写lingo程序:
写出对应的程序如下:
sets:
shift/1..9/:
x,xuqiu;
endsets
data:
xuqiu=466864468;
enddata
min=@sum(shift:
x);
x
(1)>=4;
@for(shift(i)|(i#ge#1)#and#(i#le#8):
x(i)+x(i+1)>=xuqiu(i+1));
运行程序得到结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
28.00000
Totalsolveriterations:
12
VariableValueReducedCost
X
(1)4.0000000.000000
X
(2)2.0000000.000000
X(3)4.0000000.000000
X(4)4.0000000.000000
X(5)2.0000000.000000
X(6)2.0000000.000000
X(7)2.0000000.000000
X(8)4.0000000.000000
X(9)4.0000000.000000
xuqiu
(1)4.0000000.000000
xuqiu
(2)6.0000000.000000
xuqiu(3)6.0000000.000000
xuqiu(4)8.0000000.000000
xuqiu(5)6.0000000.000000
xuqiu(6)4.0000000.000000
xuqiu(7)4.0000000.000000
xuqiu(8)6.0000000.000000
xuqiu(9)8.0000000.000000
RowSlackorSurplusDualPrice
128.00000-1.000000
20.000000-1.000000
30.0000000.000000
40.000000-1.000000
50.0000000.000000
60.000000-1.000000
70.0000000.000000
80.000000-1.000000
90.0000000.000000
100.000000-1.000000
分析结果:
8:
00,10:
00,11:
00,12:
00,14:
00,15:
00,17:
00,18:
00,20:
00,21:
00分别需要4人、2人、4人、4人、2人、2人、2人、4人、4人,至少28人。
(2)
根据题意,编写lingo程序:
min=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10;
x1>=4;
x1+x2>=6;
x2+x3>=6;
x4>=8;
x4+x5>=6;
x5+x6>=6;
x6+x7>=4;
x8>=6;
x8+x9>=8;
x9+x10>=8;
得到运行结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
38.00000
Totalsolveriterations:
7
VariableValueReducedCost
X14.0000000.000000
X22.0000000.000000
X34.0000000.000000
X48.0000000.000000
X52.0000000.000000
X64.0000000.000000
X70.0000001.000000
X86.0000000.000000
X92.0000000.000000
X106.0000000.000000
RowSlackorSurplusDualPrice
138.00000-1.000000
20.000000-1.000000
30.0000000.000000
40.000000-1.000000
50.000000-1.000000
64.0000000.000000
70.000000-1.000000
80.0000000.000000
90.000000-1.000000
100.0000000.000000
110.000000-1.000000
所以8:
00,10:
00,11:
00,12:
00,14:
00,15:
00,17:
00,18:
00,20:
00,21:
00,这些时刻的排班人数分别为4人,2人,4人,8人,2人,4人,0人,6人,2人,6人,所用志愿者数最少为38人。
6下料问题
由题意知:
模式
70cm根数
52cm根数
35cm根数
余料(cm)
1
2
0
1
5
2
1
2
0
6
3
1
1
1
23
4
1
0
3
5
5
0
3
0
24
6
0
2
2
6
7
0
1
3
23
8
0
0
5
5
设
为第i种模式切割的根数
问题
(1)
编写lingo程序如下:
sets:
con/1..3/:
b;
var/1..8/:
c,x;
CXV(con,var):
A;
endsets
data:
b=100150100;
c=1;
A=21110000
02100123
10135320;
enddata
min=@sum(var:
c*x);
@for(con(i):
@sum(var(j):
A(i,j)*x(j))>=b(i));
@for(var:
@gin(x));
得到结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
105.0000
Extendedsolversteps:
0
Totalsolveriterations:
6
VariableValueReducedCost
X
(1)30.000001.000000
X
(2)40.000001.000000
X(7)35.000001.000000
分析可知:
为使所用原料最少,应按第一种模式截30根,按第二种模式截40根,按第六种模式截35根,共105根。
问题
(2)
Globaloptimalsolutionfound.
Objectivevalue:
600.0000
Extendedsolversteps:
0
Totalsolveriterations:
6
VariableValueReducedCost
X
(2)70.000000.000000
X(4)30.000000.000000
X(6)5.000000.000000
为使余料最少,应按第二种模式截70根,按第四种模式截30根,按第六种模式截5根,共105根,预料最少600m,和第一问预料一样多,所以商家可以用这两种方案进行。
7最小覆盖问题
根据题意,共可以获得6条路径:
路径1=10+32+14+15+9=80,
路径2=9+15+18+8=50,
路径3=10+32+20+8=70,
路径4=12+14+18+8=52,
路径5=10+17+21+12=60,
路径6=10+8+18+8=44
设走第i条线路的次数为xi。
编写对应的程序如下:
min=80*x1+50*x2+70*x3+52*x4+60*x5+44*x6;
x1+x3+x5+x6>=1;
x1+x3+x4+x5>=1;
x1+x2+x4+x6>=1;
x1+x2+x5>=1;
x2+x3+x4+x6>=1;
@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);
得到运行结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
104.0000
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
X10.00000080.00000
X20.00000050.00000
X30.00000070.00000
X40.00000052.00000
X51.00000060.00000
X61.00000044.00000
RowSlackorSurplusDualPrice
1104.0000-1.000000
21