(FlexSim 学习笔记)合成器打包的工作机制分析和实现
????????在之前文章《“(FlexSim 學(xué)習(xí)筆記)案例1:不合格產(chǎn)品二次優(yōu)先加工,兩次不合格作廢》中簡單描述了下 flexsim 合成器的合成打包工作原理,并在該文“3.3、合成器合成打包選擇“這節(jié)內(nèi)容中,通過直接修改“更新合成器組件列表”事件的代碼,以適應(yīng)實際要求。
? ? ? ? 言猶未盡。直接修改“更新合成器組件列表”事件的總代碼量雖然只有幾行,但涉及到樹節(jié)點操作,不太方便理解。故本文嘗試再仔細闡述flexsim的合成器工作機制,并采取不用代碼的方式來實現(xiàn)其工作過程。
一、合成器打包工作機制
????????首先我們來看合成器的組件列表。合成器始終會先接收來自輸入端口1的貨品(并把它當(dāng)作容器),然后再按下圖所示的組件列表,分別接收其他輸入端口的貨物進行組合打包。例如下圖表示合成器從輸入端口1接收到容器后,再從輸入端口2/3/4分別接收2、3、2個貨物,然后進行打包。也即打包完成后,該容器中共有7個貨物。
? ? ? ? 上圖的數(shù)量設(shè)置多少無所謂,因為實際案例中往往需要按訂單,設(shè)法動態(tài)更新此表的數(shù)量。
? ? ? ? 如何更新呢?方法就是在合成器的On Entry觸發(fā)器中,設(shè)置動態(tài)更新合成器組件表。這樣的話,只要合成器從輸入端口1收到某個容器,就會立刻執(zhí)行更新合成器的組件列表。
????????上圖涉及的order表是全局表,需要預(yù)先創(chuàng)建,例如下圖(3行5列)。是不是與3行1列的合成器組件表非常相像,除了列多了點?
?
?? ? ? ? order全局表有5列,要用它去更新合成器組件列表,那么究竟該取那列值呢?這就涉及利用某個標(biāo)簽值了。例如下圖的流程,某個標(biāo)簽值 item.orderID=3(左圖),就是取全局表order(中圖)的第3列值的意思,再用此列值去更新合成器組件表(右圖)的相應(yīng)數(shù)量。
? ??? ??
? ? ? ? 那么標(biāo)簽orderID 又從哪來呢?可以考慮給容器定義orderID標(biāo)簽。這樣的話,按合成器的工作機制,合成器會先從輸入端口1接收容器,緊接著觸發(fā)On Entry 事件,因為我們在該事件中設(shè)置了更新合成器組件,那么flexsim就可利用此容器的orderID標(biāo)簽值,去執(zhí)行更新合成器組件列表的一系列操作。
?二、案例
????????接下來我們用一個案例來具體實現(xiàn)合成器的打包工作機制。
? ? ? ? ?如上圖,有4個發(fā)生器,第1個是托盤發(fā)生器產(chǎn)生托盤容器(與合成器A連接時,應(yīng)保證是合成器的第一個輸入端口),其他是貨物發(fā)生器,分別產(chǎn)生紅/綠/藍貨物。托盤離開發(fā)生器時,將生成訂單信息。合成器接收到托盤后,按訂單要求進行打包(即合成器最終在此托盤中分別放置紅/綠/藍貨物若干數(shù)量,進行打包)。
三、解決方案
1、創(chuàng)建order訂單全局表,3行1列
?2、托盤
????????在工具箱臨時實體欄中選擇托盤,新增4個數(shù)值標(biāo)簽,名稱及值分別為 r=0,g=0,b=0,orderID=1
????????r 表示訂單中的紅色貨物數(shù)量,g 表示綠色貨物數(shù)量,b 表示藍色貨物數(shù)量,orderID 對應(yīng)訂單全局表 order 的第幾列(列索引) ,因為order表只有1列,故orderID初始值設(shè)置為1,表示取訂單表order的第1列。
3、托盤發(fā)生器
3.1、托盤發(fā)生器的臨時實體欄選托盤,表示該發(fā)生器產(chǎn)生托盤。
????????
3.2、在托盤發(fā)生器的On Creation觸發(fā)器分別設(shè)置托盤的 r,g,b 標(biāo)簽值為1~5的隨機數(shù)。
????
????????這樣的話,每產(chǎn)生1個托盤,托盤的 r/g/b 分別就有隨機值,比如 r=3,g=5,b=2,表示此托盤要對應(yīng)的訂單為紅色貨物3個,綠色貨物5個,藍色貨物2個。
3.3、在托盤發(fā)生器的On Exit 觸發(fā)器中,設(shè)置”寫入全局表“3次,分別將托盤的 r,g,b 數(shù)量寫入訂單全局表order的第1行第1列,第2行第1列,第3行第1列。
?? ?? ?
4、紅色貨物發(fā)生器/綠色貨物發(fā)生器/藍色貨物發(fā)生器
????????在紅色貨物發(fā)送器的On Creation 觸發(fā)器中,設(shè)置Type標(biāo)簽和顏色為1,產(chǎn)生類型為1的紅色貨物。
? ? ? ? 其他顏色貨物發(fā)生器的設(shè)置類推。
5、合成器
????????在合成器的On Entry觸發(fā)器中,設(shè)置”更新合成器組件列表“,表為order,標(biāo)簽為orderID,表示通過托盤的orderID值,來取order表的對應(yīng)列,去更新組件表。這里托盤的orderID值已經(jīng)有初始值=1,所以更新取的是order表的第1列。
?
6、全部完成。
四、最終效果
五、小結(jié)
1、定義一個訂單全局表;
2、對托盤容器,定義和訂單數(shù)量相關(guān)的標(biāo)簽,以及和訂單列索引相關(guān)的標(biāo)簽;
3、在某個合適的觸發(fā)器中,利用托盤標(biāo)簽值去修改訂單全局表;
4、在合成器的進入觸發(fā)器中,用訂單全局表去更新合成器組件表。
總結(jié)
以上是生活随笔為你收集整理的(FlexSim 学习笔记)合成器打包的工作机制分析和实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Struts Web设计与开发大全》
- 下一篇: Vista优化大师