數(shù)字中國·星火文集 | 神州金庫系統(tǒng)中的裝箱算法
- 發(fā)布時(shí)間:2022-06-10
- 來源:
- 大 中 小
- 打印
神州金庫系統(tǒng)中的裝箱算法
神州控股
龔志峰
神州金庫作為科捷自有研發(fā)系統(tǒng),為客戶提供B2B/B2C全供應(yīng)鏈提供一體化服務(wù),,可前端訂單接入,、中端訂單數(shù)據(jù)處理(OMS、BMS,、WMS,、TMS等)、大數(shù)據(jù)處理等,,亦可對接智能化設(shè)備,。通過全國倉包材使用情況統(tǒng)計(jì),發(fā)現(xiàn)B2C業(yè)務(wù)裝箱問題比較突出,,一是:包材選用不合理,,人工裝箱時(shí)沒有邏輯規(guī)則概念,導(dǎo)致每年該部分損耗嚴(yán)重,;二是:箱材的選用影響效率,,且準(zhǔn)確率低。裝箱問題在倉儲物流行業(yè)也是普遍存在的難題,,紛紛進(jìn)行裝箱算法研究,。據(jù)網(wǎng)上的公開信息,阿里對裝箱問題進(jìn)行的研究,,其物流算法統(tǒng)計(jì),,平均可以減少5%的包裝,2017年雙十一發(fā)貨量超過10億件,,可節(jié)省4500多萬個(gè)箱子,。推行菜鳥電子面單替代傳統(tǒng)三聯(lián)面單,阿里電商平臺上商家使用率已經(jīng)達(dá)到80%,,每一年節(jié)約紙張費(fèi)用達(dá)12億元,。科捷依托神州金庫對該方面的問題進(jìn)行了不斷的研究和探索,。
01
關(guān)于三維裝箱問題主要從以下幾個(gè)方面進(jìn)行探討
三維裝箱問題算法:
裝箱工人在裝箱過程中需要對訂單的商品選擇箱型,,評估商品體積和箱子容積的正確比例,這一過程極其耗費(fèi)資源,,給倉庫作業(yè)帶來困難的同時(shí)還降低了作業(yè)效率,。其次,所送商品會出現(xiàn)裝箱不合理的情況,,如,,顧客只是買一款體積很小的商品,收到的確是一個(gè)很大很空的箱子,,浪費(fèi)資源的同時(shí),,也給用戶帶來困惑,同時(shí)零售商的專業(yè)性也遭到了質(zhì)疑,。
三維裝箱規(guī)則:
1) 所有箱子均視為標(biāo)準(zhǔn)的長方體或者正方體,。長寬高為內(nèi)圍長寬高。
2) 所有商品均描述為矩形,,長寬高為外圍長寬高,。
3) 裝箱時(shí),優(yōu)先放置大件商品,。如果大件商品放不滿的情況下,,考慮次小商品,直到放滿為止,。
4) 裝箱時(shí),,優(yōu)先選擇容積小的箱子。容積更小的箱子如果能夠裝下商品,,則剩余容積會更小,,說明箱子更適合商品。其次優(yōu)先選擇常規(guī)指數(shù)最大的箱子(值越大越常規(guī),,值越小表示是非常規(guī)箱型甚至是特型箱),。
5) 如果訂單中的商品恰好已經(jīng)裝完,箱子未滿,,嘗試更換容積更小的箱子,。如果爆箱則換回原來的箱型,。
6) 如果訂單中的商品恰好已經(jīng)裝完,出現(xiàn)爆箱,,嘗試更換小一號箱子,,后繼續(xù)裝箱剩余商品。如果此時(shí)箱子已經(jīng)是最小,,則更換成多個(gè)箱子裝箱,。
7) 將箱型按照容積從小到大的順序排列。如果箱子裝不滿優(yōu)先嘗試小的箱型,。
8) 箱子優(yōu)先放置大件商品,,然后放置次大商品,最后放訂單中最小的商品,。
9) 如果所有的箱子都不能一個(gè)箱子裝下單個(gè)訂單內(nèi)的全部商品,,才會啟用多個(gè)箱子來裝商品。
對一次裝箱過程進(jìn)行了分解,,每次需要一個(gè)商品和一個(gè)空箱子,,同時(shí)會產(chǎn)生三塊新的更小的剩余空間。這三塊剩余空間又可以看作是新的箱子,。和新的合適自己的空間大小的商品去匹配,。
那么,這就是一個(gè)遞歸算法,,方法輸入一款商品和一個(gè)箱子,,每一次遞歸都會產(chǎn)生三個(gè)新的箱子,新的箱子又可以裝入其它更小的商品,。
如此循環(huán)往復(fù),,直到每一個(gè)新的箱子連最小的商品都裝不下了,或者沒有任何商品可以裝進(jìn)箱子里了,,這個(gè)過程就會自動結(jié)束,。這是遞歸的出口條件。
02
目前使用較多的算法
1) Heuristic Algorithm啟發(fā)式演算法:工業(yè)應(yīng)用,,時(shí)間短,。用于在合理時(shí)間內(nèi)找到可接受的擺放方式(結(jié)果)。
2) Exact Methods精準(zhǔn)算法:學(xué)術(shù)應(yīng)用,,用于研究Global Optimality,,Solution Error Bound。最早的數(shù)學(xué)編程模型,,混合整數(shù)線性規(guī)劃模型,,但是,利用整數(shù)規(guī)劃解決問題不太現(xiàn)實(shí),計(jì)算量太大不好實(shí)現(xiàn),,很難用線性的求解器去精準(zhǔn)解決非線性的問題
3) Three-dimensional open-dimension rectangular packing probloems(3D-ODRPP),。
3D-ODRPP算法詳解:
a) box_selection:選出所有箱子中最小體積的那個(gè);輸入:所有箱子體積,;輸出:輸出已打包物品清單,,找到的最小箱型,;pack_boxes:判斷單個(gè)箱子打包所有物品,;輸入:單個(gè)箱子體積;輸出:輸出已打包物品清單,。
b) pack_boxes:判斷單個(gè)箱子打包所有物品,;輸入:單個(gè)箱子體積;輸出:輸出已打包物品清單,;insert_items_into_dimensions:將需要打包的物體塞進(jìn)給定體積,;輸入:剩余長方體體積,需要打包物品,,已打包物品,;輸出:剩余長方體體積(更新),需要打包物品(更新),,已打包物品(更新),。
c) insert_items_into_dimensions:將需要打包的所有物體塞進(jìn)給定體積;輸入:剩余長方體體積,,需要打包物品,,已打包物品;輸出:剩余長方體體積(更新),,需要打包物品(更新),,已打包物品(更新)。best_fit:將需要打包單個(gè)物體放進(jìn)給定體積并給出最好切割方法,;輸入:給定長方體體積,,物品體積;輸出:剩余長方體體積,,三個(gè)長方體,。
03
針對以上算法進(jìn)行算法測試設(shè)計(jì)
對比1:和僅考慮總體積的情況比較。僅考慮體積篩選會選出一些箱型會擺放不開的小箱子,,進(jìn)行篩選和比較,。例:物體體積小但特別長。
對比2:和僅考慮總體積+能容納所有物體三邊的情況比較,。此種篩選會篩選掉因?yàn)槲矬w過長而放不進(jìn)去的小箱子,,依然會選出些擺放不下所有物體的小箱子。例:物體形狀平均但因?yàn)槲恢藐P(guān)系擺放不下,。
對比3:先和Ortools的結(jié)果對比,。因?yàn)镺rtools跑出來的結(jié)果不夠理想,,起碼要比Ortools的表現(xiàn)好。從良品鋪?zhàn)游锲非鍐魏蜕蜿柫计?包材維護(hù)中抽取隨機(jī)訂單,,訂單長度(0-6個(gè)),。(因?yàn)橐话愕挠唵未笮《荚谶@個(gè)范圍內(nèi))看看生成的箱型是否比Ortools的小一些。
04
真實(shí)數(shù)據(jù)測試
選用200個(gè)出庫運(yùn)單,,每個(gè)運(yùn)單對應(yīng)一個(gè)箱子,,箱子中物體從1到21不等。數(shù)據(jù)來源沈陽良品庫,,9個(gè)箱型,。已刪除0體積物品(贈品海報(bào)一類)。無拆單,,拆單率不足1%,。
結(jié)論:200個(gè)出庫運(yùn)單中,表現(xiàn)最好的是3DFFD先放長物體的策略,,和之前隨機(jī)訂單生成的測試結(jié)果一致,。
05
算法表現(xiàn)分析
算法進(jìn)行的是切割。再拼湊的問題,,會直接拋棄掉一些放不進(jìn)東西的體積(優(yōu)化),。切割是演變式算法的弊端,不好規(guī)避,。訂單的物品越少,,切割次數(shù)越少,效率會越高,。和之前隨機(jī)訂單生成的測試結(jié)果一致,,3DFFD是表現(xiàn)最好的算法。對表現(xiàn)不好的案例分析,,算法本身的效率不低,,差值存在于對物品的擠壓狀況。切割體積造成的問題,。