龔志鋒 陳滔滔 石 超 陳建銀
(北京科捷物流有限公司 北京 100085)
隨著互聯(lián)網(wǎng)的高速發(fā)展,電子商務不斷深入人們生活的各個領域,不斷對倉儲揀選效率提出更高的要求,在此背景下,電商行業(yè)廣泛應用倉儲物流機器人(AGV),在提高倉儲揀選效率的同時應對不斷上漲的勞動力成本[1]。但是,受限于圖像識別以及機器人手臂技術的發(fā)展,目前在商品包裝較為復雜的電商行業(yè)之中,倉庫還無法做到完全的無人化揀選,仍然需要人工配合機器人完成商品的揀選,因此如何使用最少的人員完成每天的訂單量是每個倉庫的工作重點之一[2]。
本次研究以位于天津武清區(qū)科捷機器人倉(如圖1所示)為背景,該倉主要業(yè)務為某品牌的日常洗護用品,采用人與機器相互配合完成商品出庫。
圖1 科捷機器人倉
該揀選模式的主要流程如下:
(1) AGV前往派單站點領取揀選單,完成綁定,接收下架任務。
(2) AGV自動前往相關的下架站點獲取商品,在各個下架站點的工作人員將所需商品從貨架上取下放入機器人所帶空貨架中,如圖2所示。
圖2 智能機器人與運輸貨架
(3) 當AGV獲取到揀選單中的所有商品后,自動前往播種站點。
(4) AGV到達播種站點后,工作人員會將運輸貨架上的商品取下并進行二次分揀,完成后AGV返回派單站點領取下一個揀選單并重復上述過程。揀選流程如圖3所示。
圖3 揀選流程
本次仿真采用C++編程語言,使用Qt Creator平臺編寫完成。
從系統(tǒng)的整體功能上,本文所研究的仿真系統(tǒng)分為人機交互模塊、模型模塊、動畫模塊以及結果輸出模塊[3-6],如圖4所示。
圖4 人機交互界面
其中人機交互模塊為系統(tǒng)開始運行前用于調節(jié)機器人數(shù)量、人員數(shù)量等參數(shù)的UI界面;模型模塊包含了模擬場景中的機器人、各個站點、工作人員等對象;動畫模塊主要負責將開始仿真開始后的運行圖像實時更新至窗口界面上;結果輸出模塊用于將一個仿真循環(huán)結束后的結果輸出到一個TXT文本之中[7-10]。
2.1.1人機交互模塊
人機交互模塊主要負責操作人員對仿真參數(shù)的調節(jié)。根據(jù)實際研究背景中的業(yè)務場景,現(xiàn)場日常需要調節(jié)的內容主要有機器人數(shù)量、下架人員數(shù)量、播種墻數(shù)量,因此在仿真中這幾項參數(shù)必須是可調的。此外,需要對場景的運行時間以及仿真系統(tǒng)的運行時間做出調節(jié),因此添加2項與時間相關的參數(shù)。
綜上所述,界面上的主要參數(shù)包括循環(huán)時間、機器人數(shù)量、人員數(shù)量、播種墻數(shù)量、加速倍數(shù)。
1) 循環(huán)時間與加速倍數(shù)。循環(huán)時間即為所模擬的業(yè)務流程的工作時間,單位為秒。通過在程序中建立一個計時器,使其定時發(fā)出信號促使各個對象不斷更新其當前的狀態(tài),從而模擬整個業(yè)務流程的運轉。
由于實際場景的工作時間較長,若要快速地得到結果,那么在模擬時進行加速是必不可少的。加速倍數(shù)參數(shù)會影響計時器中定時發(fā)出信號的周期,從而調節(jié)系統(tǒng)的運行頻率。
2) 機器人數(shù)量、下架人員數(shù)量、播種墻數(shù)量。機器人、下架人員、播種墻都是在實際業(yè)務中必不可少的,同時他們的數(shù)量都是可調的,因此,一旦在交互模塊中確定好相應的數(shù)量,程序開始模擬后就會建立相應數(shù)量的不同對象。
2.1.2模型模塊
由于本文的研究背景具體到某倉庫的實際業(yè)務,因此模型的整體布局是完全根據(jù)現(xiàn)場實際進行設置的,配置相對固定,組成元素也較為簡單,主要包括派單站點、下架站點、播種站點、貨架、AGV、下架工作人員、AGV行走網(wǎng)格。其中,派單站點、下架站點、貨架以及AGV行走網(wǎng)格數(shù)量固定,其余組成元素通過參數(shù)化建模方法,根據(jù)操作人員輸入的參數(shù)即各個對象的數(shù)量,系統(tǒng)自動完成場景的搭建。由于實際的業(yè)務并不涉及到多層揀選,因此最終搭建的場景通過二維平面的形式進行呈現(xiàn),如圖5所示。
圖5 仿真系統(tǒng)示例
1)派單站點模型。派單站點系統(tǒng)流程模型如圖6所示。播種完成或處于空閑狀態(tài)的AGV會自動前往派單站點接取下一個揀選單任務。
圖6 派單站點系統(tǒng)流程模型
派單站點主要擁有以下屬性與方法:
(1) AGV排隊隊列以及隊列中AGV的個數(shù)。當檢測到有新的AGV到達本站點后,其會將新到AGV放入隊列之中并將計數(shù)加一;當隊首的AGV完成派單后便會把此AGV從隊列中彈出并將計數(shù)減一。
(2) 當前站點坐標。用于AGV規(guī)劃行走路線時使用。
(3) 派單方法。對位于當前隊列首位的AGV進行派單,派單時間取現(xiàn)場實測的平均值,每運行一次,派單剩余完成時間便減一,派單完成的同時,AGV對象便會被賦予整套的行走流程。派單方法偽代碼如下所示:
1:if隊列中AGV數(shù)量>0 then2: if隊頭AGV派單時間==0 then3: 為隊頭AGV綁定一張揀選單4: 更改隊頭AGV狀態(tài)為“空閑狀態(tài)”5: 將隊頭AGV從隊列中彈出6:else7: 隊頭AGV派單剩余時間減1s8: end if9:end if
2) 下架站點模型。下架站點系統(tǒng)流程模型如圖7所示。
圖7 下架站點系統(tǒng)流程模型
在本次業(yè)務中一共有20個下架站點,這20個下架站點位于不同的巷道之中,編號依次從1到20。因此在仿真中需要創(chuàng)建20個下架站點模型,它們擁有部分相同的屬性與方法:
(1) AGV排隊隊列。當檢測到有新到AGV時便會將其放入排隊隊列;當有AGV完成當前站點的下架任務后,便會將其從隊列中取出。
(2) 下架人員隊列。隊列最大容量為2。當下架人員來到一個下架站點后,下架站點便會將其放入隊列之中。
(3) AGV停留坐標與下架人員停留坐標。分別用于AGV與下架人員規(guī)劃行走路徑時使用。
(4) 下架方法。當且僅當下架人員隊列中有人時,AGV才能夠進行下架,有幾個下架人員便可以同時對幾臺AGV進行商品下架操作。下架方法偽代碼如下所示:
1:if隊列中AGV數(shù)量>=2 then2: if隊頭AGV派單時間==0 then3: 更改隊頭AGV狀態(tài)為“空閑狀態(tài)”4: 將隊頭AGV從隊列中彈出5: else if當前站點下架人員數(shù)量>=16: 隊頭AGV派單剩余時間減1s7: end if8: if隊伍第二臺AGV派單時間==0 then9: 更改該AGV狀態(tài)為“空閑狀態(tài)”10: 將該AGV從隊列中彈出11: else if當前站點下架人員數(shù)量>=212: 該AGV派單剩余時間減1s13: end if14:else if隊列中AGV數(shù)量==1 then15: if隊頭AGV派單時間==0 then16: 更改隊頭AGV狀態(tài)為“空閑狀態(tài)”17: 將隊頭AGV從隊列中彈出18: else if當前站點下架人員數(shù)量>=119: 隊頭AGV派單剩余時間減1s20:end if
3)播種站點模型。播種站點系統(tǒng)流程如圖8所示。播種站點由多個子站點與一條緩沖隊列構成。一個子站點同時只能播種處理一臺AGV,當一臺AGV完成當前揀選單的所有任務后,會首先行走至播種站點的緩沖隊列,然后再被分配至空閑的子站點。
圖8 播種站點系統(tǒng)流程模型
(1) 緩沖隊列以及隊列中的AGV數(shù)量。用于暫存AGV,當AGV到達后會先將其放入緩沖隊列,待有空閑播種墻后,再將AGV從隊列中取出。
(2) 子站點隊列。仿真時根據(jù)播種墻數(shù)量創(chuàng)建相應數(shù)量的子站點并構成一個隊列,用于接收緩沖隊列中的AGV。
(3) 播種方法。對隊列中已經前往子站點的AGV進行播種,每次循環(huán)扣減機器人的處理時間。播種方法偽代碼如下所示:
1:for(int i=0;i<播種墻數(shù);++i)2: if當前播種墻有AGV3: if當前站點AGV播種完成4: AGV狀態(tài)更改為“空閑狀態(tài)”5: 將AGV從播種墻中彈出6: 播種墻狀態(tài)更改為“空閑”7: else8: AGV播種剩余時間減1s9: end if10: else if播種墻無AGV && 播種墻空閑11: if緩沖隊列中有AGV12: 更改隊頭AGV狀態(tài)為“空閑狀態(tài)”13: 將該AGV從隊列中彈出14: 當前播種墻狀態(tài)更改為“占據(jù)”15: end if16: end if17:end for
4) AGV模型。AGV系統(tǒng)流程模型如圖9所示。
圖9 AGV系統(tǒng)流程模型
在整個仿真中,只有兩種模型具有移動的功能,而AGV便是其中之一。它具有如下的屬性與方法:
(1) 狀態(tài)碼。共有三種狀態(tài),分別為行走中、工作中、空閑中,以0、1、2表示,用于分辨當前AGV的運行狀態(tài)。
(2) 編號。每臺AGV都擁有不同的編號,用于區(qū)分以及索引不同的AGV。
(3) 當前任務剩余時間。當AGV到達目標站點后便會開始在當前站點的任務,如派單、播種、下架等,此時便會不斷減少剩余時間,當剩余時間歸零時,當前站點的任務便會被判定為已完成,AGV就會離開當前站點。
(4) 目標站點。當AGV完成一個站點的任務后,便會更新當前的目標站點,后續(xù)的行走路線會根據(jù)目標站點進行計算。
(5) AGV坐標。記錄當前AGV此刻的坐標,用于行走路線的規(guī)劃。
AGV工作偽代碼如下所示:
1:switch(AGV狀態(tài)碼)2:case空閑:3: 更新AGV的目的地4: 更改AGV狀態(tài)為“行走”5: break6:case行走:7: if AGV到達目的地then8: AGV進入站點隊列9: 更改AGV狀態(tài)為“工作”10: else11: AGV向目的地繼續(xù)行走12: end if13: break14:case工作:15: break16:end switch
5) 下架人員模型。下架人員系統(tǒng)流程模型如圖10所示。下架人員為另一種具有移動功能的模型,只有有人在的下架站點才能夠正常工作。下架人員模型主要有以下的屬性和方法:
(1) 狀態(tài)碼。與機器人模型相同,分為空閑狀態(tài)、行走狀態(tài)、工作狀態(tài)等三種,用于分辨下架人員當前的狀態(tài)。
(2) 編號。每個人都擁有不同的編號,擁有區(qū)分以及索引不同的人員模型。
(3) 目標站點。當人員所在站點人數(shù)大于所需人數(shù)時,多余人員便會切換為空閑狀態(tài),此時才能觸發(fā)更新當前人員的目標站點,同時根據(jù)目標站點規(guī)劃行走路線。
圖10 下架人員系統(tǒng)流程模型
2.2.1動畫模塊
動畫模塊是本次車到人仿真研究的核心部分之一,其可以實時顯示仿真過程中各個模型的運行狀態(tài),包括派單站點、下架站點、播種站點、AGV以及下架人員。
動畫模塊主要依靠定時器不斷觸發(fā)各個模型更新狀態(tài)進行工作。當通過人機交互模塊完成定時器的設置后,便可以根據(jù)相應的周期觸發(fā)動畫場景更新。默認更新周期為1 ms,即每毫秒更新一次場景,仿真流程的主循環(huán)便是依靠動畫模型的定時更新完成。
1)具體流程。如圖11所示,采用可設置時間間隔的定時器觸發(fā)各個模型進行狀態(tài)更新,定時器觸發(fā)的每一幀都代表實際的每一秒,避免了時間與畫面更新速度不匹配的問題。定時器的時間間隔范圍為1~1 000 ms,可根據(jù)需要自由調節(jié)。
圖11 動畫模塊系統(tǒng)流程
動畫模塊的主循環(huán)偽代碼如下所示:
1:創(chuàng)建定時器2:while(觸發(fā)定時器)3: 調用派單站點派單方法4: 調用下架站點下架方法5: 調用播種站點播種方法6: 調用AGV工作方法7: 調用下架人員工作方法8: if達到設定循環(huán)次數(shù)9: break10: end if11:end while
2) 場景更新。動畫主循環(huán)的重點在于更新二維的業(yè)務場景,其中AGV與下架人員的位置是關鍵,而位置與路徑規(guī)劃密不可分。
從圖5可以看出,AGV的活動范圍是一個T形區(qū)域。在每一幀中,AGV都會根據(jù)自身當前坐標與目標坐標進行判斷,下一步該往哪個方向前進。其路徑規(guī)劃原則如圖12所示。
圖12 AGV路徑規(guī)劃原則
從圖5同樣可以看出,下架人員的活動范圍是一個由下架站點和機器人區(qū)域構成的魚骨區(qū)域,其行走原則如圖13所示。
圖13 下架人員路徑規(guī)劃原則
2.2.2輸出模塊
輸出模塊主要負責在仿真結束后將結果導出到一個TXT文本中,目前導出的結果主要為整個系統(tǒng)的完成單量、時間、播種墻數(shù)量、下架人員數(shù)量以及AGV數(shù)量,用于更好地呈現(xiàn)不同人員設備配置下的系統(tǒng)工作能力。
仿真中采用的訂單來源于簡化后的實際業(yè)務場景。在現(xiàn)場記錄實際揀選單中各個訂單的SKU數(shù)與商品件數(shù),同時記錄每臺AGV負責不同揀選單時在每個站點的停留時間,將所有數(shù)據(jù)以揀選單為單位進行匯總處理從而形成一個揀選單池,進行仿真時隨機從揀選單池中選擇一項派給AGV。AGV在各巷道下架停留時間如表1所示。
表1 AGV在各巷道下架停留時間統(tǒng)計
根據(jù)表1數(shù)據(jù),得出不同揀選單在各個站點下架時間的經驗公式,用于在仿真中生成模擬訂單。
(1)
式中:t為AGV在當前站點的下架時間;l為當前巷道的最遠揀選距離;ni為當前巷道每個SKU的件數(shù)。
設下架人員步行速度為1 m/s,由于在一條巷道中揀選需要一次往返,因此取時間為2l;每個巷道需要下架的SKU數(shù)越多,則停留時間越長,平均下架一件商品花費1 s,由于找貨具有不確定性,因此再乘以一個找尋系數(shù),取1~2之間的隨機數(shù);最后需要將所有商品倒入AGV的物料架中并放行,約花費5 s。
揀選單播種時間記錄如表2所示。
表2 揀選單播種時間記錄
根據(jù)經驗播種時間主要受到訂單行數(shù)量以及商品總件數(shù)的影響,得到以下經驗公式:
t=order×(1~3)+n×(2~5)
(2)
式中:t為播種總時間;order為訂單數(shù);n為商品總件數(shù)。
通過控制變量法,在不同AGV數(shù)量下,調節(jié)下架人員與播種墻數(shù)量,得到不同的揀選效率,如圖14所示。仿真結果如表3所示。
(a) 10臺AGV
(b) 20臺AGV
(c) 30臺AGV
(d) 40臺AGV圖14 不同配置下效率統(tǒng)計
表3 仿真結果
時間/hAGV數(shù)量下架人員數(shù)量播種墻數(shù)量完成單量9401052 1149402052 32394020104 49094020195 54094025195 95894030195 97794035195 94194040195 8479301052 1899301552 2949302052 16293010103 83193010193 77293015103 91893015194 18393020103 80593020194 50993025194 6449201052 058
續(xù)表3
從圖14中可以看出,將數(shù)據(jù)按照AGV數(shù)量分為4類(10、20、30、40),在每類中總體按照下架人員的數(shù)量進行排序,更進一步,在每個人員數(shù)量級別中再對播種墻數(shù)量從小到大進行排序(用分隔線分開)。最終可以得到較為清晰的結果。
(1) 從結果中可得不同數(shù)量AGV條件下的最大出單量,由于訂單生成具有隨機性,因此得出的結果具有浮動性。40臺AGV在9個小時不間斷的工作時間下最大單量約為5 900,30臺AGV約為4 600單,20臺AGV約為3 200單,10臺AGV約為1 600單左右。
(2) 從圖14可以看出,在固定的下架人員數(shù)量下,隨著播種墻數(shù)量的增加,最終出單量會趨于飽和;此外,將(a)-(d)進行對比觀察,在相同播種墻數(shù)量下,隨著下架人員數(shù)量的增加,最終出單量同樣會趨于飽和,因此可以從中選取最少的人員設備配置以獲取最大的出單效率。從當前的仿真結果中可以得出:40臺AGV的最佳配置約為30個下架人員,19個播種墻;30臺AGV約為20個下架人員,19個播種墻;20臺AGV約為10個下架人員,10個播種墻;10臺AGV約為10個下架人員,5個播種墻。
本文以實際倉庫業(yè)務為背景,研究設計了一個仿真程序用于優(yōu)化人員設備的配置數(shù)量,進行了數(shù)十次的仿真模擬,并簡單分析結果,得出以下結論:
(1) 本文在進行仿真時,引入了人的模型,由于現(xiàn)場實際操作時,人的工作狀態(tài)具有較高的隨機性,因此根據(jù)現(xiàn)場運營實測的數(shù)據(jù)構建了相應的數(shù)學模型,對比其他較為理想的仿真研究更加貼近現(xiàn)場實際,得出的結果更為真實。
(2) 本文根據(jù)實際業(yè)務的揀選流程進行了仿真研究,最終得到了在不同配置下的揀選效率以及最優(yōu)的數(shù)量配置:40臺AGV的最佳配置約為30個下架人員,19個播種墻;30臺AGV約為20個下架人員,19個播種墻;20臺AGV約為10個下架人員,10個播種墻;10臺AGV約為10個下架人員,5個播種墻。
(3) 本文在設計仿真程序時,有選擇性地采用了較為理想化的設計,例如忽略了AGV在移動時的避讓與擁堵以及在各個站點的排隊情況,而排隊與擁堵在現(xiàn)場實際中為不可忽視的因素,所以導致仿真結果與實際情況有所偏差,在今后的研究中需要考慮更為細致的路徑規(guī)劃與AGV之間的避讓問題。
(4) 本文在生成訂單時是根據(jù)現(xiàn)場的實際記錄時間進行隨機生成的,公式具有經驗性與隨機性,導致在相同配置下輸出的結果會有較大的浮動性,甚至會出現(xiàn)低人數(shù)配置的輸出結果高于高人數(shù)配置,因此需要在經驗公式加入更多的約束條件,進行完善與進一步的驗證。
(5) 本文的研究背景較為具體,但是整體的仿真架構以及更為細致地引入人的隨機性行為,對于日后的其他仿真研究具有一定的參考性。