垃圾回收物流仿真系統設計_第1頁
垃圾回收物流仿真系統設計_第2頁
垃圾回收物流仿真系統設計_第3頁
免費預覽已結束,剩余9頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 垃圾回收物流仿真系統設計11.1 垃圾回收物流系統介紹城市某一區域,共有7個居民小區,每個小區有一個固定垃圾投放處, 兩個垃圾箱分別 投放完全廢棄垃圾和可回收利用垃圾; 每天有專門公司(垃圾處理公司)派運輸車收集垃圾, 將垃圾從居民區運送之中轉站,再由中轉站運至目的地一垃圾處理中心。仿真程序研究如何設計物流系統,能夠使收集系統在滿足時間約束、載重約束的條件下, 使垃圾處理公司的物流總成本最低。系統配置的項目主要有車輛載重量、隨車工作人員數、 客戶滿意度。本節容可以參看隨書光盤 models/垃圾回收仿真文件夾下的dumpreversesim.mod,模型運行結果參看此目錄下的rever

2、se.xls 文件。11.2 數據信息仿真系統涉及的數據信息如下:地理及需求信息各個收集點所有的人口數、距離垃圾轉運站、公司停車場的距離信息如表11.1所示。各收集點之間以及停車場和轉運站之間的距離信息如表11.2所示。表11.1收集點信息收集點名稱收集點居民數 people(i)(千人)距離停車場距離dista nce(ip)( km)距離垃圾轉運站距離dista nce(it)(km)Dump0011.5616Dump0021.451627Dump0031.652624Dump0041.853836Dump0051.42826Dump0062.051614Dump0071.6108表11.

3、2點間距離路徑起點路徑終點距離(km)符號Tran stati onCorp park11Dista nce(pt)Dump001Dump00210Dista nce(12)Dump002Dump00310Dista nce(23)Dump003Dump00412Dista nce(34)Dump004Dump00510Dista nce(45)Dump005Dump00612Dista nce(56)Dump006Dump0076Dista nce(67)1122與收集車輛有關的信息固定成本price(i):收集車輛的購買費用;可變成本cost(i):車輛的行駛費用、維護費用和雇員工資;行駛

4、速度:分為空車行駛速度unloadspeed(i)和載重行駛速度loadspeed(i);收集時間loadtime(i):在垃圾收集點收集垃圾所需的時間卸載時間unloadtime(i):在轉運站卸載垃圾所需的時間具體信息如表11.3所示:表11.3收集車輛信息車輛載重固定成本可變成本載重速度空載速度人員人員工資收集時間卸載時間名稱t萬元元/kmkm/hkm/h人元/天.人minmin車1X2+ X1X16072R603+y*6/ P 13+ X*6/ P車2X22+1.2* X 2X26072巳602+y*8/ P 22+ X2*6/ P說明:車1用來收集不可回收垃圾;車2用來收集可回收利用

5、垃圾;X,X2為現有兩種車的噸位數,X1取值:3,4或5噸;X2取值:1.5 ; 2; 2.5 ;y為每次收集的垃圾量,單位-噸;R, P2為兩種車可配備的隨車工作人員數(可以是 1, 2,3)。與垃圾相關的信息人均垃圾量:平均每人每天產生的垃圾數量;垃圾比例:各種垃圾成分所占比例。假設人均垃圾量服從均值為1.2kg/天的埃爾郎分布,垃圾成分分為兩類:一類為可重復利用資源,一類為無用需銷毀垃圾,兩者比例為1: 2。11.3 收集垃圾的成本函數現在假設仿真一年 365天的垃圾回收工作,決定兩種型號的車配置何種噸位以及隨車工 作人員數,垃圾回收物流成本(Total Logistic Cost ,T

6、LC)最低。TLC= 1成本+車2成本車I所耗成本=1的固定成本+1的可變成本+1的服務時間成本+1的人員成本 即:TLC=CC1+CC2CCi=Xi+Vi+Si+Pi*365*60Si=(ru ntimei_240)*mSi為垃圾回收的服務時間成本,m為收集時間對服務時間成本的懲罰因子。垃圾回收公司在十二點之前收集完畢,社會效應好,給予獎勵;在十二點后完成,社會滿意度低,影 響公司信譽,成本增加。run timei 為垃圾車將垃圾全部回收完成的最終時間,也即垃圾車每天的運行時間;11.4 系統邏輯結構此垃圾回收物流系統的邏輯結構分為五個子模塊:垃圾產生模塊、叫車模塊、收集模 塊、收工模塊、數

