数学建模寒假作业答案
发布时间:2017-03-27 21:38:25
发布时间:2017-03-27 21:38:25
数学建模协会寒假作业答案
【作业一】
某市有甲、乙、丙、丁四个居民区,自来水由A、B、C三个水库供应。四个区每天必须得到保证的基本生活用水分别为30,70,10,10千吨,但由于水源紧张,三个水库每天最多只能分别供应50,60,50千吨自来水。由于地理位置的差别,自来水公司从各水库向各区送水所需付出的引水管理费不同(见表1-1,其中C水库与丁区之间没有输水管道),其他管理费用都是450元/千吨。根据公司规定,各区用户按照统一标准900元/千吨收费。此外,四个区都向公司申请了额外用水量,分别为每天50,70,20,40千吨。
问题一:该公司应如何分配供水量,才能获利最多?
表1-1 引水费用表
问题二:为了增加供水量,自来水公司正在考虑进行水库改造,使三个水库每天的最大供水量都提高一倍,问那时供水方案应如何改变?公司利润可增加到多少?
(灵敏度分析)
【答案】
分配供水量就是安排从三个水库向四个区送水的方案,目标是获利最多。而从题目给出的数据看,A、B、C三个水库的供水量160千吨,不超过四个区的基本生活用水量与额外用水量之和300千吨,因而总能全部卖出并获利,于是自来水公司每天的总收人是900×(50+603-50)=144000元,与送水方案无关。同样,公司每天的其他管理费用为450×(50+60+50)=72000元,也与送水方案无关。所以,要使利润最大,只需使引水管理费最小即可。另外,送水方案自然要受三个水库的供应量和四个区的需求量的限制。
很明显,决策变量为A、B、C三个水库(word/media/image1.gif)分别向甲、乙、丙、丁四个区(word/media/image2.gif)的供水量。设水库i向j区的日供水量为word/media/image3.gif。由于C水库与丁区之间没有输水管道,即word/media/image4.gif,因此只有11个决策变量。由以上分析,问题的目标可以从获利最多转化为引水费用最少,于是有:
word/media/image5.gif
约束条件有两类:一类是水库的供应量限制,另一类是各区的需求量限制。
word/media/image6.gifword/media/image7.gif
LINGO线性规划源程序如下所示:
Model:
min=160*x11+130*x12+220*x13+170*x14+140*x21+130*x22+190*x23+150*x24
+190*x31+200*x32+230*x33;
x11+x12+x13+x14=50;x21+x22+x23+x24=60;x31+x32+x33=50
x11+x2l+x31>=30;x12+x22+x32>=70;x13+x14+x24>=10;
x14+x24>=10;x11+x21+x3l<=80;x12+x22+x32<=140
x13+x23+x33<=30:x14+x24<=50:
其中第二行为目标函数,首先用max=或者min=声明求解的目标函数最大化或者最小化,然后键入目标函数。与LINDO语法不同,在LINGO的语法操作中有乘号,一定要乘号,末尾结束出现分号。而且数值不能出现在左边,键入的表达式应该为最简表达式。
按住Ctrl+S运行,得到运行结果如下:
Global optimal solution found。
Objective value: 24400.00
Total solver iterations: 8
LINGO得到的结果与LINDO得到的结果类似,但是LINGO不支持灵敏度分析。上述结果显示:通过2次迭代可以得到全局最优值24400。工厂A向乙地区供应50千吨自来水;工厂B向乙提供50千吨自来水,向丁提供10千吨自来水;工厂C向甲地区提供40千吨自来水,向丙地区提供10千吨自来水。结果后一部分为自来水供应的影子价格分析。
需要注意的是:LINDO和LINGO在求解规划问题时,可能存在由多个最优决策都能得到最优值的情况,但是软件只会显示其中一种。LINDO公司已经将LINDO软件从其产品目录中删除,这意味着以后不会再有LINDO软件的新版本了,而LINGO还在不断地更新。从上面的编程过程中,大家可以发现一个问题:当决策变量或者约束很多时,一条一条输入约束将是一件非常麻烦的事情。LINGO语言又称为建模化语言,其优势在于它能够支持数学语言的输入,尤其是能够提供集合支持,给编程带来了极大的便利。以本题为例,使用建模化语言编程代码如下所示。
LINGO建模化语言解决线性规划问题源代码如下
model:
sets:
chandi/1..3/:a;
yonghu/1..4/:b,d;
routes(ehandi,yonghu):C,x;
endsets
data:
a=50,60,50;
b=30,70,10,10;
d=80,140,30,50;
c=160,130,220,170
140,130,190,150,
190,200,230,99999999;
enddata
min=@sum(routes:c*x);
@for(chandi(i):@sum(yonghu(j):x(i,j))=a(i));
@for(yonghu(j):@sum(chandi(i):x(i,j))<=d(j));
@for(yonghu(j):@sum(chandi(i):x(i,j))>=b(j));
End
与以前的LINDO、LINGO语法不同,程序首先定义了集合,以sets开始,定义了三种属性的集合:n为1×3的向量,b和d为l×4的向量,c和z为3×4的矩阵,以end-sets结束。然后对定义的集合进行数据初始化,以data开始:分别对a,b,c,d进行初使化。其中由于自来水厂C不能给用户丁供水,因此可以定义一个非常大的数,代表非常大的代价,以enddata结束。接下去的就是目标函数和约束条件,在目标函数中使用了@sum求和函数,在约束中使用了@for循环函数。可见,如果决策变量或者约束很多,也可以不用一条一条输入了,只需要一条循环便可以解决。得到结果。
由结果显示:通过8次迭代可以得到全局最优值24400。z就是所需的决策变量矩阵,工厂A向乙地区供应50千吨自来水;工厂B向乙提供50千吨自来水,向丁提供10千吨自来水;工厂C向甲地区提供40千吨自来水,向丙地区提供10千吨自来水。结构后一部分为自来水供应的影子价格分析,与以前得到的结果相同。
问题二是关于灵敏度分析,具体可参见优化问题课件,在此就不再赘述。
——摘自邬学军,周凯,宋军全编著,数学建模竞赛辅导教程,浙江大学出版社,2009。08,第84页
【作业二】
某公司出口换汇成本分析
对经营同一类产品出口业务的公司进行抽样调查, 被调查的13家公司,其出口换汇成本与商品流转费用率资料如下表。设出口换汇成本为word/media/image9.gif, 商品流转费用率为word/media/image10.gif。
(1)求变量Y关于x的线性回归方程。
(2)求word/media/image11.gif的无偏估计。
(3) 并估计某家公司商品流转费用率是6.5%的出口换汇成本。
【答案】
令商品流转费用率为试验指标(因变量)y,令出口换汇成本为影响因变量的因素即自变量x,然后用回归拟合建立起二者之间的关系,且令word/media/image12.gif,用回归模型解该方程的具体程序如下:
x=[1.40,1.20,1.00,1.90,1.30,2.40,1.40,1.60,2.00,1.00,1.60,1.80,1.40]; y=[4.20,5.30,7.10,3.70,6.20,3.50,4.80,5.50,4.10,5.00,4.00,3.40,6.90];
X=[ones(size(x))',x']; %执行回归命令
[b,bint,r,rint,stats]=regress(y',X,0.05)
rcoplot(r,rint) %画出残差及它们的置信区间的图形
问题一
参数估计:word/media/image13.gif
变量y关于x的线性回归方程:word/media/image14.gif
问题二
word/media/image11.gif的无偏估计体现的是回归方程的优化程度,因此:
检验:word/media/image15.gif,word/media/image16.gif和F都相对较小,说明回归直线对样本数据点的拟合程度低;
问题三
预测:利用回归线性方程可解得商品流转费用率为6.5%是对应的出口换汇成本的近似值,具体程序如下:
y0=6.5;
x0=(8.2333-y0)/2.1667;
运行程序结果可得:
word/media/image17.gif(人民币/美元)
【作业三】
1、根据经验,当一种新商品投入市场后,随着人们对它的拥有量的增加,其销售量word/media/image18.gif下降的速度与word/media/image18.gif成正比。广告宣传可给销量添加一个增长速度,它与广告费word/media/image19.gif成正比,但广告只能影响这种商品在市场上尚未饱和的部分(设饱和量为word/media/image20.gif)。建立一个销售word/media/image18.gif的模型。若广告宣传只进行有限时间word/media/image21.gif,且广告费为常数word/media/image22.gif,问word/media/image18.gif如何变化?
【答案】
根据经验,当一种新商品投入市场后,随着人们对它的拥有量的增加,其销售量word/media/image18.gif下降的速度与word/media/image18.gif成正比。广告宣传可给销量添加一个增长速度,它与广告费word/media/image19.gif成正比,但广告只能影响这种商品在市场上尚未饱和的部分(设饱和量为word/media/image20.gif)。建立一个销售word/media/image18.gif的模型。若广告宣传只进行有限时间word/media/image21.gif,且广告费为常数word/media/image22.gif,问word/media/image18.gif如何变化?
解:
假设在没有广告宣传的情况下,销售量word/media/image23.gif的模型为:
word/media/image24.gif
在加入广告宣传后,销售量word/media/image23.gif随时间变化的情况如下:
word/media/image25.gif
其中word/media/image26.gif为word/media/image27.gif时间内的总销售量。
如果广告宣传只进行有限的时间word/media/image21.gif,则上述模型变为
word/media/image28.gif
2、在鱼塘投放尾鱼苗,随着时间的增长,尾数将减少而每尾的质量将增加。设尾数的(相对)减少率为常数,由于喂养引起的每尾鱼重量的增加率与鱼的表面积成正比,由于消耗引起的每尾鱼重量的减少率与重量成正比。分别建立尾数和每尾鱼重的微分方程,并求解。
【答案】
在鱼塘投放尾鱼苗,随着时间的增长,尾数将减少而每尾的质量将增加。
设尾数的(相对)减少率为常数,由于喂养引起的每尾鱼重量的增加率与鱼的表面积成正比,由于消耗引起的每尾鱼重量的减少率与重量成正比。分别建立尾数和每尾鱼重的微分方程,并求解。
解:
尾数的(相对)减少率为常数,可得以下微分方程:
word/media/image29.gif
由于喂养引起的每尾鱼重量的增加率与鱼的表面积成正比,由于消耗引起的每尾鱼重量的减少率与重量本身成正比。可得以下微分方程:
word/media/image30.gif
【作业四】
假设岛上不断有大陆来的移民。再假设r时刻大陆上有S种人,岛上有word/media/image31.gif种人。移居到岛上并在那边开拓殖民地的新人种的增加速度与大陆上尚未移居到岛上的人种数word/media/image32.gif成比例,比例常数为I。此外,人种的灭绝速度与岛上的人种数成比例,比例常数为E。证明岛上的人种数将达到一个平衡值,它近似为word/media/image33.gif。请近似画出其与t的函数曲线。
【答案】
由题中条件知岛上人种数word/media/image31.gif,应满足以下微分方程
word/media/image34.gif
其通解为
word/media/image35.gif
由于
word/media/image36.gif
因此得到题中结论。
函数曲线为:
【软件题】
利用Matlab解决以下问题。
1、 对于word/media/image38.gif,如果word/media/image39.gif,word/media/image40.gif,求解X。
代码
A=[4 9 8;4 6 4;3 5 7]
B=[37;50;28]
X=A\B
结果
2、 解方程组word/media/image42.gif。(应用x=a\b)
代码
a=[2 9 0;3 4 11;2 2 6]
b=[13;6;6]
x=a\b
结果
3、绘制曲线word/media/image44.gif,x的取值范围为[-9,5]。(应用plot)
代码
x=-9:0.1:5;
y=x.^3+x+1;
plot(x,y);
结果
【作业五】
在一项调查降价折扣券对顾客的消费行为影响的研究中,商家对1000个顾客发放了商品折扣券和宣传资料。折扣券的折扣比例分别为5%,10%,15%,20%,30%.每种比例的折扣券均发放了200人,现在记录他们一个月内的使用折扣券购物的人数和比例数据如下表:
(1) 对使用折扣券人数比例和折扣比例建立普通的一元线性回归模型。
(2) 与(1)相比如想要使用折扣券人数比例为25%,则折扣券的折扣比例应该为多大。
【答案】
(1)记x为折扣比例,word/media/image46.gif为使用折扣券人数比例,做logit变换word/media/image47.gif,普通的一元线性回归模型为word/media/image48.gif,这里没有给出误差项的形成,利用MATLAB统计工具箱中的命令regress,可算出word/media/image49.gif,通过检验,高度显著。
(2)利用glmfit命令可以得到word/media/image50.gif, 拟合程度也非常好。(1)中模型表面上看起来很好,其实在做估计和检验时,需要对误差项作较强的限制,而logit回归克服了这一缺陷。
又由word/media/image51.gif,
解得word/media/image52.gif,故想要使用折扣券人数比例为25%,则折扣券的折扣比例应该为10%。
【软件题】
在同一坐标系中画出word/media/image53.gif的图形。(要求线型和颜色都不相同,且给出图例)
代码
x=0:0.001:1.5;
y1=sqrt(x);
y2=x.^2;
y3=x.^(1/3);
y4=x.^3;
plot(x,y1,x,y2,x,y3,x,y4)
legend('y=x^{1/2}','y=x^2','y=x^{1/3}','y=x^3');
结果
【作业六】
面试时间最优化问题
有四名同学到一家公司参加三个阶段的面试,公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不容许插队(即:在任何一个阶段4名同学的顺序是一样的),由于4名同学的专业背景不同,所以没人再三个阶段的面试时间也不同,如下表所示:这四名同学约定他们全部面试完成以后一起离开公司,假定现在时间是早晨8:00,问他们最早何时能离开公司?(单位:分钟)
【答案】
首先我们对给出的面试时间表格进行分析,用计算机编程算出任意两个求职者按照不同的顺序参加面试时,求职者等求职者的时间和考官等求职者的时间之和,然后用图论法建模,将算出的时间表达有向赋权图的权值,问题转化成求有向赋权图(图1)中连接四个顶点的路径最短问题。我们利用MATLAB编程,按从小到大的顺序依次找出n-1(n表示参加面试的人数)条权值最小边,然后用人工参与的方式,将找出的n-1条边排出最优顺序。最后,得出丁、甲、乙、丙的顺序为最优方案,共用84分钟。即:三人可在9:24一起离开公司。
以上为图论方法,还可以利用0-1规划。记word/media/image55.gif为第i名同学参加第j阶段面试需要的时间word/media/image56.gif。word/media/image3.gif表示第i名同学参加第j阶段面试的时间(可以记早上8:00面试开始0时刻)word/media/image56.gif。T表示完成全部面试所花费的时间。
目标函数为:
word/media/image57.gif
约束条件:
(1)时间先后次序约束(每人只有参加完前一个阶段的面试后才能进入下一个阶段):
word/media/image58.gif,word/media/image59.gif
(2)每个阶段j 同一时间只能面试1 名同学:
用0 −1变量word/media/image60.gif表示第k名同学是否排在第i名同学前面(1表示“是”,0表示“否”),则
word/media/image61.gif
word/media/image62.gif
利用Lingo同样可以解出结果。
【软件题】
设word/media/image63.gif,试在word/media/image64.gif上求出该函数的极大、极小值。
【答案】
极小值
[x,y]=fminbnd('exp(2*sin(x))*cos(x)-exp(2*cos(x))*sin(x)',-5,5)
x =2.1999
y =-3.2140
极大值
[x,y]=fminbnd('-exp(2*sin(x))*cos(x)+exp(2*cos(x))*sin(x)',-5,5)
x =-0.6292
y =3.2140