数学建模的作业.docx
- 文档编号:6223857
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:21
- 大小:152.97KB
数学建模的作业.docx
《数学建模的作业.docx》由会员分享,可在线阅读,更多相关《数学建模的作业.docx(21页珍藏版)》请在冰豆网上搜索。
数学建模的作业
实验1渡口模型仿真计算
实验内容:
(渡口模型仿真)渡船营运者如何规划,使得单次运送车辆最多、最合理,从而获得最大利润。
实验目的:
对渡口问题进行仿真计算,与理论结果进行比较,验证模型的正确性。
实验步骤:
1、对问题的变量进行合理定义,并指出合理存在区间;
2、选取合适步长,通过C语言或者MATLAB软件编程,遍历寻优,得到单次运送所获利润的最大值,并同时求出最大值点;
3、考虑随机到达的情况,进行随机优化;
4、比较结论,对模型的合理性进行评估,或者进一步优化和重构模型。
【问题提出】一个渡口的渡船营运者拥有一只甲板长32米,可以并排停放两列车辆的渡船。
他在考虑怎样在甲板上安排过河车辆的位置,才能安全地运过最多数量的车辆。
【准备工作】他关心一次可以运多少辆车,其中有多少小汽车,多少卡车,多少摩托车。
他观察了数日,发现每次情况不尽相同,得到下列数据和情况:
(1)车辆随机到达,形成一个等待上船的车列;
(2)来到渡口的车辆中,轿车约占40%,卡车约占55%,摩托车越占5%;
(3)轿车车身长为3.5~5.5米,卡车车身长为8~10米。
【问题分析】这是一个遵循“先到先服务”的随机排队问题,这里试图用模拟模型的方法来解决,故需分析以下几个问题
需要考虑下面一些问题:
(1)应该怎样安排摩托车?
(2)下一辆到达的车是轿车还是卡车?
(3)怎样描述一辆车的车身长度?
(4)到达的车要加入甲板上两列车队的哪一列中去?
【建立模型】其中我以函数获得的平均分布的随机数,然后假定车身长度也符合平均分布,并假定渡船甲板由两列组合成一列,长64米,每辆车辆来到渡口,遵循先到先服务的原则,依次进入,并假定两辆车之间相隔0.5米,因此得出模型1
假定遵循左右均衡的原则。
尽可能使左右车辆的卡车数量相等,轿车数量相等,得出模型2
模型1中,由于车辆为分两队摆放,每边都应有一定间隙,例如,若有8米空隙在模型1中,理论上还可停一辆车,但显然是不可能的.假定给出停放两列汽车的方式为采用先停一列再停一列的方式,得出模型3
由于车辆的长度不可能特长或特短,因此车长该服从正态分布.将以上模型修改,得出模型4,5,6
【模型求解】注意到甲板停放两队汽车,可供停车的总长度为32*2=64米。
这里汽车排成的车队总长为55.06米,似乎还可以停放一辆车,但应注意到车辆是分两队排放,且各车停放时均有一定间隙,因此我们可认为不能再停一辆车。
船主关心一次能运载多少辆卡车,多少辆轿车,是否有空间浪费。
上表给出一个解答,但它是由特定的一组随机数来确定车型和车身长度的,对于另一组随机数,将会产生不同的结果。
实际上,如果将由一组随机数模拟确定的结果,看成对一次实际运载情况的观察,那么一次观察结果没有多少实际参考价值。
船主应当做较多次的“观察”,求出每次“平均”运载多少辆卡车和轿车,每次“平均”会浪费多少空间。
这儿的关键词是“平均”两字。
列表
1
2
3
4
5
6
卡车数(平均)
(左)
4.4882
2.0650
2.0184
5.3056
2.3900
2.3464
(右)
1.9892
2.0290
2.3524
2.3384
轿车数(平均)
(左)
3.4754
1.5148
2.1914
4.0260
1.7804
2.3682
(右)
1.8030
2.1546
2.0048
2.3800
摩托车数(平均)
0.4414
0.4122
0.5170
0.5164
0.4774
0.5732
总长度
(左)
59.9412
27.1625
30.1279
61.2016
27.4366
29.4172
(右)
27.8786
30.0094
28.0146
29.3964
剩余长度
4.0588
8.9589
3.8627
2.7984
8.5488
5.1864
【结论与解释】
①由于在小渡口,摩托车的数量很少,约5%,而且体积比起卡车和轿车要小得多,可以将它安插在车队的间隙,认为它不占有实际空间。
②关于到达码头的下一辆车的类型。
若随机变量x~u(0,1),由于车到来的情况是完全未知的,不能确定是哪类车,因此服从均匀分布。
确定车辆类型:
p{0≤x≤0.55}=0.55
p{0.55≤x≤0.95}=0.40
p{0.95≤x≤1.0}=0.05
③关于车身长的确定
在表中记录了一次摸拟的数据和结果,其中列长表示甲板上已安排的车列的长度。
RND
0.10
0.28
0.61
0.34
0.77
0.57
0.02
0.88
种类
卡车
卡车
轿车
卡车
轿车
轿车
卡车
轿车
RND
0.59
0.48
0.10
0.56
0.30
0.90
0.81
0.66
车长(米)
9.44
8.96
3.70
9.12
4.10
5.30
9.62
4.82
列长(米)
9.44
18.4
22.1
31.22
35.32
40.62
50.24
55.06
上表中的数据是一串在(0,1)区间上均匀分布的随机数,通常记为RND。
根据上面的不等式,参照下图所示,我们用一串随机数来确定到达车辆的车型。
00.550.951.0
卡车轿车摩托车
假定轿车和卡车车身长服从给定区间上的均匀分布。
我们用另一串RND来确定车身长度(见表中第三行和第四行)。
根据概率论知识,若X~U(0,1)则有a+(b-a)X~U(a,b),即a+(b-a)X服从(a,b)区间上均匀分布。
我们假定轿车和卡车车身长服从给定区间上的均匀分布,则车身的长度由下面等式给出:
轿车长度=3.5+2.0RND
卡车长度=8.0+2.0RND
④关于车辆的排放
甲板可停放两列汽车,可供停车的总长为32×2=64米,但各车前后均有一定间隙,并且两列很难等长。
排放原则:
两列尽可能均衡。
由一组特定随机数确定车型和车身长度,得到一个解答,不同的随机数组将会产生不同的结果。
将由一组随机数模拟确定的结果,看成对一次实际运载情况的观察,少数几次观察是无意义的,需要多次重复模拟(相当于实际观察),再进行统计分析。
一、模型建立与问题处理
1、认为摩托车不会占用实际的空间
2、确定即将到达的车辆类型——利用随机模拟的方法
3、确定随机到大的车辆的身长——利用随机模拟的方法
4、关于车辆的排放
甲板可停放两列汽车,可供停车的总长为
设到达的卡车、轿车长度分别为随机变量
。
结合实际,不妨设卡车、轿的车身长度
均服从正态分布,由于卡车车身身长为
,所以卡车车长均值为
由概率知识中的“
”原则,其标准差为
,所以得到
。
同理可得
。
二
(一)、两个随机变量的模拟:
(1)汽车类型确定原理分析
若随机变量
,有
(2)车身长度模拟原理分析
假定轿车和卡车车身身长服从给定区间上的均匀分布。
根据概率论知识,若
,有
,即
服从区间
上的均匀分布。
车身的长度由下面的等式给出:
轿车车身长度
卡车车身长度
(二)、模拟原理:
汽车车型:
轿车车身长度
卡车车身长度
(三)、模拟数据:
可用一串随机数(RND)来确定到达车辆的车型与车长。
RND
0.1
0.28
0.61
0.34
0.77
0.57
种类
卡车
卡车
轿车
卡车
轿车
轿车
RND
0.59
0.48
0.10
0.56
0.30
0.90
车长(米)
9.44
8.96
3.70
9.12
4.10
5.30
三、模拟程序设计:
由以上的分析,程序设计时应该划分的主要模块如下:
1.确定下一辆到达车辆的的类型;
2.根据车的类型确定到达的车辆长度;
3.根据一定的停放规则,确定放在哪一列。
模拟求解结果及分析
(一)运行结果
程序名为sim_dukou,运行程序,输出结果如:
sim_dukou
输入模拟次数:
1000
平均每次渡船上的车数
mean_=
5.48403.91800.5160
(二)结果分析
上面为运行一次模拟程序,模拟次数为1000次的模拟结果。
从模拟结果上看,摩托车的平均数量不到一辆,以此从另外一方面看,忽略摩托车的平均长度是合理的。
统计结果显示平均每次渡口时船上的卡车、轿车、摩托车数量分别为5.484、3.918、0.516辆。
用matlab写程序如下
%M脚本文件eg1_1a.m
functionsim_dukou
global
d=0.7;
n=input('请输入随机数:
');
ifisempty(n)|(n<500)
n=500;
end
N=zeros(1,3);
fori:
n,
isfull=0;BL=[0,0];
Whlie~isfull
Id=markeid;
N(id)=N(id)+1;
Newlen=getlength(id);
ifid<=2,
[isfull,pos]=getiffull(BL,newlen);
If~isfull,
BL(pos)=BL(pos)+newlen;
ifBL(pos)~=0,
BL(pos)=BL(pos)+d;
end
end
end
end
functionr=makeid
t=rand;
ift<=0.55,
r=1;
elseif
t<0.95
r=2;
else
r=3;
end
functionlen=getlength(id)
switchid
case1,
len=min([4.5+randn*(1/3),5.5]);
case2,
len=min([9+randn*(1/3),10]);
case3,
len=0;
end
function[full,pos]=getiffull(L,newlen)
full=0;
pos=0;
globald;
newlen=newlen+d;
ifL
(1)>L
(2),
ifL
(2)+newlen<32,
pos=2;
else
full=1;
end
sim_dukou
输入模拟次数:
1000
mean_=
5.48403.91800.5160
由此得到小汽车卡车摩托车每次过河平均的数量。
实验2穿越公路模型仿真计算
实验内容:
(穿越公路模型仿真)在一条不太拥挤的公路上如何合理设置斑马线,使得行人能安全穿越。
实验目的:
对穿越公路模型进行仿真计算,与理论结果进行比较,验证模型的正确性。
实验步骤:
1、利用题目给定模型和方法编程计算,对结果进行比较分析;
2、在上述基础上考虑有双向行驶的情况,计算模型结果,分析结果的变化情况;
3、考虑设置“安全岛”,计算相应结果,分析结果的变化情况。
【问题提出】一条公路交通不太拥挤,以致人们养成冲过马路的习惯,不愿意行走到邻近较远处的“斑马线”。
当地交通管理部门不允许任意横穿公路,为方便行人,准备在一些特殊地点增设“斑马线”,让行人可穿越公路,并且还要保证行人的等待时间不超过15秒。
【问题分析】增设“斑马线”需考虑哪方面的问题?
1.考虑问题的立场,司机或行人哪方面的利益更为重要?
2.公路情况:
是否有弯道?
车道之间是否设有安全隔离带?
···
3.车流情况:
车流量的大小
4.行人情况:
穿越公路的速度大小?
穿越公路的人群密度?
穿越公路者的性质?
此问题的特点是机理复杂,受到较多随机因素的影响,故采用统计随机模拟方法来解决。
实验3火车弯道仿真计算
实验内容:
火车弯道曲线仿真计算与作图
实验目的:
对火车弯道曲线进行仿真计算,与理论结果进行比较,验证模型的正确性,然后做出曲线图像。
实验步骤:
1、仔细阅读教材所建模型,掌握模型的建立与计算方法;
2、用适当的近似计算技术,对模型进行数值计算;
3、比较结论,对模型的合理性进行评估;
4、绘制曲线图。
实验过程:
一、问题分析
如果我们能够给火车弯道一个非常合理的建造的话,那么就会减小线路的损坏,使乘车人感到舒适、不会担心发生危险。
因此,我们要给它编制一个合理的、保证列车安全运行的轨道。
轨道的建造对人民和财产有密切的影响,我们可以从网上和电视上看到火车脱轨残不忍睹的场景。
为了不使亲人们流泪、国家的财产得以保障。
因此,为了解决这些问题我们现在所要解决的是用数学建模方法对现题中提出的问题给以计算。
同时避免离心力的突然出现,要在弯道与直道间加设一段曲线,以使列车受到的离心力从零均匀地增大到F,外轨超高也从零逐渐增大到h。
所加曲线就是缓和曲线。
根据所建立的模型,分别求出:
缓和曲线方程,考虑到内轨和外轨的不同之处;在外轨超高不改变时,速度提高时,则转弯半径增大,缓和曲线的改造;在外轨超高可以改变时,缓和曲线的改造。
二、实验假设:
假设内外轨间的距离为L,内外轨的高度差为h,火车转弯的半径为R,
假设在建造的地方无冻土地区,不会影响建造。
假设建造期间无不安全事故发生。
假设施工质量无质量问题。
假设不受地形的影响。
假设火车在转弯时前的缓冲时的坐标与坐标轴的相同。
假设个项指标符合国家标准。
假设微圆、曲线视为直线。
三、符号及变量说明
R
为转弯半径K为曲率
R为曲率半径V
火车运行速度
S为转弯前缓和长度
转弯总的缓和长度
O为圆曲线的圆心
为缓和曲线所上升的高度
h为没在正式转弯是缓和上升的高度r在外轨超高不变时,速度提高后的转弯半径
a内轨缓和曲线上一点Q外轨缓和曲线上一点
m火车的质量
火车内外轨的距离
用回旋线作为缓和曲线的数学模型
K=
在火车行驶到拐弯处时,即有
mg
得h
a点坐标为(x,y),假设x的坐标值在坐标轴上相等时,斜率y
为0。
K=y
在根据假如缓和曲线所上升的高与转弯总的缓和长度成正比,则可得出:
h
[0
]s
200]
即h=
,当取缓和曲线中的一小段在则有ds=
积分后得ds=dx,即s=x
在假如当火车运行到缓和曲线a时,火车所需的向心力为:
得h=
K
,
,K=
最后解得:
y=
对于问题
(2)
在外轨超高不变时,速度提高时,则转弯半径增大。
在转弯处使外轨略高于内轨,火车驶过转弯处时,铁轨对火车的支持力
的方向不再是竖直的,而是斜向弯道内侧,它与重力g的合力指向圆心,成为使火车转弯的向心力.
设内外轨间的距离为
,内外轨的高度差为h,火车转弯的半径为R,火车转弯的规定速度为
.如图所示力的三角形得向心力为:
由牛顿第二定律得:
所以:
即:
当
=200m
=120km∕hg=9.8m/s
R=400m时
得到
=
=0.428m
在超高0.428米不变的情况下,即:
R=400米的情况下,
=
对于问题(3)
在外轨超高可以改变时,速度的变化使缓和曲线随着外轨的超高变化.
列车速度一定时在超高可以变化的情况下,会引起半径R的变化。
由缓和曲线方程
知,在R变化的情况下L可变可不变(L 如: 列车速度v=180Km/h,则其h=500m时,R=764.64m。 =100m时, = X 。 所以,在超高改变的情况下缓和曲线也会发生相应的变化。 实验6易拉罐下料问题仿真计算 实验内容: 易拉罐模型仿真 实验目的: 对易拉罐下料问题进行仿真计算,与理论结果进行比较,验证模型的正确性。 实验步骤: 1、对问题的变量进行合理定义,并指出合理存在区间; 2、选取合适步长,通过C语言或者MATLAB软件编程,遍历寻优; 3、比较结论,对模型的合理性进行评估,或者进一步优化和重构模型。 【问题提出】罐身高10cm,上盖、下底直径均5cm 上盖 下底 罐 身 每周工作40小时,每只易拉罐利润0.10元,原料余料损失0.001元/cm2(不能装配的罐身、盖、底也是余料) 如何安排每周生产? 【问题分析】计算各种模式下的余料损失 模式1上、下底直径d=5cm, 罐身高h=10cm,周长d=15.71cm 余料损失242-10d2/4-dh=222.6cm2 罐身个数 底、盖 个数 余料损失 (cm2) 冲压时间(秒) 模式1 1 10 222.6 1.5 模式2 2 4 183.3 2 模式3 0 16 261.8 1 模式4 4 5 169.5 3 目标: 易拉罐利润扣除余料损失后的净利润最大 (不能装配的罐身、上下底也是余料) 约束: 每周工作时间不超过40小时原料数量: 规格1(模式1~3)5万张 规格2(模式4)2万张罐身和底、盖的配套组装 【模型建立】 决策变量: xi~按照第i种模式生产的张数(i=1,2,3,4); y1~一周生产的易拉罐个数; y2~不配套的罐身个数; y3~不配套的底、盖个数。 y1~易拉罐个数;y2~不配套的罐身个数; y3~不配套的底、盖个数。 每只易拉罐利润0.10元余料损失0.001元/cm2 产品 余料 时间 X1 222.6 1.5 X2 183.3 2 X3 261.8 1 X4 169.52 3 罐身面积dh=157.1cm2 底盖面积d2/4=19.6cm2 目标MAX 0.1y1-0.001(222.6x1+183.3x2+261.8x3+169.5x4+157.1y2+19.6y3) 约束条件 1.5x1+2x2+x3+3x4<=144000(40小时)时间约束 x1+x2+x3<=50000x4<=20000原料约束 y1~易拉罐个数;y2~不配套的罐身个数; y3~不配套的底、盖个数。 Y2=x1+2x2+4x4-y1y3=10x1+4x2+16x3+5x4-2y1 变量非负x1,x2,x3,x4,y1,y2,y3>=0 【模型求解】LINDO发出警告信息: “数据之间的数量级差别太大,建议进行预处理,缩小数据之间的差别 将所有决策变量扩大10000倍(xi~万张,yi~万件) 即1.5x1+2x2+x3+3x4<=14.4x1+x2+x3<=5x4<=2 OBJECTIVEFUNCTIONVALUE 1)0.4298337 VARIABLEVALUEREDUCEDCOST Y116.0250000.000000 X10.0000000.000050 X24.0125000.000000 X30.3750000.000000 X42.0000000.000000 Y20.0000000.223331 Y30.0000000.036484 模式2生产40125张 模式3生产3750张 模式4生产20000张 共生产易拉罐160250个 (罐身和底、盖无剩余) 净利润为4298元 易拉罐下料 c=[0.2226;0.1833;0.2618;0.1695;-0.1;0.1571;0.0196]; >>a=[1.5213000;1110000;0001000];b=[144000;50000;20000]; >>Aeq=[1204-1-10;104165-20-1];beq=[0;0]; >>[x,fval]=linprog(c,a,b,Aeq,beq,zeros(7,1)) Optimizationterminated. x= 1.0e+005* 0.0000 0.4012 0.0375 0.2000 1.6025 0.0000 0.0000 fval= -4.2983e+003 因此最大利润为-fval=4298.3 实验8奶制品生产和销售仿真计算 实验内容: 奶制品的生产和销售问题 [问题的提出] 一奶制品加工厂用牛奶生产A1、A2两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A1,或者在设备乙上用8小时加工成4公斤A2。 根据市场需求,生产的A1、A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。 现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为480小时,并且设备甲每天至多能加工100公斤A1,设备乙的加工能力没有限制。 试为该厂制订一个生产计划,使每天获利最大? [问题的分析] 该问题的决策受到3个条件的限制: 原料(牛奶)供应、劳动时间、设备甲的加工能力。 设每天用x1桶牛奶生产A1,用x2桶牛奶生产A2,并设每天获利为z元。 则: x1桶牛奶可生产3x1公斤A1,获利24 3x1元, x2桶牛奶可生产4x2公斤A2,获利16 4x2元, 目标函数为: Maxz=72x1+64x2。 由题设可以得到如下约束条件: 原料供应: x1+x2≤50桶; 劳动时间: 12x1+8x2≤480小时; 设备能力: 3x1≤100; 非负约束: 即x1≥0,x2≥0. 综上可得该问题的数学模型为: Maxz=72x1+64x2; s.t. x1+x2≤50; 12x1+8x2≤480; 3x1≤100; x1≥0; x2≥0; [问题的求解] 1、图解法: 这个线性规划模型的决策变量为2维,用图解法既简单,又便于直观地把握线性规划的基本性质。 如下图所示: 可行域是5条直线上的线段所围成的5边形OABCD.容易算出,5个顶点的坐标为: O(0,0),A(0,50),B(20,30),C(100/3,10),D(100/3,0)。 目标函数中的z取不同数值时,在图中表示一组平行直线(虚线),可以看出,当这族平行线向右上方移动到过B点时,z=3360,达到最大值,所以B点的坐标(20,30)即为最优解: =20, =30。 2、图解法只能求解只有两个变量的LP模型,如果遇到多个变量时,就要考虑用其他方法,最常用的是用MAtlab或者Lingo软件进行求解,下面简单的用lingo软件来求解本题的答案。 在lingo中输入以下命令: model: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100; x1>=0; x2>=0; end 求解后输出结果如下: Globaloptimalsolutionfoundatiteration: 2 Objectivevalue: 3360.000 VariableValueReducedCost X120.000000.000000 X230.000000.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 作业