7、據處理模塊。垃圾產生模塊 每天收集工作開始時,系統根據小區的人數、人均垃圾量、兩種垃圾 量的比例,通過愛爾朗隨機分布函數, 隨機產生各個小區的兩種垃圾數量, 分別存放入 各個小區的兩個垃圾箱。叫車模塊在垃圾存放入各個小區的兩個垃圾箱過程中,根據每種垃圾的總量以及每種垃圾車的載重量,生成叫車的次數。收集模塊 叫車次數確定之后,車輛根據需求,沿著最短路徑依次收集垃圾。在收集 過程中,在一個垃圾點,如果垃圾車收集滿了或當天的收集工作全部完成,車輛駛向垃圾中轉站,進行卸載操作;如果垃圾車未滿,則駛向下一最近垃圾收集點繼續收集。收工模塊當天的收集工作全部完成之后,車輛駛向公司停車場,當天收集工作完畢。數

8、據處理模塊每天車輛收工時,11.5 仿真模型的建立根據系統邏輯結構和數據信息,我們建立具有7個垃圾收集點、一個垃圾轉運站的WITNESS圾回收仿真模型。具體步驟如下:11.5.1 元素定義Difine建立仿真模型時,首先定義仿真模型中所需的元素,并設計它們的可視效果。我們將設計的元素分為兩類一一實體元素和邏輯元素,名稱如下。表11.4實體元素列表:兀素名稱類型說明dumpa(1)dumpa(7)Part七個小區不可回收的垃圾dumpb(1)dumpb(7)Part七個小區可回收利用的垃圾dumpcart(1)Vehicle專門回收dumpa的垃圾回收車dumpcart(2)Vehicle專門回

9、收dumpb的垃圾回收車buffera(1)buffera(7)Buffer各小區不可回收垃圾的垃圾箱bufferb(1)bufferb(7)buffer各小區可回收利用垃圾的垃圾箱CorpparkTrack公司停車場,Tran sfer stati onBuffer垃圾轉運站road(i , j)Track由節點實體i向節點實體j方向的道路road(j , i)track由節點實體j向節點實體i方向的道路Geta(1)geta(7)Track車輛將通過它們來進行垃圾a的回收Getb(1)getb(7)Track車輛將通過它們來進行垃圾b的回收表11.5邏輯元素一變量列表:變量名稱類型說明pe

10、ople(7)in teger各小區的居民數量capacitycart(2)in teger兩種垃圾車每次可收集的垃圾數量,即載重量n dema nd(2)in teger每天對兩種垃圾車的需求次數labor(2)in teger兩種垃圾車的隨車工作人員數SalaryReal工作人員每天工資price(2)Real兩種垃圾車的購買價格costrate(2)Real兩種垃圾車的運行費率uni oadspeed(2)Real兩種垃圾車的空載速度loadspeed(2)Real兩種垃圾車的實載速度load num (2)in teger兩車輛到達垃圾收集點可收集的垃圾數量nfree(2)in teg

11、er兩車輛剩余載重能力Nparts7)in teger每一垃圾收集點在特定仿真時點剩余垃圾量loadtime(2)Real兩車輛收集垃圾所需的時間uni oadtime(2)Real兩車輛卸載垃圾所需的時間run time(2,3)Real存儲車輛的時間參數,run time(k,1)存儲仿真鐘的當前數值,runtime(k,2)存儲車輛k在當天的運行時間,runtime(k,3) 存儲車輛k在仿真過程中總的運行時間TimeweighReal時間懲罰因子timecost(2)Real時間懲罰成本sumcostReal目標函數objfun中用于統計系統運行的總費用定義一個實數型邏輯函數objfu

12、n(),用于計算和統計系統運行一年365天所花費的總費用。11.5.2 元素顯示 display各個元素的顯示設置如圖ii.i所示。小區4dfl小區2mp LiHnsrtf s:dlccrppsru垃圾回收物流仿真系統可視化界面元素詳細設計在該子模塊中定義隨著仿真鐘的推進,裝載垃圾的邏輯條件。該系統的工作班次制度采用每天工作8小時,每一仿真時間等價于現實時間一分鐘。為了實現系統的仿真運行,需要對系統中的元素進行詳細設計。系統初始化程序設計(in itialize actio ns),通過選擇系統菜單model/i ni tializeactions菜單項,得到初始化程序編輯框,輸入如下程序:p

13、ers onum (1) = 1.5pers onum (2) = 1.45perso num =1.65pers onum (4) = 1.85pers onum (5) = 1.4perso num =2.05pers onum (7) = 1.6!給各小區的人數賦初值,單位:千人FOR num = 1 TO 7mean dump (num) = 1.2 * pers onum (num) * 1000NEXT!分別生成每天七個小區產生垃圾的均值 set capacity of dumpcart1 to capacitycart(1) set capacity of dumpcart2 t

