数学建模-渡口问题_第1页
数学建模-渡口问题_第2页
数学建模-渡口问题_第3页
数学建模-渡口问题_第4页
数学建模-渡口问题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学建模——渡口问题数学建模——渡口问题数学建模——渡口问题资料仅供参考文件编号:2022年4月数学建模——渡口问题版本号:A修改号:1页次:1.0审核:批准:发布日期:建模问题(渡口问题)摘要本文建立了一个关于如何安排过河车辆位置问题的模型本文首先对各种车辆达到情况作统计,并对车辆之间得特性进行分析,得出以下安排车辆位置方案:摩托车少而且站位小,以插空的方式进入车队列,这样安排明显减少了空间浪费。本文重概率论角度,引进均匀分部函数已经随机数,对来的车辆先后进行描述,随后通过若干组数据统计,最后得出一般规律并解决安排车辆问题。问题重述与分析:一个渡口的渡船营运者拥有一只甲板长32米,可以并排停放两列车辆的渡船。他正在考虑怎样在甲板上安排过河车辆的位置,才能安全地运过最多数量的车辆,并关心一次可以运多少辆车,其中有多少小汽车,多少卡车,多少摩托车,他观察了数日,发现每次情况不尽相同,但他得到下列数据和情况:(1)车辆随机到达,形成一个等待上船的车列。(2)来到渡口的车辆中,轿车占40%,卡车占55%,摩托车占5%(3)轿车车身长为~米,卡车车身长为8~10米。请考虑以下问题:(1)应该怎样安排摩托车?

(2)怎样描述一辆车的车身长度?

(3)到达的车要加入甲板上两列车队的哪一列中去?

(4)如何考虑“安全”问题?

