数学建模作业4.docx
《数学建模作业4.docx》由会员分享,可在线阅读,更多相关《数学建模作业4.docx(19页珍藏版)》请在冰豆网上搜索。
数学建模作业4
数学建模作业-----第五章
1非线性最小二乘问题
(1)最小二乘方法
无约束问题为:
minz=
编写lingo程序:
sets:
quantity/1..15/:
x,y;
endsets
data:
x=2,5,7,10,14,19,26,31,34,38,45,52,53,60,65;
y=54,50,45,37,35,25,20,16,18,13,8,11,8,4,6;
enddata
min=@sum(quantity:
(a+b*@exp(x*c)-y)^2);
@free(a);@free(b);@free(c);
结果:
Localoptimalsolutionfound.
Objectivevalue:
44.78049
Extendedsolversteps:
5
Totalsolveriterations:
68
VariableValueReducedCost
A2.4301770.000000
B57.332090.000000
C-0.4460383E-010.000000
(2)最小一乘法
无约束问题为:
min(a,b)z=
编写lingo程序写出相应的LINGO程序如下:
sets:
quantity/1..15/:
x,y;
endsets
data:
x=2,5,7,10,14,19,26,31,34,38,45,52,53,60,65;
y=54,50,45,37,35,25,20,16,18,13,8,11,8,4,6;
enddata
min=@sum(quantity:
@abs(a+b*@exp(x*c)-y));
@free(a);@free(b);@free(c);
运行结果:
Localoptimalsolutionfound.
Objectivevalue:
20.80640
Extendedsolversteps:
2
Totalsolveriterations:
643
VariableValueReducedCost
A3.3982670.000000
B57.114610.000000
C-0.4752126E-010.000000
(3)最大偏差最小的方法
编写程序:
sets:
quantity/1..15/:
x,y;
endsets
data:
x=2,5,7,10,14,19,26,31,34,38,45,52,53,60,65;
y=54,50,45,37,35,25,20,16,18,13,8,11,8,4,6;
enddata
min=@max(quantity:
@abs(a+b*@exp(c*x)-y));
@free(a);@free(b);@free(c);
结果:
Linearizationcomponentsadded:
Constraints:
91
Variables:
76
Integers:
30
Localoptimalsolutionfound.
Objectivevalue:
2.774408
Extendedsolversteps:
38
Totalsolveriterations:
7654
VariableValueReducedCost
A2.8855940.000000
B55.862460.000000
C-0.4441314E-010.000000
(4)画出散点图和曲线图
编写matlab程序如下:
>>x=[257101419263134384552536065];
y=[54504537352520161813811846];
scatter(x,y,'k*');
holdon
x=0:
0.1:
100;
y=2.43+exp(-0.0446*x).*57.33;
plot(x,y,'g');
xlabel('x');ylabel('y');
holdon
x=0:
0.1:
100;
y=3.40+exp(-0.048*x).*57.11;
plot(x,y,'r');
xlabel('x');ylabel('y');
holdon
x=0:
0.1:
100;
y=2.89+exp(-0.044*x).*55.86;
plot(x,y,'b');
xlabel('x');ylabel('y');
得到图形:
分析:
三条曲线的结果大致相同,但是略有差异。
最小二乘法当回归残差满足正态分布时,它有很好的统计性质,但是他的回归性质不稳定。
最小一乘法和最小二乘法近似,更靠近主流数据。
最大偏差最小回归法因为受到最大平偏差的影响,曲线始终偏移。
2非线性优化问题:
(1)设汽油由
桶A类原油和
桶B类原油化合而成,民用燃料油由
桶A类原油和
桶B类原油化合而成,汽油广告费为
元,民用燃料的广告费为
元。
由题意知道,
汽油产量为
桶,销量为
桶;
民用燃料油产量为
桶,销量为
桶。
约束条件:
销售约束:
,
原料约束:
,
指标约束:
,
目标函数:
利润:
编写lingo程序如下:
max=0.5*z1*250+z2*200-z1-z2;
x1+x2<=5000;
y1+y2<=10000;
10*x1+5*y1>=8*(x1+y1);
10*x2+5*y2>=6*(x2+y2);
0.5*z1<=x1+y1;
z2<=x2+y2;
得到:
Globaloptimalsolutionfound.
Objectivevalue:
3230000.
Totalsolveriterations:
2
VariableValueReducedCost
Z110000.000.000000
Z210000.000.000000
X13000.0000.000000
X22000.0000.000000
Y12000.0000.000000
Y28000.0000.000000
RowSlackorSurplusDualPrice
13230000.1.000000
20.000000297.0000
30.000000174.5000
40.000000-24.50000
50.000000-24.50000
60.000000248.0000
70.000000199.0000
结果分析:
汽油由3000桶A类原油和2000桶B类原油化合而成;
民用燃料油产品由2000桶A类原油和8000桶B类原油化合而成;
广告费分别为1000元;
石油公司获得最大利润3230000元。
(2)根据问题的需要,设汽油中增加SQ量
民用燃料油增加SQ量
.
根据题意,新的约束条件为:
销售约束:
,
SQ约束:
,
原料约束:
,
指标约束:
,
新的目标函数:
利润:
编写lingo程序如下:
在LINGO中输入:
max=0.5*z1*250+z2*200-z1-z2-200*(k1+k2);
x1+x2<=5000;
y1+y2<=10000;
10*x1+5*y1>=(8-k1^0.5)*(x1+y1);
10*x2+5*y2>=(6-0.6*k2^0.6)*(x2+y2);
0.5*z1<=x1+y1+k1;
z2<=x2+y2+k2;
k1<=(x1+y1)*0.05;
k2<=(x2+y2)*0.05;
得到:
Localoptimalsolutionfound.
Objectivevalue:
3756000.
Totalsolveriterations:
26
VariableValueReducedCost
Z131500.000.000000
Z20.6618792E-070.000000
K1750.00000.000000
K20.0000001029.000
X15000.0000.000000
X20.0000000.000000
Y110000.000.000000
Y20.0000000.000000
RowSlackorSurplusDualPrice
13756000.1.000000
20.6618757E-07250.4000
30.000000250.4000
4390791.90.000000
50.0000000.000000
60.000000248.0000
7-0.6618792E-07199.0000
80.00000048.00000
90.0000001028.000
结果分析:
汽油由5000桶A类原油和10000桶B类原油化合而成,
只生产汽油产品,不生产民用燃料油,
增加SQ添加剂750桶,
汽油广告费31500元,
石油公司获得的利润最大为3756000元。
(3)由题意知,只需要在第二问的基础上修改利润表达式,其他条件不变即可。
修改后的目标函数:
利润:
编写lingo程序:
max=0.5*z1*250+z2*200-z1-z2-200*400-100*(k1+k2-400);
x1+x2<=5000;
y1+y2<=10000;
10*x1+5*y1>=(8-k1^0.5)*(x1+y1);
10*x2+5*y2>=(6-0.6*k2^0.6)*(x2+y2);
0.5*z1<=x1+y1+k1;
z2<=x2+y2+k2;
k1<=(x1+y1)*0.05;
k2<=(x2+y2)*0.05;
得到:
Localoptimalsolutionfound.
Objectivevalue:
3791000.
Totalsolveriterations:
25
VariableValueReducedCost
Z131500.000.000000
Z20.0000000.000000
K1750.00000.000000
K20.0000000.000000
X15000.0000.000000
X20.00000051.45000
Y110000.000.000000
Y20.00000051.45000
RowSlackorSurplusDualPrice
13791000.1.000000
20.000000255.4000
30.000000255.4000
4390791.90.000000
50.0000000.000000
60.000000248.0000
70.000000199.0000
80.000000148.0000
90.00000099.00000
分析结果:
汽油由5000桶A类原油和10000桶B类原油化合而成,
应全部生产汽油,
添加SQ的量为750,
投入广告费31500元,
此时获得最大利润,为3791000元。
3毛巾清洗服务问题.
设订货量为Q,订货周期为t,订货费为
脏毛巾储存费为
干净毛巾储存费为
.每条毛巾的清洗费为w。
由题意得
,
,w=0.6
毛巾的平均存货费为
;
毛巾平均订货费为
;
毛巾的平均总费用min=
+
将各已知量代入上式得到:
min=
+
=
编写LINGO程序:
min=0.5*Q*(0.02+0.01)+600*(81+0.6*Q)/Q;
得到结果:
Localoptimalsolutionfound.
Objectivevalue:
414.0000
Extendedsolversteps:
5
Totalsolveriterations:
208
VariableValueReducedCost
Q1800.0000.000000
RowSlackorSurplusDualPrice
1414.0000-1.000000
所以
1800,每隔3天进行一次更换,毛巾平均总费用min=414元。
(2)根据题意知:
添加约束条件
当Q
w=0.60;
当Q
2500,w=0.50;
写出相应的LINGO程序如下:
D=600;C_P1=0.02;C_p2=0.01;C_D=81;
w=@if(Q#lt#2500,0.60,0.50);
min=1/2*Q*(C_P1+C_P2)+D*(C_D+w*Q)/Q;
运行程序得到:
Linearizationcomponentsadded:
Constraints:
15
Variables:
10
Integers:
6
Localoptimalsolutionfound.
Objectivevalue:
356.9400
Extendedsolversteps:
0
Totalsolveriterations:
4
VariableValueReducedCost
D600.00000.000000
C_P10.2000000E-010.000000
C_P20.1000000E-010.000000
C_D81.000000.000000
w0.50000000.000000
Q2500.0000.000000
分析结果:
当订货量为2500条时,毛巾消费为356.94元,更换周期为4-5天,可以选择打折服务。
4经济订购与生产存储模型.
(1)若公司向合同商购买
设最大库存量为Q,最小库存量为0。
由题意得
平均存货费
平均订货费=
.
平均总费用min=
+
代入数据得:
min=
编写lingo程序:
min=0.5*0.02*365*Q+15*26000/Q;
运行结果:
Localoptimalsolutionfound.
Objectivevalue:
2386.210
Extendedsolversteps:
5
Totalsolveriterations:
290
VariableValueReducedCost
Q326.87810.000000
分析结果:
最为327,分别代入可知,
min=2386.211元。
=327/26000=0.01258(年)
全年订货次数
=79.51070=80次/年。
(2)若公司自己生产
设单次生产量为Q,存储周期为t,有
.
由题意得:
p=
代入数据得:
p=
编写lingo程序:
min=0.5*0.02*365*(1-26000/36500)*Q+20*26000/Q;
运行得到:
Localoptimalsolutionfound.
Objectivevalue:
1477.836
Extendedsolversteps:
5
Totalsolveriterations:
190
VariableValueReducedCost
Q703.73160.000000
分析结果:
平均库存费用为1477.836元,
对比可知,该公司应该自己生产。
⑤加分试验(选址问题)
(1)模型建立
记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为(xj,yj),日储量为ej,j=1,2;从料场j向工地i的运送量为Xij。
目标函数为:
约束条件为:
当用临时料场时决策变量为:
Xij,
当不用临时料场时决策变量为:
Xij,xj,yj。
使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量为Xij,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题.线性规划模型为:
其中
,i=1,2,…,6,j=1,2,为常数。
.模型求解
编写相应的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.75;
d=3,5,4,7,6,11;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)^0.5);
@for(demand(i):
[DEMAND_CON]@sum(supply(j):
c(i,j))=d(i););
@for(supply(i):
[SUPPLY_CON]@sum(demand(j):
c(j,i))<=e(i););
@for(supply:
@free(x);@free(y););
END
运行程序得到如下:
Localoptimalsolutionfound.
Objectivevalue:
136.20604
Totalsolveriterations:
59
VariableValueReducedCost
A
(1)1.2500000.000000
A
(2)8.7500000.000000
A(3)0.50000000.000000
A(4)5.7500000.000000
A(5)3.0000000.000000
A(6)7.2500000.000000
B
(1)1.2500000.000000
B
(2)0.75000000.000000
B(3)4.7500000.000000
B(4)5.0000000.000000
B(5)6.5000000.000000
B(6)7.7500000.000000
D
(1)3.0000000.000000
D
(2)5.0000000.000000
D(3)4.0000000.000000
D(4)7.0000000.000000
D(5)6.0000000.000000
D(6)11.000000.000000
X
(1)3.2548830.000000
X
(2)7.250000-0.4340540E-05
Y
(1)5.6523320.000000
Y
(2)7.750000-0.1390490E-05
E
(1)20.000000.000000
E
(2)20.000000.000000
C(1,1)3.0000000.000000
C(1,2)0.0000004.008540
C(2,1)0.0000000.2051358
C(2,2)5.0000000.000000
C(3,1)4.0000000.000000
C(3,2)0.0000004.487750
C(4,1)7.0000000.000000
C(4,2)0.0000000.5535090
C(5,1)6.0000000.000000
C(5,2)0.0000003.544853
C(6,1)0.0000004.512336
C(6,2)11.000000.000000
所以,A料场向工地1…6运送水泥量分别为3吨、0吨、4吨、7吨、6吨和0吨,B料场向工地1…6运送水泥量分别为0吨、5吨、0吨、0吨和11吨,这样总的吨公里数最小为136.20604.
(2)
为进一步减少吨公里数,改建两个新的料场,日储量各位20吨。
即在问题
(1)中稍微改变程序,如下:
改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小。
这是非线性规划问题。
非线性规划模型为:
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.75;
d=3,5,4,7,6,11;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)^0.5);
@for(demand(i):
[DEMAND_CON]@sum(supply(j):
c(i,j))=d(i););
@for(supply(i):
[SUPPLY_CON]@sum(demand(j):
c(j,i))<=e(i););
@for(supply:
@bnd(0.5,x,8.75);@bnd(0.75,y,7.75););
END
运行结果得到如下:
Localoptimalsolutionfound.
Objectivevalue:
89.88347
Totalsolveriterations:
19
VariableValueReducedCost
X
(1)5.6959660.000000
X
(2)7.250000-0.1277784E-05
Y
(1)4.9285580.000000
Y
(2)7.750000-0.1286103E-05
E
(1)20.000000.000000
E
(2)20.000000.000000
C(1,1)3.0000000.000000
C(1,2)0.0000001.765937
C(2,1)5.0000000.000000
C(2,2)0.0000000.6737602
C(3,1)4.0000000.000000
C(3,2)0.0000000.8781215
C(4,1)7.0000000.000000
C(4,2)0.0000001.733428
C(5,1)1.0000000.000000
C(5,2)5.0000000.000000
C(6,1)0.0000004.530599
C(6,2)11.