14、o capacitycart(2)決定。!分別設定兩個車輛的載重量,由變量數組capacitycart(1) 和capacitycart(2)un loadtime = 0!卸載時間FOR num = 1 TO 7moddema nda (num) = 0moddema ndb (num) = 0!決定叫車次數的變量NEXTFOR num = 1 TO 4roadchoicea (num) = 0roadchoiceb (num) = 0!最短路徑控制變量NEXTFOR num = 1 TO 3run timea (num) = 0車輛運行時間控制變量每天的分鐘數時間懲罰因子兩輛車隨車工作人員

15、數run timeb (num) = 0 NEXTin tervaltime = 1440 timeweigh = 5labor needa = 1labor needb = 1!對變量賦初始值各個小區垃圾的詳細設計表11.6垃圾元素詳細設計列表NameFirst arrivalInter arrivalLot sizeToDumpa10.00011440ERLANG (meandump (1) / 3,3,1)PUSH to buffera1Dumpa20.00021440ERLANG (meandump (2) / 3,3,2)PUSH to buffera2Dumpa30.0003144

16、0ERLANG (meandump (3) / 3,3,3)PUSH to buffera3Dumpa40.00041440ERLANG (meandump (4) / 3,3,4)PUSH to buffera4Dumpa50.00051440ERLANG (meandump (5) / 3,3,5)PUSH to buffera5Dumpa60.00061440ERLANG (meandump (6) / 3,3,6)PUSH to buffera6Dumpa70.00071440ERLANG (meandump (7) / 3,3,7)PUSH to buffera7Dumpb10.00

17、011440ERLANG (meandump (1) / 3,3,8)PUSH to bufferb1Dumpb20.00021440ERLANG (meandump (2) / 3,3,9)PUSH to bufferb2Dumpb30.00031440ERLANG (meandump (3) / 3,3,10)PUSH to bufferb3Dumpb40.00041440ERLANG (meandump (4) / 3,3,11)PUSH to bufferb4Dumpb50.00051440ERLANG (meandump (5) / 3,3,12)PUSH to bufferb5Du

18、mpb60.00061440ERLANG (meandump (6) / 3,3,13)PUSH to bufferb6Dumpb70.00071440ERLANG (meandump (7) / 3,3,14)PUSH to bufferb7垃圾名稱*一天的分鐘數Meandump為通過各小區人數計算出來的 變量數組決定垃圾的存放*決定每天各個小區的垃圾依次產生,以便于生產叫車次數。 運輸車輛詳細設計表11.7運輸車輛詳細設計列表NameUni oad speedLoad speedtoDumpcart11. 21. 0PUSH to corppark(1)Dumpcart21. 21. 0P

19、USH to corppark(2)車輛名稱空載速度(km/min )實載速度生成時,放入公司停車場的車位垃圾箱詳細設計設計垃圾放入垃圾箱時的活動,也即每個垃圾箱的"actio ns on in put”中的程序。bufferal.act ions on in put:IF MOD (NPARTS (buffera1),cartc apacity(l) = 1CALL dumpcart1, get1, road7_t, 1VSEARCH road0_1, corppark, road1_2, road1_0, road2_3, road3_4, road4_5,road5_6, ro

