数学建模期末论文.docx
《数学建模期末论文.docx》由会员分享,可在线阅读,更多相关《数学建模期末论文.docx(18页珍藏版)》请在冰豆网上搜索。
![数学建模期末论文.docx](https://file1.bdocx.com/fileroot1/2023-1/26/dadf85b9-6c62-40a1-960b-57f161921d08/dadf85b9-6c62-40a1-960b-57f161921d081.gif)
数学建模期末论文
数学建模课程中,很多思维方法值得我们去学习,排队问题就是一个很经典的例子,很多数学问题都需要我们学会去转化,但是数学方法只是可以精确的表示某个事物本身就存在的一种规律,这种规律将延续下去,这种延续是不会发生变化的,但是生活中还与许多问题并不是一直遵守着某种规律一直不会发生变化,对于这种过于复杂的情况,我们可以对其进行试验来研究在某个范围内因变量和自变量之间的关系,这就是通过实验来获取真实的数据进行建模,但是在很多情况下,对研究对象的行为进行直接观测或重复试验可能是根本行不通的,例如港口的运输问题,学校中电梯高峰期时的电梯运转情况,这些情况出现时,我们就不能对其做系统的分析性说明和解释,也没有实在的数据可借鉴,这时,我们可以用某种方式间接的描述这种情况,间接的实验可以研究供选择的各种方案,以估计它们是怎样影响研究对象的行为,然后收集数据来确定哪种方案是最好的,这就是数学建模中很经典的建模方法——模拟。
出于对数学建模的热爱,我对港口运输问题进行了数学建模,运用的是蒙特卡罗模拟方法,由于数学知识实在有限,所以对这个问题研究同样不是透彻,只是在很肤浅的表面上做了一些自己的理解。
港口上的运输问题很复杂,在这里我研究的只是一个很小的方面的问题,我们可以这样出发,现在去考察一个带有船只的卸货设备的小港口,任意时间仅能为一艘船卸货,船只进入港口只是为了卸货,相邻的两艘船到达的时间间隔在15到145分钟之间变化,一艘船只卸货的时间由所卸货物类型决定,在45到90分钟变化,我们可以从每艘船只在港口的平均时间和最长时间考虑这个港口的利用率,既然有船只到达的时间间隔和卸货的时间,那么必然会有船只不能即来即卸货,或者说,必然有排队的情况,对于船主来说,等待时间是比较重要的,他们是不愿意在港口太浪费时间的,因此等待时间也是我们必须考虑的因素,如果一艘船只的等待时间是从到达到开始卸货的时间,我们研究每艘船只的平均等待时间和最长等待时间是很有价值的,而且,卸货设备空闲时间占总时间的百分比可以看到设备利用率的高低,因此,我们就有了很好的研究方向:
(1)每艘船只在港口的平均时间和最长时间;
(2)每艘船只的平均等待时间和最长等待时间;
(3)设备空闲时间占总时间的百分比;
从这几方面来考虑船只的间隔时间和卸货时间,以100艘船为例,每艘时间间隔从15分钟到145分钟变化,卸货时间从45分钟到90分钟变化,将100艘的卸货情况进行100次循环,得到一批数据,经过求解平均结果所得到的最终数据是:
一艘船在港口的最长时间
257.92min
一艘船的平均等待时间
42.89min
一艘船的最长等待时间
189.2min
卸货设备空闲时间的百分比
0.162077
上方表格中所列数据为船只间隔时间在15分钟到145分钟,卸货时间在45分钟到90分钟之间变化的数据,从数据的大小上可以看到最长等待时间还是比较长的,我们可以从间隔时间和卸货时间上进行设定,一般来说,船只之间的间隔时间是不容易改变的,因为船的速度是根据船的本身性质决定的,所以考虑卸货时间还是比较合理的,卸货时间是可控的,我们可以通过雇佣更多的劳动力或者是买到更好的设备可以加快卸货速度,达到更加节省时间的目的,因此从卸货时间上进行讨论,我们还是将间隔时间定在15分钟到145分钟之间,而将卸货时间缩短为35分钟到75分钟,这样可以通过数据分析观察到卸货时间的缩短对整体港口的利用率的变化是否敏感,现在列出数据进行比较:
船只的间隔时间在15分钟到145分钟之间变化
卸货时间
45—90分钟
35—75分钟
一艘船在港口的最长时间
257.92min
154.58min
一艘船的平均等待时间
42.89min
13.04min
一艘船的最长等待时间
189.2min
96.15min
卸货设备空闲时间的百分比
0.162077
0.3114
从平均效果分析,缩短卸货时间看来是很有作用的,仅仅缩短了15到20分钟就会带来如此大的变化,说明卸货时间对港口利用率是非常敏感的,我们可以通过以下图像更好地观察它们之间的差距,首先介绍一下所列图形,下面图形是对100艘船进、出港口的情况进行了100次循环后得到的数据的具体描述,这些图形能更好的反映缩短卸货时间对于港口利用率方面的影响,只给一个平均数据进行比较看不到明显的效果,我们分别从船只
(1)呆在港口的最长时间;
(2)一艘船在港口的最长等待时间;(3)每艘船的平均等待时间;(4)港口空闲时间的百分比这四个方面进行形象的比较:
以上三幅图中的上方曲线为卸货时间在45分钟到90分钟之间变化的
空闲时间占的总体时间的百分比这幅图形中,下面的是卸货时间在45分钟到90分钟之间变化的,可以看到缩短了卸货时间之后港口的空闲时间却增加了不少,从平均情况来看,是增加了一倍的关系。
等待时间的减少对于船主而言当然是件好事儿,对于港口的主人来说,港口的空闲时间多了,这样的话港口的利用率会受到些影响,从利润方面考虑港口的主人一方好像对此不会很满意。
重新考虑这个问题:
船只之间的间隔时间也会影响到这个港口的利用率,我们需要一种方案使得船主的等待时间最少,而且需要港口的空闲时间百分比很小,这样就可以有效的增加港口的利润,我们先必须先看看船只之间的间隔时间是否会对港口上的运输系统有影响,我们就以卸货时间为45到90分钟之间变化为准,缩短两艘船之间的间隔时间,这个间隔时间就以10分钟到120分钟为例,看看这种情况下港口工作的情况,我们从图像中只想分析出缩短船只之间的间隔到底会对港口的船只的哪个方面影响比较明显,会不会对港口的利用率做出有利的贡献。
根据模拟的数据初步做出了这种情况下的平均数据:
卸货时间在45到90分钟之间变化间隔时间不同情况的比较
间隔时间
15—145分钟
10—120分钟
一艘船在港口的最长时间
257.92min
610.59min
一艘船的平均等待时间
42.89min
263.01min
一艘船的最长等待时间
189.2min
544.13min
卸货设备空闲时间的百分比
0.162077
0.018932
从上面的平均情况来看,不难得知算短了船只之间的间隔时间,船只呆在港口的最长时间变得很长,其实这个也应该做成平均的效果,但是在这里只做最大值的比较也是可以反映真实情况的,平均等待时间以及最长的等待时间都变得很大,但是最精彩的是卸货设备的空闲时间占总时间的百分比却很明显的降低了,下面我们就来看看这四个变量在循环过程中真实的比较情况:
这两张折线图展示的是船只在相同的卸货时间段,但间隔时间不同时的比较图,第一张是船只呆在港口的最长时间的比较,第二张是船只的平均等待时间的比较,两张图上方的折线是间隔时间在10分钟到120分钟之间变化的,下方的是间隔时间在15到145之间变化的;
“船只的最长等待时间图”中上方的折线是间隔时间在10到120分钟之间,下方为间隔时间在15到145分钟之间,综合上面的三张图,我们很容易看出对于船只间隔时间的缩短,很明显的加长了船的等待时间;再观察最后一张图,上方的是船只间隔时间在15到145分钟的,下面的是间隔时间在10到120分钟的,我们发现卸货设备空闲时间占时间的百分比明显减小,将这种情况用到港口本身上可以这么说:
设备空闲时间少了,对于港口的主人是件好事儿,因为生意红火了,但是对船主这方面好像就没有那么好了,因为等待时间的加长,船主会极其不满意,有没有更好的方案可以使港口利润很丰厚,而且船主的等待时间也不会很长,即一种双方都很满意的方案;结合我们的第一种假设,在第一种分析中我们看到了卸货时间对港口运作系统的影响,就是将船的
(1)呆在港口的时间;
(2)船的平均等待时间;(3)船的最长等待时间这三个时间有效的缩短了;在第二种分析中我们看到了船只之间的间隔时间对港口运作系统的影响,是将船港口的卸货设备空闲时间占时间的百分比有效的缩短了,如果我们可以将这两个方面结合起来,不就是一种既可以使等待时间减少,又可以充分利用卸货设备的方案吗?
好的,下面的工作就是如何确定一个非常好的船只之间的间隔时间和卸货时间,可以使船主的等待时间很少,港口的空闲时间很少。
根据以上讨论和想法,我们可以重新考虑这个问题,假如还是以船只之间的间隔时间为15到145分钟之间,卸货时间在45到90分钟之间变化为准,用1500条船进行计算机模拟,将两船的间隔时间和卸货时间记录下来,做一个初步的统计,然后进行拟合,最终确定一个合适的间隔时间短和卸货时间段:
间隔时间
出现次数
卸货时间
出现次数
15-24min
12
25-34min
40
35-44min
55
45-49min
30
45-54min
61
50-54min
54
55-64min
110
55-59min
124
65-74min
198
60-64min
113
75-84min
248
65-69min
186
85-94min
210
70-74min
253
95-104min
160
75-79min
278
105-114min
95
80-84min
182
115-124min
49
85-90min
104
125-134min
30
135-145min
4
以上是从数据方面对这两个影响因素进行了分析,我们从图形中可以更好的看出这两个时间的出现的几率:
上面的两张图就是对表格中的数进行的拟合效果,可以从解析式中看到我们的拟合程度不是很好,并没有达到很好的拟合效果,但是在拟合过程中四次多项式应该是最好的:
看到上两张对间隔时间的拟合,分别为三次多项式拟合和五次多项式拟合,三次的拟合效果很差,五次的虽然拟合程度很好,但是最高项系数相对于低次项系数而言已经可以忽略不计了,而且五次项已经很高,如果用它进行拟合难免会在后面的曲线上发生振荡,这样就是一种很不好的效果了,因此四次多项式效果已经很好了;再来看卸货时间的拟合曲线:
现在分析上面的三个曲线:
从各次方的系数分析,四次显然要比三次的好很多,再看五次项的拟合曲线,我们注意到五次方的系数相对于低次方的系数也是可以忽略不计,同样也是出于考虑你和曲线的振荡情况,我们还是选择四次方的拟合曲线。
现在重新分析图像进行来确定较好的船只之间的间隔时间和卸货时间的变化范围,现在重新观察图像:
从图像中可以明显看到两个峰值,我们就取其峰值周围的区域,这样是两个时间尽量缩小到自己的最高峰状态下,应用这样的范围可以达到预期的效果:
(1)分析船只之间的间隔时间图像,可知在55分钟到104分钟之间变化是最好的;
(2)分析卸货时间图像,可知在65分钟到84分钟之间变化是最好的。
那么我们重新进行模拟,看看这种状态下的变量是否向我们所希望的方向变化:
间隔时间
卸货时间
15—145min
45—90min
15—145min
35—75min
10—120min
45—90min
55—104min
65—84min
一艘船在港口的最长时间
257.92min
154.58min
610.59min
145.68min
一艘船的平均等待时间
42.89min
13.04min
263.01min
15.71min
一艘船的最长等待时间
189.2min
96.15min
544.13min
70.85min
卸货设备空闲时间的百分比
0.162077
0.3114
0.018932
0.062209
通过从和分析确定下来的间隔时间为55分钟到104分钟,卸货时间为65分钟到84分钟,这样的两个时间是用1500艘船的模拟实验得到的数据,再进行拟合后得到的,下面看看不同间隔时间卸货时间下的港口船只的情况。
下面的三张图分别是上面表格中的三种情况:
(1)上面四种情况下的船只呆在港口的最长时间;
(2)上面四种情况下的船只的平均等待时间;
(3)上面四种情况下的船只的最长等待时间;
(4)上面四种情况下的卸货设备空闲时间占总时间的百分比;
四条曲线,从上到下分别为:
(1)间隔时间10到120分钟,卸货时间45到90分钟;
(2)间隔时间15到145分钟,卸货时间45到90分钟;
(3)间隔时间15到145分钟,卸货时间35到75分钟;
(4)间隔时间55到104分钟,卸货时间65到84分钟。
下面的这张图是平均等待时间图
平均等待时间的图中也有四条曲线,从上到下分别为:
(1)间隔时间10到120分钟,卸货时间45到90分钟;
(2)间隔时间15到145分钟,卸货时间45到90分钟;
(3)间隔时间15到145分钟,卸货时间35到75分钟;
(4)间隔时间55到104分钟,卸货时间65到84分钟。
这张图是船只最长等待时间的图,四条曲线从上到下的顺序为:
(1)间隔时间10到120分钟,卸货时间45到90分钟;
(2)间隔时间15到145分钟,卸货时间45到90分钟;
(3)间隔时间15到145分钟,卸货时间35到75分钟;
(4)间隔时间55到104分钟,卸货时间65到84分钟。
这张图是卸货设备空闲时间占总时间的百分比图,同样是四条曲线,它们从上到下的顺序为:
(5)间隔时间10到120分钟,卸货时间45到90分钟;
(1)间隔时间15到145分钟,卸货时间45到90分钟;
(2)间隔时间55到104分钟,卸货时间55到84分钟;
(3)间隔时间15到145分钟,卸货时间35到75分钟。
综合上述数据及图形,我们可以看出经过分析得到的船只到达时间间隔和卸货时间还是比较合理的,在港口的时间比较短,等待时间也相对来说比较短,这点对于船主来说是件好事儿,设备的空闲时间减少,增加了设备的利用率,有效增加利润,这点对于港口的主人来说是再好不过的了。
以上就是对港口问题的具体分析,其实港口问题还可以从船只的排队角度出发,我们还可以对多个港口通行做相应的模拟试验,让船主尽量减少等待时间且港口卸货设备的利用率达到最高,从而是港口的主人获得更大的利润。
从排队角度来解决问题,可以使问题的广度增加,选秘书问题就是一个很典型的例子,可以从排队角度解决,如果用我在文章中应用的方法来解决也是可以的,例如现在有100个人参加应聘,我以前20个人为准来看后面的应聘者的水平,应用计算机模拟试验,得到前20人的最高分和后80人的最高分,这是会出现两种情况:
(1)这个两个最高分相同;
(2)这两个最高分不同。
第一种情况出现是因为最高分得主在前20人中,那么记下这个位置;第二种情况出现是因为最高分不在这20人中,我从第21个人开始找比前20人的最高分还要高的分数的位置,此时不用管后面的80人的最高分是多少,只要一出现比前20人最高分还要高的分数,马上记下这个数的位置,如此循环下去,例如循环了500次,之后对这批数据进行初步统计,就像我在港口问题中做的统计一样,将它们放在坐标系中进行拟合,这样就知道以前20人为标准是不是很合适了,在这篇文章中,我就不做选秘书问题的具体分析了,我将随机数生成程序和求最大值的程序放在附录中,以便进行后续的讨论。
这仅仅是一个港口的小问题,甚至可以说是一个非常简单的问题,但是已经让我感觉到了数学的美,在老师的引导下慢慢接近一种抽象的美,在写论文的这几天中,数据的整理和分析是最值得享受的时刻,在Excel里输入自己的数据,是一种忐忑的感觉,因为在那么多的数据面前,我真的不知道将会发生什么,拟合的过程就更是有意思了,一次一次的尝试,一次一次的比较,在这个过程中,如果有一点点的进步都会让我兴奋,数学建模在生活中处处存在,如果真的能够掌握这个本领,生活一定会变得简单而精彩!
我会慢慢感受着数学建模所带来的思想,对它的学习终究就会将结束,但对它的应用永远不会结束,带着这份对它的热情,逐渐使我的生活更加充实,祝我成功!
附录1:
港口问题的模拟程序
DimnAsLong
Dima()AsLong
Dimb()AsLong
DimcAsLong
Dimfinish()AsLong
Dimarrive()AsLong
Dimwait()AsLong
Dimstart()AsLong'开始卸货的时间
Dimidle()AsLong
Dimharbor()AsLong
DimiAsLong
DimpAsLong
DimqAsLong
DimrAsSingle
DimsumAsLong
DimidletimeAsLong
DimhartimeAsLong
DimmaxwaitAsLong
DimmaxharAsLong
n=InputBox("请输入船的总数","船的总数")
ReDima(n)
ReDimb(n)
ReDimfinish(n)
ReDimarrive(n)
ReDimwait(n)AsLong
ReDimstart(n)AsLong
ReDimidle(n)AsLong
ReDimharbor(n)AsLong
Randomize
a
(1)=Int(Rnd*(104-55)+55)
b
(1)=Int(Rnd*(84-65)+65)
finish
(1)=a
(1)+b
(1)
arrive
(1)=a
(1)
wait
(1)=0
sum=0
idle
(1)=arrive
(1)
maxwait=0
maxhar=harbor
(1)
Fori=2Ton
a(i)=Int(Rnd*(104-55)+55)
Text1.Text=Text1.Text&Space
(2)&a(i)
b(i)=Int(Rnd*(84-65)+65)
Text2.Text=Text2.Text&Space
(2)&b(i)
Ifa(i)>=15Anda(i)<=24Theng1=g1+1
Ifa(i)>=25Anda(i)<=34Theng2=g2+1
Ifa(i)>=35Anda(i)<=44Theng3=g3+1
Ifa(i)>=45Anda(i)<=54Theng4=g4+1
Ifa(i)>=55Anda(i)<=64Theng5=g5+1
Ifa(i)>=65Anda(i)<=74Theng6=g6+1
Ifa(i)>=75Anda(i)<=84Theng7=g7+1
Ifa(i)>=85Anda(i)<=94Theng8=g8+1
Ifa(i)>=95Anda(i)<=104Theng9=g9+1
Ifa(i)>=105Anda(i)<=114Theng10=g10+1
Ifa(i)>=115Anda(i)<=124Theng11=g11+1
Ifa(i)>=125Anda(i)<=134Theng12=g12+1
Ifa(i)>=135Anda(i)<=145Theng13=g13+1
Ifb(i)>=45Andb(i)<=49Thenh1=h1+1
Ifb(i)>=50Andb(i)<=54Thenh2=h2+1
Ifb(i)>=55Andb(i)<=59Thenh3=h3+1
Ifb(i)>=60Andb(i)<=64Thenh4=h4+1
Ifb(i)>=65Andb(i)<=69Thenh5=h5+1
Ifb(i)>=70Andb(i)<=74Thenh6=h6+1
Ifb(i)>=75Andb(i)<=79Thenh7=h7+1
Ifb(i)>=80Andb(i)<=84Thenh8=h8+1
Ifb(i)>=85Andb(i)<=90Thenh9=h9+1
arrive(i)=arrive(i-1)+a(i)
c=finish(i-1)-arrive(i)
Ifc>=0Thenwait(i)=c:
idle(i)=0
Ifc<0Thenwait(i)=0:
idle(i)=-c
Ifwait(i)>maxwaitThenmaxwait=wait(i)
start(i)=arrive(i)+wait(i)
finish(i)=start(i)+b(i)
sum=sum+wait(i)
idletime=idletime+idle(i)
harbor(i)=wait(i)+b(i)
Ifharbor(i)>maxharThenmaxhar=harbor(i)
hartime=hartime+harbor(i)
Nexti
p=hartime/n
q=sum/n
r=idletime/finish(n)
Text3.Text=Text3.Text&"总空闲时间为:
"&idletime&Space(3)&"总模拟时间为"&finish(n)&Space(3)&"每艘船呆在港口的平均时间为:
"&p&Space(3)&"一艘船呆在港口的最长时间为:
"&maxhar&Space(3)&"每艘船卸货之前的平均等待时间为:
"&q&Space(3)&"一艘船的最长等待时间为:
"&maxwait&Space(3)&"卸货设备空闲时间占总模拟时间的百分比为:
"&r&Space
(2)&g1&Space
(2)&g2&Space
(2)&g3&Space
(2)&g4&Space
(2)&g5&Space
(2)&g6&Space
(2)&g7&Space
(2)&g8&Space
(2)&g9&Space
(2)&g10&Space
(2)&g11&Space
(2)&g12&Space
(2)&g13&"卸货时间"&h1&Space
(2)&h2&Space
(2)&h3&Space
(2)&h4&Space
(2)&h5&Space
(2)&h6&Space
(2)&h7&Space
(2)&h8&Space
(2)&h9
附录2:
秘书问题的模拟程序
Priva