鄭振宇,袁紅兵,徐正林
(1.南京理工大學 機械工程學院,南京 210000;2.江蘇六維智能物流裝備股份有限公司,211121)
自動化立體倉庫(以下簡稱為AS/RS)作為現(xiàn)代物流系統(tǒng)的核心和樞紐,被廣泛運用于各個行業(yè)。AS/RS的作業(yè)效率影響著整個物流系統(tǒng)的效率。因此,AS/RS的優(yōu)化調度是一個非常重要的課題。由于對已建成的AS/RS進行調度研究既復雜又影響使用,對AS/RS進行建模仿真是研究AS/RS優(yōu)化調度問題有效且經濟的手段。
AS/RS是典型的離散事件動態(tài)系統(tǒng)。離散事件動態(tài)系統(tǒng)的模型一般可以用流程圖進行描述。建模時需要根據具體的系統(tǒng)模型情況,充分反映臨時實體在系統(tǒng)中歷經的過程、永久實體對臨時實體的作用,以及它們之間的邏輯關系[1]。用于離散事件動態(tài)系統(tǒng)模型建模和分析的方法有很多,常用的有時態(tài)邏輯方法、排隊網絡方法、極大代數法、專家系統(tǒng)方法、遺傳算法、Petri網等[2]。SimPy是一個基于標準Python的離散事件仿真框架,利用SimPy和Python強大的數據分析功能,可以很方便的構建AS/RS的仿真模型并進行分析優(yōu)化。
本文通過對某公司流通性倉庫的出入庫作業(yè)進行建模仿真,并輸出包含系統(tǒng)總運行時間、各個設備的空閑率等結果,同時在建模時對AS/RS運行過程中資源分配沖突的點設置不同的調度規(guī)則。通過分析AS/RS在不同的調度規(guī)則下完成一定量任務的輸出結果,來實現(xiàn)優(yōu)化調度規(guī)則的目的。
如圖1所示,該AS/RS主要由貨架區(qū)、堆垛機、出入庫臺、輸送線、RGV、出入口組成。貨架區(qū)由多排高層貨架組成,每一個巷道兩側各有一單伸位貨架,并由一臺堆垛機負責貨物的存取。在巷道口各有一出入臺,可容納一個托盤。出入臺與輸送線相連,輸送線除了運送貨物還起到貨物緩存區(qū)的作用。RGV負責將貨物在輸送線和出入口之間運輸并取放。
圖1 AS/RS布局圖
入庫時,貨物被叉車搬運到入口,由RGV運送到上位機分好的巷道,若此時緩存區(qū)還有空位,則直接被放入緩存區(qū)等待堆垛機入庫到上位機分好的貨位,否則就在該巷道等待直到入庫臺有空位。出庫時,由上位機分配好的巷道堆垛機前往上位機指定的位置取貨,送往該巷道出庫臺,若出庫臺還有空位則直接放入,等待RGV取走并送往出口,否則等待直到出庫臺有空位。
SimPy是以進程為基礎的離散事件仿真框架。所有活動主體,如車輛、顧客,都可以用進程(process)來模擬。這些進程存放在環(huán)境(environment)中。進程之間,以及進程與環(huán)境之間,通過事件(event)來進行交互。
進程由Python中的生成器(generators)實現(xiàn),其采用的時間推進機制為下一事件時間推進機制。在進程中可以構建事件并通過yield語句拋出事件。當一個進程拋出事件,進程會被暫停,直到事件被激活。多個進程可以等待同一個事件,SimPy會按照這些進程拋出的事件激活的先后來恢復進程[3]。
事件中最重要的一類事件是Timeout,這類事件允許進程經過一段時間后再被激活,用來表達一個進程休眠或者活動持續(xù)了一段時間。
SimPy中還有一類重要的概念是資源(Resource)類。資源類可以表達人力、設備資源的分配或者生產過程中物料的消耗。資源類通過request()方法來表達資源的占用,遵循先到先得的原則,其子類則可以實現(xiàn)優(yōu)先級隊列。
AS/RS中的貨物資源、設備資源和調度規(guī)則都是互相獨立的對象,通過面向對象抽象聚合的方法就可以建立獨立的對象類。
AS/RS模型可以分為以下四類:
1)設備類:這是AS/RS實現(xiàn)功能的載體,具體可以派生出運輸設備類、儲存設備類等。而運輸設備類又可以進一步派生出堆垛機類、RGV類,儲存設備類也可以進一步派生出貨架類、出入臺類等。每個類都有名字和狀態(tài)屬性,以及各自對應的工作方法。
2)調度規(guī)則類:調度規(guī)則類由一系列調度規(guī)則組成,AS/RS中發(fā)生資源搶占和資源分配時,通過調度規(guī)則可以作出資源分配決策。合適的選擇調度規(guī)則可以提高工作效率。本文涉及的規(guī)則調度包括出/入庫貨位選擇、堆垛機響應間隔、貨位分區(qū)、RGV響應間隔、RGV調度,其余設備資源的分配決策均為先到先服務(FCFS)。
3)出入庫分發(fā)類:該類對象的實例負責將任務訂單分發(fā)給入庫/出庫兩個模塊,并根據入庫/出庫設備是否空閑安排入庫/出庫的執(zhí)行。
4)任務類:任務類包含任務訂單與過賬兩部分。任務訂單即入庫/出庫的貨物及數量。由于整個模型事件高度并發(fā),很難追蹤最后一個執(zhí)行的任務,為了統(tǒng)計所有任務訂單完成所需的時間,需要加入過賬系統(tǒng)對任務執(zhí)行完畢的數量進行統(tǒng)計,當過賬數量等于訂單總數時的系統(tǒng)時間即為完成訂單的總耗時。
整個模型的類圖如圖2所示。
結合上述分析的AS/RS模型類圖,可以根據其聚合關系,建立AS/RS各個模塊的工作流程圖。
通過信息傳遞接口M1-M7的連接,圖3~圖6共同構成了AS/RS的工作流程圖。由于出/入庫臺、出入庫緩存區(qū)僅僅起到傳遞任務指令的作用,故沒有畫出其工作流程圖。圖3所示的各個子進程也就是AS/RS的各個功能模塊。信息傳遞接口M1-M7的含義如下:
1)M1:貨位分配進程的信息入口,傳入貨物種類信息;
2)M2:貨位分配進程的信息出口,傳出分配好的貨位信息;
3)M3:RGV調度進程的信息入口,傳入任務指令中的起始設備位置;
4)M4:RGV調度進程的信息出口,傳出分配好的RGV;
5)M5:堆垛機工作進程的信息入口,傳入任務指令;
圖2 AS/RS的類圖
圖3 AS/RS總進程流程圖
圖4 出入庫分發(fā)進程、入庫進程、出庫進程流程圖
6)M6:RGV工作進程的信息入口,傳入任務指令;
7)M7:過賬進程的信息入口,傳入過賬信息。
本文根據某公司AS/RS的實際運行情況,設置了如下調度規(guī)則集:
1)RGV巷道分區(qū)
本文研究的AS/RS含有兩輛RGV。在直線往復式雙RGV的調度研究中[4],是否對RGV的可達巷道進行劃分以及如何劃分是一個影響AS/RS工作效率的重要因素。本文設置的RGV分區(qū)規(guī)則為:不分區(qū)、按巷道進行分區(qū)(例如三巷道可以分為1-2或2-1,每個RGV只執(zhí)行對應分區(qū)巷道的工作任務)。
2)出庫貨位選取
出庫貨位選取規(guī)則分為:出庫行優(yōu)先、出庫列優(yōu)先、出庫行列優(yōu)先、隨機出庫。其中出庫行優(yōu)先即選擇離出庫緩存區(qū)行最近的貨位;出庫列優(yōu)先即選擇離出庫緩存區(qū)列最近的貨位;出庫行列優(yōu)先即選擇離出庫緩存區(qū)行列綜合最近的貨位。
3)入庫貨位選取
入庫貨位選取規(guī)則跟出庫選區(qū)規(guī)則一樣,區(qū)別只在于出庫是從有貨的貨位進行選擇,入庫是從空貨位進行選擇。
同時,本文將各種調度規(guī)則與實數綁定為字典dict(例如規(guī)則1、2、3、4分別和實數1、2、3、4對應綁定),通過實數(key)即可在仿真時調用不同的調度規(guī)則。
本文設計的AS/RS仿真模型具有以下特點:
1)可拓展性強
圖5 貨位分配進程、RGV調度進程流程圖
圖6 堆垛機工作進程、RGV工作進程、過賬進程流程圖
設備類方面,由于采用了面向對象的設計思路并進行了功能并發(fā)拆分,該模型的設備數量可以根據實際情況進行增刪而無需太多代碼的改動。
調度規(guī)則類方面,本模型根據實際工程應用,在資源分配沖突的地方預設了一些規(guī)則調度集,采用與實數綁定為字典(dict),通過一組實數就可以進行調度規(guī)則的配置。如有需要,可增添調度規(guī)則來觀察分析新的仿真結果,并且只需要在相應的規(guī)則集字典類添加新規(guī)則算法的綁定即可。同時Python作為膠水語言,可以不通過代碼改寫的方式就可以綁定并調用封裝好的用其他平臺語言開發(fā)的調度規(guī)則算法API,在做調度優(yōu)化的時候實現(xiàn)多端多平臺合作。
2)運算輕量級
本模型使用SimPy作為離散事件仿真框架,由于其進程通過generator(構造器)而非真正意義上的process實現(xiàn),整個仿真運行耗時、耗資源很少,非常方便進行大量的規(guī)則調整搭配并進行結果分析。
3)數據統(tǒng)計接口豐富且可定制
行業(yè)上其實已經存在了一些用于離散事件系統(tǒng)的工業(yè)仿真軟件。但這類仿真軟件往往針對某些特定場合高度定制化,提供的數據接口往往不全,缺乏通用的數據庫接口,難以滿足從多方面數據進行分析評估的需求。而且這類仿真軟件通常固定了程序開發(fā)的語言平臺,無法滿足多平臺開發(fā)的需求。
本文使用了一組虛擬倉庫設備參數來進行整個系統(tǒng)的仿真,并忽略堆垛機、RGV運行時的加減速。具體的參數如表1所示。
表1 仿真參數表
本文選擇的調度規(guī)則為巷道不分區(qū)、出庫行列優(yōu)先、入庫行列優(yōu)先。
基于優(yōu)化AS/RS運行效率的角度(縮短AS/RS完成一定量任務的總時間),本次仿真只調用AS/RS總運行時長數據接口。仿真結果如表2所示。
表2 仿真結果表
本文基于Python平臺的SimPy包設計了一個AS/RS的仿真模型,很好的反映出了AS/RS運行時的資源沖突、搶占情況,以及高并發(fā)的特性。同時在模型中設置了規(guī)則調度集,方便后續(xù)通過規(guī)則調度的方式對整個立體庫系統(tǒng)進行調度優(yōu)化。
另外,本模型可提供多層次的數據接口,包括總運行時長、堆垛機空閑率、RGV空閑率等,可方便以后從多個目標(例如效率最高、設備空閑率最低等)進行調度優(yōu)化。