20、ad6_5, road6_7, road7_t, roadt_7, road1_0, road3_6, road6_3, road7_0, road0_7, road2_1, geta1, geta2, geta3, geta4, geta5, geta6, geta7, getb1, getb2, getb3, getb4, getb5,getb6,getb7ENDIFmoddema nda (1) = MOD (NPARTS (buffera1),cartc apacity(1)程序解釋:第一行:判斷當buffera1中的垃圾的數量同車輛1的載重量取余為1時,發生ifendif之間的活動;

21、第二行:叫車 dumpcart1,該車將在路徑 get1上裝載垃圾,在路徑 road7_t上卸載垃 圾,優先級為1;第三行至第五行:在所有路徑上搜索車輛dumpcart1 ;第七行:匯總非整車垃圾的數量,帶到buffera2中繼續計算并叫車。Buffera2buffera7 的 actions on in put:IF MOD (moddemanda (i-1) + NPARTS (buffera(i),cartcapacity1) = 1CALL dumpcart1,geta(i),road7_t,0VSEARCH road0_1, corppark, road1_2, road1_0, r

22、oad2_3, road3_4, road4_5,road5_6, road6_5, road6_7, road7_t, roadt_7, road1_0, road3_6, road6_3, road7_0, road0_7, road2_1, geta1, geta2, geta3, geta4, geta5, geta6, geta7, getb1, getb2, getb3, getb4, getb5,getb6,getb7ENDIFmoddemanda (i) = MOD (moddemanda (I-1) + NPARTS (buffera(i),cartcapacity1)i 表

23、示本垃圾箱的序號,為2,3,4, 5,6,7;第一行: 將其上一個垃圾箱的非整車垃圾數量同本垃圾箱中的垃圾數相加, 然后與車輛 一的載重量取余,當結果為 1 時,叫車。垃圾箱 bufferb1bufferb7 的“ actions on input ”同垃圾箱 buffera1buffera7 的 “actions on input ”處理邏輯完全一樣,只需要將 buffera 改為 bufferb 、 dumpcart1 改 為 dumpcart2、moddemanda改為 moddemandb geta 改為 getb 即可。兩點間運輸路徑上的程序設計下面以 road2_3 為例,加以說明

24、其邏輯流程。其它路徑類似,可以在路徑的generaldetail 中的 output to 中加以查看。IF VEHICLE (road2_3,1) = dumpcart1IF NPARTS (buffera3) > 0PUSH to geta3(1)ELSEPUSH to road3_4ENDIFELSEIF VEHICLE (road2_3,1) = dumpcart2IF NPARTS (bufferb3) > 0PUSH to getb3ELSEPUSH to road3_4ENDIFELSEWaitENDIF第一行到第六行: 決定車輛dumpcartl到達路徑road2_

25、3末端時,它的運行路徑。如果此 時垃圾箱 buffera3 中有垃圾, 則車輛 dumpcart1 駛向路徑 geta3 ,進行垃圾收集 (第二行到第 四行);如果垃圾箱 buffera3 中沒有垃圾,則車輛 dumpcart1 駛向路徑 road3_4 。第七行到第十二行: 決定車輛 dumpcart2 到達路徑 road2_3 末端時, 它的運行路徑。 如 果此時垃圾箱 bufferb3 中有垃圾,則車輛 dumpcart2 駛向路徑 getb3 ,進行垃圾收集(第 八行到第十行);如果垃圾箱 bufferb3 中沒有垃圾,則車輛 dumpcart2 駛向路徑 road3_4 。如果是其他

26、情況,等待(第十三行到第十四行)。路徑 get 系列的設置在 Get 系列( Geta1geta7 , Getb1getb7 )路徑中設置車輛的裝載( loading )程序和 條件,它們的設定以及程序的處理流程基本相同,下面舉geta2 加以說明。其中裝載數量(load num)和裝載時間 (loadtime) 在 gen eral detail 頁的 actions on front 中設定;裝 載程序和條件在 loading detail 頁中進行設定。General detail 頁的 actions on front 程序如下:IF NFREE (dumpcart1) >= N

27、PARTS (buffera2)loadnum = NPARTS (buffera2)ELSEloadnum = NFREE (dumpcart1)ENDIFloadtimea (1) = 3 + load num / 1000 * loadi ndexa / laborneeda dayloadtimea = dayloadtimea + loadtimea (1)程序解釋:第一行至第五行:如果車輛dumpcart1的空余容量 NFREE(dumpcart1)不小于垃圾箱buffera2中的垃圾數量,則收集數量 load num為垃圾箱buffera2中的所有垃圾;否則,收 集數量load

28、num為車輛的空余容量。第六行:計算本次收集所需的時間loadtimea(1),它是本次垃圾收集量、隨車工作人員 數以及收集時間系數的函數。圖 11.2路徑geta2中的loading 詳細設計圖路徑geta2中的loading detail頁框的設定如圖 11.2所示。在選中loadi ng en abled(能夠裝載)前的復選框后,將會出現該界面上的其他容。Transfer Mod(裝載模式)有三種:if、call > always。我們選擇條件模式 if,在條件condition: 框中輸入條件表達式NPARTS(buffera2)>0,即當垃圾箱buffera2中的垃圾數量

29、大于零時,能夠裝載;裝載數量等于Qua ntity to 框中的變量load num的值;裝載的時間需要Time toLoad框中的變量loadtimea(1);裝載的源在In put Load ing Rule規則中進行設定, 為"PULL from buffera2 ",從垃圾箱 buffera2 中收集。road7_t的設定車輛每次到達路徑road7_t的末端時,都要進行卸載處理,所以對路徑road7_t的詳細 設計項目包括卸載所需的時間,卸載模式等。通過路徑road7_t的General detail 頁的actions on front中設定卸載所需的時間,程序如

30、下:IF VEHICLE (road7_t,1) = dumpcart1un loadtime = 3 + 6 * NPARTS (dumpcart1) / 1000 / laborneedaday uni oadtimea = day uni oadtimea + uni oadtimeELSEun loadtime = 2 + 6 * NPARTS (dumpcart2) / 1000 / laborneedbday uni oadtimeb = day uni oadtimeb + uni oadtimeENDIF程序解釋:第一行至第三行,根據函數 VEHICLE。的結果,如果到達車輛是

31、 dumpcart1,就通過車 輛dumpcart1中所裝載的垃圾數量 NPARTS (dumpcart1)、車輛dumpcart1的隨車工作人員 數laborneeda來確定卸載時間 unioadtime ( 第二行),然后統計車輛 dumpcart1的總的卸 載時間dayunloadtimeb ( 第三行)。第四行至第七行,否則,也就是到達的車輛是dumpcart2,就通過車輛dumpcart2中所裝載的垃圾數量 NPART£dumpcart2)、車輛dumpcart2的隨車工作人員數 laborneedb來確 定卸載時間unloadtime(第五行),然后統計車輛 dumpca

32、rt2的總卸載時間 dayunloadtimeb (第六行)。圖11.3是路徑road7_t設置中的另一項容,就是車輛卸載的相關容。在選中Un loadi ng En abled(能夠卸載)前的復選框后,該頁面上的其他選項將能夠被用戶設置。卸載模式(Transfer Mode也有三種模式if、call、always,我們選擇模式 always,只要車輛到達路徑road7_t的末端,就進行卸載活動。卸載數量Quantity to 設定為All ,就是卸載車輛上的所有垃圾。卸載時間Time to設定為變量unloadtime,決定本次卸載所需要的時間。停車Park設定為公司停車場 corppark

33、,決定在當天回收任務完成后, 車輛泊放的位置。卸載到什么地方,將由"output unl oadi ng rule”中的程序決定,程序為:push to ship,將所有垃圾送出系統。圖 11.3路徑卸載Un load ing頁框界面數據處理子模塊每天車輛完成收集工作完成后, 駛向垃圾處理公司停車場停泊時,都將進行一些數據統計和處理活動。這些程序寫在路徑 road7_0的“ Actio ns on Fro nt ”中,程序及其說明如下: IF VEHICLE (road7_0,1) = dumpcart1IF NDema nds (dumpcart1) = 0run timea (1

34、) = TIMErun timea (2) = run timea (2) + 1run timea (3) = run timea (1) - 1000 * (run timea (2) - 1) timecosta = timecosta + timeweigh * (run timea (3) - 240) daydista nee = DISTANCE (dumpcart1) / 10 - lastdaydista nee lastdaydista nee = DISTANCE (dumpcart1) / 10 day unl oadtimea = 0 dayloadtimeb = 0

35、ENDIFELSEIF VEHICLE (road7_0,1) = dumpcart2IF NDemands (dumpcart2) = 0 runtimeb (1) = TIME runtimeb (2) = runtimeb (2) + 1 runtimeb (3) = runtimeb (1) - 1000 * (runtimeb (2) - 1) timecostb = timecostb + timeweigh * (runtimeb (3) - 240) daydistancea = DISTANCE (dumpcart2) / 10 - lastdaydistancea last

36、daydistancea = DISTANCE (dumpcart2) / 10 dayunloadtimeb = 0 dayloadtimeb = 0ENDIF ENDIF FOR num = 1 TO 4IF VEHICLE (road7_0,1) = dumpcart1 roadchoicea (num) = 0ELSEIF VEHICLE (road7_0,1) = dumpcart2 roadchoiceb (num) = 0ENDIF NEXT 程序解釋:第一行至第十一行, 如果即將停泊的車輛是 dumpcart1 ,同時系統此時對車輛 dumpcart1 的需零(第三行);先統計

37、車輛 dumpcart1 在當天收集工作的完成時間,并判斷是否超過了 12點,然后計算當天的時間懲罰成本 timecost( 第三至第六行 ) ;統計車輛的運行距離 ( 第七 至第八行 ) ;對兩個變量置零(第九至第十行)。第十二行至第二十二行,統計如果即將停泊的車輛是 dumpcart2 的一些數據,解釋同 dumpcart1 一樣。第二十四行至第三十行,對路徑選擇變量數組置零。11.5.6 目標函數 objfun() 中的程序sumcost = 0 ! 統計總費用的變量置零 sumcost = initialcosta + initialcostb + sumcost !將車輛的購置成本加到總費用變量中 sumcost = (laborneedb + laborneeda) * 60 * (runti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論