请就以上问题建立数学模型,最终保证安全,并运用计算机进行模拟车辆到达、安排停车过程。模型假设与建立:营运者需要在安全情况下运过最多数量的车,摩托车如果横着放的话会节省很多空间,所以我们假定把摩托车横着放置在两辆车的中间,这时就要考虑摩托车的宽度而不是长度了。我们假定摩托车的宽度是~米(为方便起见,后文中摩托车的“宽度”都说成“长度”)。一共有三种车:轿车、卡车和摩托车。三种车的出现概率不同,每辆车的车身长度也不相同,我们想到可以用随机数来确定每一辆车的类型和长度。0卡车轿车摩托车图1如图1所示,用一个0到1之间的随机数的分布来确定车的所属类型。当random=0~时,为卡车;当random=~时,为轿车;当random=~时,为摩托车。车身的长度问题也应用这个思路。题中给出轿车的长度为~,重新定义一个0~1之间的随机数random。和之间的差值是2,即:random*2,所以轿车的车身长度为:Length=(+random*2)。同理得出:卡车的车身长度为:length=8+random*2,摩托车的车身长度为:length=+random*2。(图2)2轿车82卡车摩托车图2(3)由于甲板上一共可以停放两列车,所以车上甲板的顺序就不确定。通过我们的研究发现,如果将这一问题考虑的过于复杂会导致算法过于复杂,问题复杂化。所以我们设定先来的车先都上同一个甲板,当第一个甲板排满之后再排第二个甲板。(4)船在海上行驶的时候会有摇晃,为了保证安全,车辆之间应该留有一定的空间,我们假定为米。首辆车距离甲板头我们定为米。最后一辆车通常情况下一定会和船尾有一定距离,所以不需再空出距离了。具体解决问题:经过讨论决定使用java语言来编译一个模拟环境,模拟出两个甲板和每个甲板上停车的数量、类型。首先我们编写了3个车的类:Car、Truck和Motorcycle。接着是假定每个相同车类组成的队列类:CarDateBase、TruckDateBase、MotorcycleDateBase。最后是模拟类:Demo。(详见附录)最后用这几个类组成一个完整的模拟程序。测试出来的结果如下。测试结果:(1)随机出来的车的长度:车的类型长度1轿车2轿车3轿车4轿车5轿车6轿车7摩托车8摩托车9摩托车10摩托车11摩托车12摩托车13卡车14卡车15卡车16卡车17卡车18卡车………………轿车数量卡车数量摩托车数量总长度测试1130测试203031测试3032测试4031测试5600…………测试出来的每个板上的车的种类和数量:总结:以上只是一部分测试数据,总体上来看,我们完成了题目中的要求。由于是第一次参赛而且时间比较紧,我们的这个建模做得还不是很完美,有几个细节的地方只能是假定一种情况,而不能将所有的情况都写出来。希望下次能将我们所想的全部都表达出来。最重要的是我们通过这次活动学到很多,为我们的专业学习也带来了很大的帮助,以后一定会继续努力,争取在建模和编程上有所成就!附录模拟停车的java程序:(1)Car类:publicclassCar{ privatedoublelength; publicCar(doubled) { =d; } publicdoublegetLength() { returnlength; }}(2)Truck类:classTruck{ privatedoublelength; publicTruck(doublel) { =l; } publicdoublegetLength() { returnlength; }}(3)Motorcycle类:classMotorcycle{ privatedoublelength; publicMotorcycle(doublel) { =l; } publicdoublegetLength() { returnlength; }}(4)CarDataBase类:import.*;classCarDataBase{ privateVectorcars; publicCarDataBase() { cars=newVector(); } publicvoidaddCar(Carinitialcar) { } publicIteratorgetCarIterator(){ return(); } publicCargetCar(floatlength){ for(Iteratori=();();){ Cartemp=(Car)(); if()==length) returntemp; } returnnull; } publicintgetNumberOfCars(){ return }}(5)TruckDataBase类:import.*;classTruckDataBase{ privateVectortrucks; publicTruckDataBase() { trucks=newVector(); } publicvoidaddTruck(Truckinitialcar) { } publicIteratorgetTruckIterator(){ return(); } publicTruckgetTruck(floatlength){ for(Iteratori=();();){ Trucktemp=(Truck)(); if()==length) returntemp; } returnnull; } publicintgetNumberOfTrucks(){ return }}(6)MotorcycleDataBase类:import.*;classMotorcycleDataBase{ privateVectormotorcycles; publicMotorcycleDataBase() { motorcycles=newVector(); } publicvoidaddMotorcycle(Motorcycleinitialmotorcycle) { } publicIteratorgetMotorcycleIterator(){ return(); } publicMotorcyclegetMotorcycle(floatlength){ for(Iteratori=();();){ Motorcycletemp=(Motorcycle)(); if()==length) returntemp; } returnnull; } publicintgetNumberOfMotorcycle(){ return }}(7)Dome类:import.*;publicclassDome{ privateCarDataBasecardatabase; privateTruckDataBasetruckdatabase; privateMotorcycleDataBasemotorcycledatabase; privateintNUMBEROFCARS=0; privateintNUMBEROFTRUCKS=0; privateintNUMBEROFMOTORCYCLES=0; privatedoubleTOTLELENGTH=0; privatestaticintRAN;publicDome() { cardatabase=loadCar(); truckdatabase=loadTruck(); motorcycledatabase=loadMotorcycle(); } publicstaticvoidmain(String[]args) { Domea=newDome(); Domeb=newDome(); for(inti=0;i<10;i++){ RAN=(int)()*1000); (); } "NUMBEROFCARSare"+; "NUMBEROFTRUCKSare"+; "NUMBEROFMOTORCYCLESare"+; "TOTLELENGTHis"+(double)(((int)*100))/100)); for(intj=0;j<10;j++){ RAN=(int)()*1000); (); } "NUMBEROFCARSare"+; "NUMBEROFTRUCKSare"+; "NUMBEROFMOTORCYCLESare"+; "TOTLELENGTHis"+(double)(((int)*100))/100)); } privateCarDataBaseloadCar() {// "loadCar!"); CarDataBasecardatabase=newCarDataBase(); for(inti=0;i<10;i++){ doubleran=(double)()*2); (newCar+ran)); } returncardatabase; } privateTruckDataBaseloadTruck() { TruckDataBasetruckdatabase=newTruckDataBase(); for(inti=0;i<4;i++){ doubleran=(double)()*2); (newTruck+ran)); } returntruckdatabase; } privateMotorcycleDataBaseloadMotorcycle() { MotorcycleDataBasemotorcycledatabase=newMotorcycleDataBase(); for(inti=0;i<100;i++){ doubleran=(double)()*; (newMotorcycle+ran)); } returnmotorcycledatabase; } privatebooleanJudge(){ if(TOTLELENGTH<=32){ returntrue; }else{ returnfalse; } } publicvoidrun(){ if(RAN>=0&&RAN<450){ for(Iteratori=();();){ Carcars=(Car)(); if(TOTLELENGTH==0){ TOTLELENGTH+=; }else if(TOTLELENGTH<={ TOTLELENGTH+=; } TOTLELENGTH+=(); if(Judge()){ "Thiscar'lengthis"+(double)((int)()*1000))/1000); NUMBEROFCARS++; }else{ TOTLELENGTH-=(); } } }else if(RAN>=450&&RAN<=950){ for(Iteratori=();();){ Trucktrucks=(Truck)(); if(TOTLELENGTH==0){ TOTLELENGTH+=; }el

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论