p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)_第1頁
p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)_第2頁
p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)_第3頁
p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)_第4頁
p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

p垃圾回收物流仿真系統(tǒng)設(shè)計(jì)1.垃圾回收物流系統(tǒng)介紹都市某一區(qū)域,共有7個(gè)居民小區(qū),每個(gè)小區(qū)有一個(gè)固定垃圾投放處,兩個(gè)垃圾箱分不投放完全廢棄垃圾和可回收利用垃圾;每天有專門公司(垃圾處理公司)派運(yùn)輸車收集垃圾,將垃圾從居民區(qū)運(yùn)送之中轉(zhuǎn)站,再由中轉(zhuǎn)站運(yùn)至目的地—垃圾處理中心。仿真程序研究如何設(shè)計(jì)物流系統(tǒng),能夠使收集系統(tǒng)在滿足時(shí)刻約束、載重約束的條件下,使垃圾處理公司的物流總成本最低。系統(tǒng)配置的項(xiàng)目要緊有車輛載重量、隨車工作人員數(shù)、客戶中意度。2.?dāng)?shù)據(jù)信息仿真系統(tǒng)涉及的數(shù)據(jù)信息如下:(1)地理及需求信息各個(gè)收集點(diǎn)所有的人口數(shù)、距離垃圾轉(zhuǎn)運(yùn)站、公司停車場(chǎng)的距離信息如表一所示。各收集點(diǎn)之間以及停車場(chǎng)和轉(zhuǎn)運(yùn)站之間的距離信息如表二所示。表一收集點(diǎn)信息收集點(diǎn)名稱收集點(diǎn)居民數(shù)people(i)(千人)距離停車場(chǎng)距離distance(ip)(km)距離垃圾轉(zhuǎn)運(yùn)站距離distance(it)(km)Dump0011.5616Dump0021.451627Dump0031.652624Dump0041.853836Dump0051.42826Dump0062.051614Dump0071.6108表二點(diǎn)間距離路徑起點(diǎn)路徑終點(diǎn)距離(km)符號(hào)Tran_stationCorppark11Distance(pt)Dump001Dump00210Distance(12)Dump002Dump00310Distance(23)Dump003Dump00412Distance(34)Dump004Dump00510Distance(45)Dump005Dump00612Distance(56)Dump006Dump0076Distance(67)(2)與收集車輛有關(guān)的信息=1\*GB3①固定成本[price(i)]:收集車輛的購(gòu)買費(fèi)用;=2\*GB3②可變成本[cost(i)]:車輛的行駛費(fèi)用、愛護(hù)費(fèi)用和雇職員資;=3\*GB3③行駛速度:分為空車行駛速度[unloadspeed(i)]和載重行駛速度[loadspeed(i)];=4\*GB3④收集時(shí)刻[loadtime(i)]:在垃圾收集點(diǎn)收集垃圾所需的時(shí)刻=5\*GB3⑤卸載時(shí)刻[unloadtime(i)]:在轉(zhuǎn)運(yùn)站卸載垃圾所需的時(shí)刻具體信息如表三所示:表三收集車輛信息車輛名稱載重t固定成本萬元可變成本元/km載重速度km/h空載速度km/h人員人人職員資元/天.人收集時(shí)刻min卸載時(shí)刻min車1X12+X1X16072P1603+y*6/P13+X1*6/P1車2X22+1.2*X2X26072P2602+y*8/P22+X2*6/P2講明:車1用來收集不可回收垃圾;車2用來收集可回收利用垃圾;X1,X2為現(xiàn)有兩種車的噸位數(shù),X1取值:3,4或5噸;X2取值:1.5;2;2.5;y為每次收集的垃圾量,單位--噸;P1,P2為兩種車可配備的隨車工作人員數(shù)(能夠是1,2,3)。(3)與垃圾有關(guān)的信息=1\*GB3①人均垃圾量:平均每人每天產(chǎn)生的垃圾數(shù)量=2\*GB3②垃圾比例:各種垃圾成分所占比例假設(shè)人均垃圾量服從均值為1.2kg/天的埃爾郎分布,垃圾成分分為兩類:一類為可重復(fù)利用資源,一類為無用需銷毀垃圾,兩者比例為1:2。(4)收集垃圾的成本函數(shù)現(xiàn)在假設(shè)仿真一年365天的垃圾回收工作,決定兩種型號(hào)的車配置何種噸位以及隨車工作人員數(shù),垃圾回收物流成本(TotalLogisticCost,TLC)最低。TLC=車1成本+車2成本車I所耗成本=I的固定成本+I的可變成本+I的服務(wù)時(shí)刻成本+I的人員成本即:TLC=CC1+CC2CC[i]=X[i]+V[i]+S[i]+P[i]*365*60S[i]=(runtime[i]-240)*mS[i]為垃圾回收的服務(wù)時(shí)刻成本,m為收集時(shí)刻對(duì)服務(wù)時(shí)刻成本的懲處因子。垃圾回收公司在十二點(diǎn)之前收集完畢,社會(huì)效應(yīng)好,給予獎(jiǎng)勵(lì);在十二點(diǎn)后完成,社會(huì)中意度低,阻礙公司信譽(yù),成本增加。runtime[i]為垃圾車將垃圾全部回收完成的最終時(shí)刻,也即垃圾車每天的運(yùn)行時(shí)刻;3.系統(tǒng)邏輯結(jié)構(gòu)此垃圾回收物流系統(tǒng)的邏輯結(jié)構(gòu)分為四個(gè)字模塊:垃圾產(chǎn)生模塊、叫車模塊、收集模塊、收工模塊、數(shù)據(jù)處理模塊。(1)垃圾產(chǎn)生模塊每天收集工作開始時(shí),系統(tǒng)按照小區(qū)的人數(shù)、人均垃圾量、兩種垃圾量的比例,通過愛爾朗隨機(jī)分布函數(shù),隨機(jī)產(chǎn)生各個(gè)小區(qū)的兩種垃圾數(shù)量,分不存放入各個(gè)小區(qū)的兩個(gè)垃圾箱內(nèi)。(2)叫車模塊在垃圾存放入各個(gè)小區(qū)的兩個(gè)垃圾箱過程中,按照每種垃圾的總量以及每種垃圾車的載重量,生成叫車的次數(shù)。(3)收集模塊叫車次數(shù)確定之后,車輛按照需求,沿著最短路徑依次收集垃圾。在收集過程中,在一個(gè)垃圾點(diǎn),如果垃圾車收集滿了或當(dāng)天的收集工作全部完成,車輛駛向垃圾中轉(zhuǎn)站,進(jìn)行卸載操作;如果垃圾車未滿,則駛向下一最近垃圾收集點(diǎn)連續(xù)收集。(4)收工模塊當(dāng)天的收集工作全部完成之后,車輛駛向公司停車場(chǎng),當(dāng)天收集工作完畢。(5)數(shù)據(jù)處理模塊每天車輛收工時(shí),4.仿真模型的建立按照系統(tǒng)邏輯結(jié)構(gòu)和數(shù)據(jù)信息,我們建立具有7個(gè)垃圾收集點(diǎn)、一個(gè)垃圾轉(zhuǎn)運(yùn)站的WITNESS垃圾回收仿真模型。具體步驟如下:元素定義Difine建立仿真模型時(shí),第一定義仿真模型中所需的元素,并設(shè)計(jì)它們的可視成效。我們將設(shè)計(jì)的元素分為兩類――實(shí)體元素和邏輯元素,名稱如下。表四實(shí)體元素列表:元素名稱類型講明dumpa(1)~dumpa(7)Part七個(gè)小區(qū)不可回收的垃圾dumpb(1)~dumpb(7)Part七個(gè)小區(qū)可回收利用的垃圾dumpcart(1)Vehicle專門回收dumpa的垃圾回收車dumpcart(2)Vehicle專門回收dumpb的垃圾回收車buffera(1)~buffera(7)Buffer各小區(qū)不可回收垃圾的垃圾箱bufferb(1)~bufferb(7)buffer各小區(qū)可回收利用垃圾的垃圾箱CorpparkTrack公司停車場(chǎng),Transfer_stationBuffer垃圾轉(zhuǎn)運(yùn)站road(i,j)Track由節(jié)點(diǎn)實(shí)體i向節(jié)點(diǎn)實(shí)體j方向的道路road(j,i)track由節(jié)點(diǎn)實(shí)體j向節(jié)點(diǎn)實(shí)體i方向的道路Geta(1)~geta(7)Track車輛將通過它們來進(jìn)行垃圾a的回收Getb(1)~getb(7)Track車輛將通過它們來進(jìn)行垃圾b的回收表五邏輯元素—變量列表:變量名稱類型講明people(7)integer各小區(qū)的居民數(shù)量capacitycart(2)integer兩種垃圾車每次可收集的垃圾數(shù)量,即載重量ndemand(2)integer每天對(duì)兩種垃圾車的需求次數(shù)labor(2)integer兩種垃圾車的隨車工作人員數(shù)SalaryReal工作人員每天工資price(2)Real兩種垃圾車的購(gòu)買價(jià)格costrate(2)Real兩種垃圾車的運(yùn)行費(fèi)率unloadspeed(2)Real兩種垃圾車的空載速度loadspeed(2)Real兩種垃圾車的實(shí)載速度loadnum(2)integer兩車輛到達(dá)垃圾收集點(diǎn)可收集的垃圾數(shù)量nfree(2)integer兩車輛剩余載重能力Nparts7)integer每一垃圾收集點(diǎn)在特定仿真時(shí)點(diǎn)剩余垃圾量loadtime(2)Real兩車輛收集垃圾所需的時(shí)刻unloadtime(2)Real兩車輛卸載垃圾所需的時(shí)刻runtime(2,3)Real儲(chǔ)備車輛的時(shí)刻參數(shù),runtime(k,1)儲(chǔ)備仿真鐘的當(dāng)前數(shù)值,runtime(k,2)儲(chǔ)備車輛k在當(dāng)天的運(yùn)行時(shí)刻,runtime(k,3)儲(chǔ)備車輛k在仿真過程中總的運(yùn)行時(shí)刻TimeweighReal時(shí)刻懲處因子timecost(2)Real時(shí)刻懲處成本sumcostReal目標(biāo)函數(shù)objfun中用于統(tǒng)計(jì)系統(tǒng)運(yùn)行的總費(fèi)用定義一個(gè)實(shí)數(shù)型邏輯函數(shù)objfun(),用于運(yùn)算和統(tǒng)計(jì)系統(tǒng)運(yùn)行一年365天所花費(fèi)的總費(fèi)用。元素顯示display各個(gè)元素的顯示設(shè)置如下圖所示。元素詳細(xì)設(shè)計(jì)在該子模塊中定義隨著仿真鐘的推進(jìn),裝載垃圾的邏輯條件。該系統(tǒng)的工作班次制度采納每天工作8小時(shí),每一仿真時(shí)刻等價(jià)于現(xiàn)實(shí)時(shí)刻一分鐘。為了實(shí)現(xiàn)系統(tǒng)的仿真運(yùn)行,需要對(duì)系統(tǒng)中的元素進(jìn)行詳細(xì)設(shè)計(jì)。具體設(shè)計(jì)如下:系統(tǒng)初始化程序設(shè)計(jì)(initializeactions)personum(1)=1.5personum(2)=1.45personum(3)=1.65personum(4)=1.85personum(5)=1.4personum(6)=2.05personum(7)=1.6!給各小區(qū)的人數(shù)賦初值,單位:千人FORnum=1TO7 meandump(num)=1.2*personum(num)*1000NEXT!分不生成每天七個(gè)小區(qū)產(chǎn)生垃圾的均值setcapacityofdumpcart1tocapacitycart(1)setcapacityofdumpcart2tocapacitycart(2)!分不設(shè)定兩個(gè)車輛的載重量,由變量數(shù)組capacitycart(1)和capacitycart(2)決定。unloadtime=0!卸載時(shí)刻FORnum=1TO7 moddemanda(num)=0 moddemandb(num)=0!決定叫車次數(shù)的變量NEXTFORnum=1TO4 roadchoicea(num)=0 roadchoiceb(num)=0!最短路徑操縱變量NEXTFORnum=1TO3 runtimea(num)=0 runtimeb(num)=0!車輛運(yùn)行時(shí)刻操縱變量NEXTintervaltime=1440!每天的分鐘數(shù)timeweigh=5!時(shí)刻懲處因子laborneeda=1laborneedb=1!兩輛車隨車工作人員數(shù)!對(duì)變量賦初始值b.各個(gè)小區(qū)垃圾的詳細(xì)設(shè)計(jì)垃圾元素詳細(xì)設(shè)計(jì)表NameFirstarrivalInterarrivalLotsizeToDumpa10.00011440ERLANG(meandump(1)/3,3,1)PUSHtobuffera1Dumpa20.00021440ERLANG(meandump(2)/3,3,2)PUSHtobuffera2Dumpa30.00031440ERLANG(meandump(3)/3,3,3)PUSHtobuffera3Dumpa40.00041440ERLANG(meandump(4)/3,3,4)PUSHtobuffera4Dumpa50.00051440ERLANG(meandump(5)/3,3,5)PUSHtobuffera5Dumpa60.00061440ERLANG(meandump(6)/3,3,6)PUSHtobuffera6Dumpa70.00071440ERLANG(meandump(7)/3,3,7)PUSHtobuffera7Dumpb10.00011440ERLANG(meandump(1)/3,3,8)PUSHtobufferb1Dumpb20.00021440ERLANG(meandump(2)/3,3,9)PUSHtobufferb2Dumpb30.00031440ERLANG(meandump(3)/3,3,10)PUSHtobufferb3Dumpb40.00041440ERLANG(meandump(4)/3,3,11)PUSHtobufferb4Dumpb50.00051440ERLANG(meandump(5)/3,3,12)PUSHtobufferb5Dumpb60.00061440ERLANG(meandump(6)/3,3,13)PUSHtobufferb6Dumpb70.00071440ERLANG(meandump(7)/3,3,14)PUSHtobufferb7垃圾名稱*一天的分鐘數(shù)Meandump為通過各小區(qū)人數(shù)運(yùn)算出來的變量數(shù)組決定垃圾的存放*決定每天各個(gè)小區(qū)的垃圾依次產(chǎn)生,以便于生產(chǎn)叫車次數(shù)。C.運(yùn)輸車輛詳細(xì)設(shè)計(jì)NameUnloadspeedLoadspeedtoDumpcart11.21.0PUSHtocorppark(1)Dumpcart21.21.0PUSHtocorppark(2)車輛名稱空載速度(km/min)實(shí)載速度生成時(shí),放入公司停車場(chǎng)的車位D.當(dāng)垃圾放入垃圾箱時(shí)的活動(dòng),也即每個(gè)垃圾箱的“actionsoninput”中的程序元素buffera1IFMOD(NPARTS(buffera1),cartcapacity(1))=1 CALLdumpcart1,get1,road7_t,1 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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(1)=MOD(NPARTS(buffera1),cartcapacity(1))程序講明:第一行:判定當(dāng)buffera1中的垃圾的數(shù)量同車輛1的載重量取余為1時(shí),發(fā)生if…endif之間的活動(dòng);第二行:叫車dumpcart1,該車將在路徑get1上裝載垃圾,在路徑road7_t上卸載垃圾,優(yōu)先級(jí)為1;第三行至第五行:在所有路徑上搜索車輛dumpcart1;第七行:匯總非整車?yán)臄?shù)量,帶到buffera2中連續(xù)運(yùn)算并叫車。Buffera2~buffera7的“actionsoninput”中的程序如下:IFMOD(moddemanda(i-1)+NPARTS(buffera(i)),cartcapacity1)=1 CALLdumpcart1,geta(i),road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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表示本垃圾箱的序號(hào),為2,3,4,5,6,7;第一行:將其上一個(gè)垃圾箱的非整車?yán)鴶?shù)量同本垃圾箱中的垃圾數(shù)相加,然后與車輛一的載重量取余,當(dāng)結(jié)果為1時(shí),叫車。垃圾箱bufferb1~bufferb7的“actionsoninput”同垃圾箱buffera1~buffera7的“actionsoninput”處理邏輯完全一樣,只需要將buffera改為bufferb、dumpcart1改為dumpcart2、moddemanda改為moddemandb、geta改為getb即可。E.兩點(diǎn)間運(yùn)輸路徑上的程序設(shè)計(jì)下面以road2_3為例,加以講明其邏輯流程。其它路徑類似,能夠在路徑的generaldetail中的outputto中加以查看。IFVEHICLE(road2_3,1)=dumpcart1 IFNPARTS(buffera3)>0 PUSHtogeta3(1) ELSE PUSHtoroad3_4 ENDIFELSEIFVEHICLE(road2_3,1)=dumpcart2 IFNPARTS(bufferb3)>0 PUSHtogetb3 ELSE PUSHtoroad3_4 ENDIFELSE WaitENDIF第一行到第六行:決定車輛dumpcart1到達(dá)路徑road2_3末端時(shí),它的運(yùn)行路徑。如果現(xiàn)在垃圾箱buffera3中有垃圾,則車輛dumpcart1駛向路徑geta3,進(jìn)行垃圾收集(第二行到第四行);如果垃圾箱buffera3中沒有垃圾,則車輛dumpcart1駛向路徑road3_4。第七行到第十二行:決定車輛dumpcart2到達(dá)路徑road2_3末端時(shí),它的運(yùn)行路徑。如果現(xiàn)在垃圾箱bufferb3中有垃圾,則車輛dumpcart2駛向路徑getb3,進(jìn)行垃圾收集(第八行到第十行);如果垃圾箱bufferb3中沒有垃圾,則車輛dumpcart2駛向路徑road3_4。如果是其他情形,等待(第十三行到第十四行)。F.路徑get系列的設(shè)置在Get系列(Geta1~geta7,Getb1~getb7)路徑中設(shè)置車輛的裝載(loading)程序和條件,它們的設(shè)定以及程序的處理流程差不多相同,下面舉geta2加以講明。其中裝載數(shù)量(loadnum)和裝載時(shí)刻(loadtime)在generaldetail頁的actionsonfront中設(shè)定;裝載程序和條件在loadingdetail頁中進(jìn)行設(shè)定。Generaldetail頁的actionsonfront程序如下:IFNFREE(dumpcart1)>=NPARTS(buffera2) loadnum=NPARTS(buffera2)ELSE loadnum=NFREE(dumpcart1)ENDIFloadtimea(1)=3+loadnum/1000*loadindexa/laborneedadayloadtimea=dayloadtimea+loadtimea(1)程序講明:第一行至第五行:如果車輛dumpcart1的空余容量NFREE(dumpcart1)不小于垃圾箱buffera2中的垃圾數(shù)量,則收集數(shù)量loadnum為垃圾箱buffera2中的所有垃圾;否則,收集數(shù)量loadnum為車輛的空余容量。第六行:運(yùn)算此次收集所需的時(shí)刻loadtimea(1),它是此次垃圾收集量、隨車工作人員數(shù)以及收集時(shí)刻系數(shù)的函數(shù)。下面的圖形是路徑geta2中的loadingdetail頁的設(shè)定。在選中l(wèi)oadingenabled(能夠裝載)前的復(fù)選框后,將會(huì)顯現(xiàn)該界面上的其他內(nèi)容。TransferMode(裝載模式)有三種:if、call、always。我們選擇條件模式if,在條件condition:框中輸入條件表達(dá)式NPARTS(buffera2)>0,即當(dāng)垃圾箱buffera2中的垃圾數(shù)量大于零時(shí),能夠裝載;裝載數(shù)量等于Quantityto框中的變量loadnum的值;裝載的時(shí)刻需要TimetoLoad框中的變量loadtimea(1);裝載的源在InputLoadingRule規(guī)則中進(jìn)行設(shè)定,為“PULLfrombuffera2”,從垃圾箱buffera2中收集。G.road7_t的設(shè)定車輛每次到達(dá)路徑road7_t的末端時(shí),都要進(jìn)行卸載處理,因此對(duì)路徑road7_t的詳細(xì)設(shè)計(jì)項(xiàng)目包括卸載所需的時(shí)刻,卸載模式等。Generaldetail頁的actionsonfront中設(shè)定卸載所需的時(shí)刻,程序如下:IFVEHICLE(road7_t,1)=dumpcart1 unloadtime=3+6*NPARTS(dumpcart1)/1000/laborneeda dayunloadtimea=dayunloadtimea+unloadtimeELSE unloadtime=2+6*NPARTS(dumpcart2)/1000/laborneedb dayunloadtimeb=dayunloadtimeb+unloadtimeENDIF程序講明:第一行至第三行,按照函數(shù)VEHICLE()的結(jié)果,如果到達(dá)車輛是dumpcart1,就通過車輛dumpcart1中所裝載的垃圾數(shù)量NPARTS(dumpcart1)、車輛dumpcart1的隨車工作人員數(shù)laborneeda來確定卸載時(shí)刻unloadtime(第二行),然后統(tǒng)計(jì)車輛dumpcart1的總的卸載時(shí)刻dayunloadtimeb(第三行)。第四行至第七行,否則,也確實(shí)是到達(dá)的車輛是dumpcart2,就通過車輛dumpcart2中所裝載的垃圾數(shù)量NPARTS(dumpcart2)、車輛dumpcart2的隨車工作人員數(shù)laborneedb來確定卸載時(shí)刻unloadtime(第五行),然后統(tǒng)計(jì)車輛dumpcart2的總卸載時(shí)刻dayunloadtimeb(第六行)。下圖是路徑road7_t設(shè)置中的另一項(xiàng)內(nèi)容,確實(shí)是車輛卸載的有關(guān)內(nèi)容。在選中UnloadingEnabled(能夠卸載)前的復(fù)選框后,該頁面上的其他選項(xiàng)將能夠被用戶設(shè)置。卸載模式(TransferMode)也有三種模式if、call、always,我們選擇模式always,只要車輛到達(dá)路徑road7_t的末端,就進(jìn)行卸載活動(dòng)。卸載數(shù)量Quantityto設(shè)定為All,確實(shí)是卸載車輛上的所有垃圾。卸載時(shí)刻Timeto設(shè)定為變量unloadtime,決定此次卸載所需要的時(shí)刻。停車Park設(shè)定為公司停車場(chǎng)corppark,決定在當(dāng)天回收任務(wù)完成后,車輛泊放的位置。卸載到什么地點(diǎn),將由“outputunloadingrule”中的程序決定,程序?yàn)椋簆ushtoship,將所有垃圾送出系統(tǒng)。數(shù)據(jù)處理子模塊每天車輛完成收集工作完成后,駛向垃圾處理公司停車場(chǎng)停泊時(shí),都將進(jìn)行一些數(shù)據(jù)統(tǒng)計(jì)和處理活動(dòng)。這些程序?qū)懺诼窂絩oad7_0的“ActionsonFront”中,程序及其講明如下:IFVEHICLE(road7_0,1)=dumpcart1 IFNDemands(dumpcart1)=0 runtimea(1)=TIME runtimea(2)=runtimea(2)+1 runtimea(3)=runtimea(1)-1000*(runtimea(2)-1) timecosta=timecosta+timeweigh*(runtimea(3)-240) daydistance=DISTANCE(dumpcart1)/10-lastdaydistance lastdaydistance=DISTANCE(dumpcart1)/10 dayunloadtimea=0 dayloadtimeb=0 ENDIFELSEIFVEHICLE(road7_0,1)=dumpcart2 IFNDemands(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 lastdaydistancea=DISTANCE(dumpcart2)/10 dayunloadtimeb=0 dayloadtimeb=0 ENDIFENDIFFORnum=1TO4 IFVEHICLE(road7_0,1)=dumpcart1 roadchoicea(num)=0 ELSEIFVEHICLE(road7_0,1)=dumpcart2 roadchoiceb(num)=0 ENDIFNEXT程序講明:第一行至第十一行,如果立即停泊的車輛是dumpcart1,同時(shí)系統(tǒng)現(xiàn)在對(duì)車輛dumpcart1的需求是零(第三行);先統(tǒng)計(jì)車輛dumpcart1在當(dāng)天收集工作的完成時(shí)刻,并判定是否超過了12點(diǎn),然后運(yùn)算當(dāng)天的時(shí)刻懲處成本timecost(第三至第六行);統(tǒng)計(jì)車輛的運(yùn)行距離(第七至第八行);對(duì)兩個(gè)變量置零(第九至第十行)。第十二行至第二十二行,統(tǒng)計(jì)如果立即停泊的車輛是dumpcart2的一些數(shù)據(jù),講明同dumpcart1一樣。第二十四行至第三十行,對(duì)路徑選擇變量數(shù)組置零。目標(biāo)函數(shù)objfun()中的程序如下:sumcost=0!統(tǒng)計(jì)總費(fèi)用的變量置零sumcost=initialcosta+initialcostb+sumcost!將車輛的購(gòu)置成本加到總費(fèi)用變量中sumcost=(laborneedb+laborneeda)*60*(runtimea(2)+1)+sumcost!將工作人職員資添加到總費(fèi)用變量sumcost=DISTANCE(dumpcart001)/10*permilecosta+DISTANCE(dumpcart002)/10*permilecostb+sumcost!將車輛的運(yùn)行費(fèi)用添加到總費(fèi)用變量sumcost=timecosta+timecostb+sumcost!將時(shí)刻懲處成本添加到總費(fèi)用變量RETURNsumcost!返回變量sumcost給目標(biāo)函數(shù)5.仿真運(yùn)行與結(jié)果分析我們現(xiàn)在采納如下兩種配置,來運(yùn)行該仿真模型,仿真時(shí)刻為一年(即365*1440分鐘)。項(xiàng)目方案車輛名稱載重量(噸)隨車人員(人)時(shí)刻懲處因子方案一Dumpcart(1)312Dumpcart(2)1.512方案二Dumpcart(1)532Dumpcart(2)2.532其它的項(xiàng)目在兩個(gè)方案中的值完全相同,參見前面的表格。通過仿真運(yùn)行后得到如下數(shù)據(jù):方案運(yùn)行距離km運(yùn)行時(shí)刻h時(shí)刻成本萬元收集時(shí)刻h卸載時(shí)刻h可變成本萬元固定成本萬元人員工資萬元總成本萬元總成本萬元一Dumpcart(1)73691231010.274440722.152.239.566.3Dumpcart(2)7433622639.681321711.23.82.226.8二Dumpcart(1)546571366-1.134215727.376.639.863Dumpcart(2)544891292-23328613.656.623.2為了更清晰的比較兩種方案的成本參數(shù),將上表的數(shù)據(jù)繪制成直方圖如下:從成本數(shù)據(jù)比較圖上能夠看出,當(dāng)采納方案二時(shí),車輛噸位數(shù)和隨車人員的增加,使得固定成本、人職員資都比方案一要大;同時(shí),回收速度要比方案一快的多,使得可變成本和居民中意度較高;時(shí)刻懲處成本低于零,即取得了專門好的市場(chǎng)評(píng)判和公司品牌效應(yīng)。在這兩種方案下,每年方案二的物流成本比方案一要少3.3萬元。從運(yùn)行參數(shù)比較圖上能夠看出,兩種方案的物流成本差異收集時(shí)刻、卸載時(shí)刻、運(yùn)行時(shí)刻、運(yùn)行距離的差異引起的。由于方案一的車輛噸位和隨車人員都比方案二要少,因此同是收集等量垃圾,它的收集時(shí)刻和卸載時(shí)刻都比方案二長(zhǎng),它的收集次數(shù)要比方案二多,即運(yùn)行距離比方案二長(zhǎng)。附:以上程序當(dāng)中所涉及的函數(shù)介紹如下MODELINFORMATION: ModelName: dumpreverse ModelTitle: thesimulationforreverselogistics ModelAuthor: jiannywang,NUAA CreationDate: SunMar1009:26:202004InitialActions: XLReadArray("\\reverse.xls","input","$B$3:$B$9",personum) FORnum=1TO7 meandump(num)=1.2*personum(num)*1000 NEXTELEMENTNAME:dump1ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump001(1)Actions Create: IFIUNIFORM(1,3,101)=1 dumpreusable="yes" ELSE dumpreusable="no" ENDIF moddemand(1)=MOD(moddemand(1),cartcapacity)+1 IFmoddemand(1)=cartcapacity moddemand(1)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump1aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump001a(1)Actions Create: IFIUNIFORM(1,3,101)=1 dumpreusable="yes" ELSE dumpreusable="no" ENDIF moddemand(1)=MOD(moddemand(1),cartcapacity)+1 IFmoddemand(1)=cartcapacity moddemand(1)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump2ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump002(1)Actions Create: moddemand(2)=MOD(moddemand(2),cartcapacity)+1 IFmoddemand(2)=cartcapacity moddemand(2)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump2aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump002a(1)Actions Create: moddemand(2)=MOD(moddemand(2),cartcapacity)+1 IFmoddemand(2)=cartcapacity moddemand(2)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump3ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0001MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump003(1)Actions Create: moddemand(3)=MOD(moddemand(3),cartcapacity)+1 IFmoddemand(3)=cartcapacity moddemand(3)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump3aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0001MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump003a(1)Actions Create: moddemand(3)=MOD(moddemand(3),cartcapacity)+1 IFmoddemand(3)=cartcapacity moddemand(3)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump4ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0002MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump004(1)Actions Create: moddemand(4)=MOD(moddemand(4),cartcapacity)+1 IFmoddemand(4)=cartcapacity moddemand(4)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump4aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0002MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump004a(1)Actions Create: moddemand(4)=MOD(moddemand(4),cartcapacity)+1 IFmoddemand(4)=cartcapacity moddemand(4)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump5ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0003MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump005(1)Actions Create: moddemand(5)=MOD(moddemand(5),cartcapacity)+1 IFmoddemand(5)=cartcapacity moddemand(5)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump5aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0003MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump005a(1)Actions Create: moddemand(5)=MOD(moddemand(5),cartcapacity)+1 IFmoddemand(5)=cartcapacity moddemand(5)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump6ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0004MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump006(1)Actions Create: moddemand(6)=MOD(moddemand(6),cartcapacity)+1 IFmoddemand(6)=cartcapacity moddemand(6)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump6aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0004MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump006a(1)Actions Create: moddemand(6)=MOD(moddemand(6),cartcapacity)+1 IFmoddemand(6)=cartcapacity moddemand(6)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump7ElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0005MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump007(1)Actions Create: moddemand(7)=MOD(moddemand(7),cartcapacity)+1 IFmoddemand(7)=cartcapacity moddemand(7)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump7aElementType: PartType: VariableattributesGroupnumber: 1InterArrivalTime: 480.0FirstArrivalat: 0.0005MaximumArrivals: UnlimitedInput/OutputRules Output: PUSHtodump007a(1)Actions Create: moddemand(7)=MOD(moddemand(7),cartcapacity)+1 IFmoddemand(7)=cartcapacity moddemand(7)=0 ENDIF_____________________________________________________________ELEMENTNAME:dump001ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(NPARTS(dump001),cartcapacity)=1 CALLdumpcart001,get1,road7_t,1 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(1)=MOD(NPARTS(dump001),cartcapacity)_____________________________________________________________ELEMENTNAME:dump001aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(NPARTS(dump001a),cartcapacity)=1 CALLdumpcart001,get1,road7_t,1 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(1)=MOD(NPARTS(dump001a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump002ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(1)+NPARTS(dump002),cartcapacity)=1 CALLdumpcart001,get2,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(2)=MOD(moddemand(1)+NPARTS(dump002),cartcapacity)_____________________________________________________________ELEMENTNAME:dump002aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(1)+NPARTS(dump002a),cartcapacity)=1 CALLdumpcart001,get2,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(2)=MOD(moddemand(1)+NPARTS(dump002a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump003ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(2)+NPARTS(dump003),cartcapacity)=1 CALLdumpcart001,get3,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(3)=MOD(moddemand(2)+NPARTS(dump003),cartcapacity)_____________________________________________________________ELEMENTNAME:dump003aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(2)+NPARTS(dump003a),cartcapacity)=1 CALLdumpcart001,get3,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(3)=MOD(moddemand(2)+NPARTS(dump003a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump004ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(3)+NPARTS(dump004),cartcapacity)=1 CALLdumpcart001,get4,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(4)=MOD(moddemand(3)+NPARTS(dump004),cartcapacity)_____________________________________________________________ELEMENTNAME:dump004aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(3)+NPARTS(dump004a),cartcapacity)=1 CALLdumpcart001,get4,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(4)=MOD(moddemand(3)+NPARTS(dump004a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump005ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(4)+NPARTS(dump005),cartcapacity)=1 CALLdumpcart001,get5,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(5)=MOD(moddemand(4)+NPARTS(dump005),cartcapacity)_____________________________________________________________ELEMENTNAME:dump005aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(4)+NPARTS(dump005a),cartcapacity)=1 CALLdumpcart001,get5,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(5)=MOD(moddemand(4)+NPARTS(dump005a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump006ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(5)+NPARTS(dump006),cartcapacity)=1 CALLdumpcart001,get6,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(6)=MOD(moddemand(5)+NPARTS(dump006),cartcapacity)_____________________________________________________________ELEMENTNAME:dump006aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(5)+NPARTS(dump006a),cartcapacity)=1 CALLdumpcart001,get6,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(6)=MOD(moddemand(5)+NPARTS(dump006a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump007ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(6)+NPARTS(dump007),cartcapacity)=1 CALLdumpcart001,get7,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(7)=MOD(moddemand(6)+NPARTS(dump007),cartcapacity)_____________________________________________________________ELEMENTNAME:dump007aElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: FrontActions Input: IFMOD(moddemand(6)+NPARTS(dump007a),cartcapacity)=1 CALLdumpcart001,get7,road7_t,0 VSEARCHroad0_1,corppark,road1_2,road1_0,road2_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,get1,get2,get3,get4,get5,get6,get7 ENDIF moddemand(7)=MOD(moddemand(6)+NPARTS(dump007a),cartcapacity)_____________________________________________________________ELEMENTNAME:dump008ElementType: BufferQuantity: 1Capacity: 65000InputOption: RearOutputOption: First SearchFrom: Front_____________________________________________________________ELEMENTNAME:processmachElementType: MachineQuantity: 1Priority: LowestType: AssemblyAssemblyQty: 5000CycleTime: 1.0Input/OutputRules Input: IFMOD(TIME,480)>400ANDMOD(TIME,480)<460 PULLfromdump008 ELSE Wait ENDIF Output: PUSHtoSHIP_____________________________________________________________ELEMENTNAME:corpparkElementType: TrackQuantity: 1Capacity: 2Zone: 0WorkSearch NoneInput/OutputRules Output: PUSHtoroad0_1(1)_____________________________________________________________ELEMENTNAME:get1ElementType: TrackQuantity: 1Capacity: 1Zone: 0WorkSearch NoneLoading: IfNPARTS(dump001)>0 LoadQuantity: loadnum LoadTime: 2.0Input/OutputRules Output: IFNFREE(dumpcart001)=0 PUSHtoroad1_0 ELS

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論