




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 建模問題(渡口問題)摘要 本文建立了一個關于如何安排過河車輛位置問題的模型本文首先對各種車輛達到情況作統(tǒng)計,并對車輛之間得特性進行分析,得出以下安排車輛位置方案:摩托車少而且站位小,以插空的方式進入車隊列,這樣安排明顯減少了空間浪費。本文重概率論角度,引進均勻分部函數(shù)已經(jīng)隨機數(shù),對來的車輛先后進行描述,隨后通過若干組數(shù)據(jù)統(tǒng)計,最后得出一般規(guī)律并解決安排車輛問題。問題重述與分析:一個渡口的渡船營運者擁有一只甲板長 32 米,可以并排停放兩列車輛的渡船。他正在考慮怎樣在甲板上安排過河車輛的位置,才能安全地運過最多數(shù)量的車輛,并關心一次可以運多少輛車,其中有多少小汽車,多少卡車,多少摩托車,他觀察
2、了數(shù)日,發(fā)現(xiàn)每次情況不盡相同,但他得到下列數(shù)據(jù)和情況:(1)車輛隨機到達,形成一個等待上船的車列。(2)來到渡口的車輛中,轎車占 40 ,卡車占 55 ,摩托車占 5 (3)轎車車身長為 3.5 5.5 米,卡車車身長為 8 10 米。請考慮以下問題:(1)應該怎樣安排摩托車?(2)怎樣描述一輛車的車身長度?(3)到達的車要加入甲板上兩列車隊的哪一列中去?(4)如何考慮“安全”問題?請就以上問題建立數(shù)學模型,最終保證安全,并運用計算機進行模擬車輛到達、安排停車過程。 模型假設與建立:(1) 營運者需要在安全情況下運過最多數(shù)量的車,摩托車如果橫著放的話會節(jié)省很多空間,所以我們假定把摩托車橫著放置
3、在兩輛車的中間,這時就要考慮摩托車的寬度而不是長度了。我們假定摩托車的寬度是0.6 0.8米(為方便起見,后文中摩托車的“寬度”都說成“長度”)。 (2) 一共有三種車:轎車、卡車和摩托車。三種車的出現(xiàn)概率不同,每輛車的車身長度也不相同,我們想到可以用隨機數(shù)來確定每一輛車的類型和長度。 0 0.55 0.95 1.0 卡車 轎車 摩托車 圖1如圖1所示,用一個0到1之間的隨機數(shù)的分布來確定車的所屬類型。當random=00.55時,為卡車;當random=0.550.95時,為轎車;當random=0.951.0時,為摩托車。車身的長度問題也應用這個思路。題中給出轎車的長度為3.55.5,重新
4、定義一個01之間的隨機數(shù)random。3.5和5.5之間的差值是2,即:random*2,所以轎車的車身長度為:Length=(3.5 + random * 2)。同理得出:卡車的車身長度為:length=8 + random * 2,摩托車的車身長度為:length=0.6 + random * 2。(圖2) 3.5 2轎車 8 2卡車 0.6 0.2摩托車 圖2(3)由于甲板上一共可以停放兩列車,所以車上甲板的順序就不確定。通過我們的研究發(fā)現(xiàn),如果將這一問題考慮的過于復雜會導致算法過于復雜,問題復雜化。所以我們設定先來的車先都上同一個甲板,當?shù)谝粋€甲板排滿之后再排第二個甲板。(4)船在海上
5、行駛的時候會有搖晃,為了保證安全,車輛之間應該留有一定的空間,我們假定為0.4米。首輛車距離甲板頭我們定為0.5米。最后一輛車通常情況下一定會和船尾有一定距離,所以不需再空出距離了。具體解決問題:經(jīng)過討論決定使用java語言來編譯一個模擬環(huán)境,模擬出兩個甲板和每個甲板上停車的數(shù)量、類型。首先我們編寫了3個車的類:Car、Truck和Motorcycle。接著是假定每個相同車類組成的隊列類:CarDateBase、TruckDateBase、MotorcycleDateBase。最后是模擬類:Demo。(詳見附錄)最后用這幾個類組成一個完整的模擬程序。測試出來的結(jié)果如下。測試結(jié)果:(1)隨機出來
6、的車的長度:車的類型 長度1轎車4.2952轎車4.7233轎車4.5984轎車5.1915轎車3.7426轎車4.8527摩托車0.7448摩托車0.6559摩托車0.6810摩托車0.78511摩托車0.74212摩托車0.7513卡車8.23414卡車8.56415卡車8.4516卡車9.19517卡車8.00818卡車9.433 轎車數(shù)量卡車數(shù)量摩托車數(shù)量總長度測試1 1 3 0 31.5 測試2 0 3 0 31 測試3 0 3 2 31.4 測試4 0 3 1 31.2 測試5 6 0 0 31.1(3) 測試出來的每個板上的車的種類和數(shù)量:總結(jié): 以上只是一部分測試數(shù)據(jù),總體上來
7、看,我們完成了題目中的要求。由于是第一次參賽而且時間比較緊,我們的這個建模做得還不是很完美,有幾個細節(jié)的地方只能是假定一種情況,而不能將所有的情況都寫出來。 希望下次能將我們所想的全部都表達出來。 最重要的是我們通過這次活動學到很多,為我們的專業(yè)學習也帶來了很大的幫助,以后一定會繼續(xù)努力,爭取在建模和編程上有所成就!附錄模擬停車的java程序:(1)Car類:public class Car private double length;public Car(double d)this.length=d;public double getLength()return length;(2)Truc
8、k類:class Truck private double length;public Truck(double l)this.length=l;public double getLength()return length;(3)Motorcycle類:class Motorcycle private double length;public Motorcycle(double l)this.length=l;public double getLength()return length;(4)CarDataBase類:import java.util.*;class CarDataBase p
9、rivate Vector cars;public CarDataBase()cars=new Vector();public void addCar(Car initialcar)this.cars.add(initialcar);public Iterator getCarIterator() return cars.iterator();public Car getCar(float length) for (Iterator i = cars.iterator(); i.hasNext();) Car temp =(Car) i.next();if (temp.getLength()
10、= length)return temp;return null;public int getNumberOfCars() return this.cars.size();(5)TruckDataBase類:import java.util.*;class TruckDataBase private Vector trucks;public TruckDataBase()trucks=new Vector();public void addTruck(Truck initialcar)this.trucks.add(initialcar);public Iterator getTruckIte
11、rator() return trucks.iterator();public Truck getTruck(float length) for (Iterator i = trucks.iterator(); i.hasNext();) Truck temp =(Truck) i.next();if (temp.getLength() = length)return temp;return null;public int getNumberOfTrucks() return this.trucks.size();(6)MotorcycleDataBase類:import java.util.
12、*;class MotorcycleDataBase private Vector motorcycles;public MotorcycleDataBase()motorcycles=new Vector();public void addMotorcycle(Motorcycle initialmotorcycle)this.motorcycles.add(initialmotorcycle);public Iterator getMotorcycleIterator() return motorcycles.iterator();public Motorcycle getMotorcyc
13、le(float length) for (Iterator i = motorcycles.iterator(); i.hasNext();) Motorcycle temp =(Motorcycle)i.next();if (temp.getLength() = length)return temp;return null;public int getNumberOfMotorcycle() return this.motorcycles.size();(7)Dome類: import java.util.*;public class Dome private CarDataBase ca
14、rdatabase;private TruckDataBase truckdatabase;private MotorcycleDataBase motorcycledatabase;private int NUMBEROFCARS=0;private int NUMBEROFTRUCKS=0;private int NUMBEROFMOTORCYCLES=0;private double TOTLELENGTH=0;private static int RAN; public Dome()cardatabase=loadCar();truckdatabase=loadTruck();moto
15、rcycledatabase=loadMotorcycle();public static void main(String args) Dome a=new Dome();Dome b=new Dome();for(int i=0;i<10;i+) RAN=(int)(Math.random()*1000);a.run();System.out.println("NUMBEROFCARS are"+a.NUMBEROFCARS);System.out.println("NUMBEROFTRUCKS are"+a.NUMBEROFTRUCKS);S
16、ystem.out.println("NUMBEROFMOTORCYCLES are"+a.NUMBEROFMOTORCYCLES);System.out.println("TOTLELENGTH is"+(double)(int)(a.TOTLELENGTH*100)/100);for(int j=0;j<10;j+)RAN=(int)(Math.random()*1000);b.run();System.out.println("NUMBEROFCARS are"+b.NUMBEROFCARS);System.out.pri
17、ntln("NUMBEROFTRUCKS are"+b.NUMBEROFTRUCKS);System.out.println("NUMBEROFMOTORCYCLES are"+b.NUMBEROFMOTORCYCLES);System.out.println("TOTLELENGTH is"+(double)(int)(a.TOTLELENGTH*100)/100);private CarDataBase loadCar()/System.out.println("loadCar!");CarDataBase c
18、ardatabase=new CarDataBase();for(int i=0;i<10;i+)double ran=(double)(Math.random()*2);cardatabase.addCar(new Car(3.5+ran);return cardatabase;private TruckDataBase loadTruck()TruckDataBase truckdatabase=new TruckDataBase();for(int i=0;i<4;i+)double ran=(double)(Math.random()*2);truckdatabase.ad
19、dTruck(new Truck(8.0+ran);return truckdatabase;private MotorcycleDataBase loadMotorcycle()MotorcycleDataBase motorcycledatabase=new MotorcycleDataBase();for(int i=0;i<100;i+)double ran=(double)(Math.random()*0.2);motorcycledatabase.addMotorcycle(new Motorcycle(0.6+ran);return motorcycledatabase;p
20、rivate boolean Judge()if(TOTLELENGTH<=32)return true;elsereturn false;public void run()if(RAN>=0&&RAN<450)for(Iterator i=cardatabase.getCarIterator();i.hasNext();)Car cars=(Car)i.next();if(TOTLELENGTH=0)TOTLELENGTH+=0.5;elseif(TOTLELENGTH<=32-0.4)TOTLELENGTH+=0.4;TOTLELENGTH+=car
21、s.getLength();if(Judge()System.out.println("This car'length is "+(double)(int)(cars.getLength()*1000)/1000);NUMBEROFCARS+; else TOTLELENGTH-=cars.getLength(); else if(RAN>=450&&RAN<=950) for(Iterator i=truckdatabase.getTruckIterator();i.hasNext();) Truck trucks=(Truck)i.next(); if(TOTLELENGTH=0)TOTLELENGTH+=0.5;elseif(TOTLEL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古建彩繪采購合同范本
- 公司出租地合同范本
- 合伙人結(jié)算合同范本
- 個人住房借款合同范本
- 臺州網(wǎng)絡推廣合同范本
- 校園超市承包合同范本
- 廚藝加盟合同范本
- 單位資產(chǎn)轉(zhuǎn)讓合同范本
- 發(fā)電機維修合同范本
- 合同范本模板學校
- 15J403-1-樓梯欄桿欄板(一)
- 預防接種人員崗位培訓習題(Ⅰ類培訓練習題庫共385題)
- 現(xiàn)場經(jīng)濟簽證單范本
- 固定義齒工藝流程圖
- 《網(wǎng)店運營與管理》課件(完整版)
- (高職)員工培訓與開發(fā)(第四版)完整版教學課件全套電子教案
- 帶電子手表去學校的檢討
- 相親相愛 簡譜
- 第四章工具鋼
- 2022年春新冀人版科學五年級下冊全冊課件
- 服裝購銷合同最新版
評論
0/150
提交評論