本發(fā)明涉及物流配送技術(shù)領(lǐng)域,具體涉及物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng)。
背景技術(shù):
物流產(chǎn)業(yè)的快速發(fā)展推動了配送路徑問題的研究,在B2C電子商務(wù)模式下,商品需求多樣化、客戶需求個性化,配送小批量多次數(shù)的特征,需要確定適當?shù)呐渌吐肪€來滿足客戶在配送時間上的個性化要求。配送路徑的選擇是否合理,對加快配送速度、提高服務(wù)質(zhì)量、降低配送成本及增加經(jīng)濟效益都有較大影響。配送路徑的優(yōu)化問題是物流配送系統(tǒng)的一個主要問題,物流配送路徑的優(yōu)化就是以最低的運營成本、最快捷的響應(yīng)速度、最短的配送運輸時間,把貨物運至用戶手中。
在B2C農(nóng)產(chǎn)品電子商務(wù)物流配送時,物流車裝載當日需要配送的貨品從倉庫出發(fā),按照事先規(guī)劃好的最優(yōu)配送路徑為每一個客戶進行配送,最后返回倉庫。
隨著B2C農(nóng)產(chǎn)品電子商務(wù)物流配送的發(fā)展,路徑規(guī)劃已經(jīng)不僅僅是求取路徑最小化的問題,所要考慮的問題越來越復(fù)雜,傳統(tǒng)的精確解法已經(jīng)落后,傳統(tǒng)的優(yōu)化解法不僅費時而且要求求得最優(yōu)解,是一種理想化的求解方法。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是在配送之前能夠根據(jù)客戶的配送地址間線路間距、經(jīng)驗路況做分析,快速算出一條最優(yōu)配送路徑,在配送過程中,如果某路段堵車,能夠進行動態(tài)調(diào)整配送路線,為實現(xiàn)此目的,本發(fā)明提供務(wù)物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng)。
B2C農(nóng)產(chǎn)品電子商務(wù)物流配送,是以最低成本、最快響應(yīng)速度高質(zhì)量高效率的完成客戶的配送需求,需要精確的客戶地理位置數(shù)據(jù),從而規(guī)劃最優(yōu)配送路徑;在實際中能夠根據(jù)任意客戶之間路段的堵車情況進行動態(tài)調(diào)整。
最優(yōu)路徑規(guī)劃的目標是用戶的位置以及用戶的數(shù)量確定后,系統(tǒng)能夠立刻為所有用戶規(guī)劃出一條從倉庫到所有的客戶位置的最優(yōu)配送路徑。物流運送車在正常行駛時,如果發(fā)生堵車事件,立即調(diào)整行駛路線,重新規(guī)劃最優(yōu)路徑,實現(xiàn)動態(tài)調(diào)整配送路線;并且能夠在可視化的界面上進行生動的現(xiàn)實模擬,讓物流配送車沿著動態(tài)調(diào)整規(guī)劃的路線行駛,在界面上體現(xiàn)最優(yōu)配送路徑,達到最佳的現(xiàn)實模擬效果。
本發(fā)明的技術(shù)解決方案是:物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng),包括系統(tǒng)主界面、最短時間規(guī)劃、最短路徑規(guī)劃模塊;
所述系統(tǒng)主界面模塊,集合了最短時間和最短路徑的各種操作,主界面可以生成客戶數(shù)據(jù),包括客戶的地理位置和客戶的順序編號,以及倉庫的位置等,還有最短時間、最短路徑的按鈕,堵車路段的設(shè)置以及規(guī)劃的最優(yōu)路徑結(jié)果顯示;
所述最短路徑規(guī)劃模塊,包含了回朔法和改進的模擬退火算法處理最短路徑算法,以倉庫為中心,找到從倉庫經(jīng)過所有客戶再回到倉庫的最短路徑;
所述最短時間規(guī)劃模塊,將各個路段的速度根據(jù)需要設(shè)為不同值,計算物流貨車通過所有的客戶所需的最短時間。
所述系統(tǒng)主界面模塊,包括路徑顯示框、操作列表、操作框、效果顯示框、執(zhí)行提示框。
所述路徑顯示框,用來顯示客戶位置、客戶編號、倉庫位置、規(guī)劃路線、貨車運動情況以及堵車后動態(tài)調(diào)整規(guī)劃后的路徑顯示和貨車運動軌跡;鼠標左鍵點擊顯示框的任意位置,每點擊一次,便會生成一個客戶,有相應(yīng)的圓點顯示標記;所述規(guī)劃的路線最終是封閉的,在顯示框中表示為若干條兩點之間的一段直線相連接。
所述操作列表,包括了倉庫位置初始框、最短時間和最短路徑兩個按鈕;倉庫位置初始框用來設(shè)定倉庫的位置;選定倉庫位置后,點擊“最短時間”按鈕,對所有點,包括倉庫點和客戶點,進行最短時間規(guī)劃;點擊“最短路徑”按鈕,系統(tǒng)會對所有點進行最短路徑規(guī)劃;最短時間按鈕、最短路徑按鈕可隨意切換。
所述操作框,操作框中有一個“設(shè)置”按鈕,以及“設(shè)置堵車路段”的輸入提示。
所述效果顯示框,顯示貨車所在路段、時間及路徑最優(yōu)值。
所述執(zhí)行提示框,提示規(guī)劃后從倉庫到客戶再到倉庫的所有路徑的具體路線。
所述最短路徑規(guī)劃模塊,當客戶數(shù)量較少時采用回溯法,回溯算法作為程序的一個函數(shù);函數(shù)返回最短路徑長度,物流車的配送路徑由整型數(shù)組返回;若有兩客戶之間的路段發(fā)生堵車,則返回堵車信息;
排列空間樹中遞歸搜索最優(yōu)解,物流類Logistics是其一個必要的預(yù)處理過程;
假定表示保存當前物流車配送路徑的整型數(shù)組;表示保存當前規(guī)劃的最優(yōu)配送路徑的整型數(shù)組;整型變量表示保存當前節(jié)點之間的路徑長度;整型變量表示保存目前最優(yōu)解的長度值,已被定義為Logistics中的靜態(tài)數(shù)據(jù)成員。
回溯法深度搜索函數(shù)搜索第個客戶的過程如下:
(1)當時,表示處在排列樹的葉節(jié)點的父節(jié)點上,此時需要驗證從到有一條邊以及從到起點也有一條邊;若兩條邊都存在,則表示發(fā)現(xiàn)了一個新路徑;驗證該路徑是否目前發(fā)現(xiàn)的最優(yōu)路徑;若是,則將路徑和它的長度分別存入與中;
(2)當時,檢查當前層節(jié)點的孩子節(jié)點,并且僅當以下情況出現(xiàn)時,移動到孩子節(jié)點之一:
①有從到的一條邊,定義了網(wǎng)絡(luò)中的一條路徑;
②路徑的長度小于當前最優(yōu)解的長度;
③變量保存目前所構(gòu)造的路徑的長度;
每次找到一個更好的配送路徑時,除了更新時的時間耗費外,需耗時;又因為需發(fā)生次更新且每一次更新的耗費為時間,因此更新所需時間為;通過使用增加強一些限制性條件能減少由搜索的樹節(jié)點的數(shù)量。
所述減少搜索時間的限制性條件如下:
(1)當時,當前擴展結(jié)點位于排列樹的第層;排列樹中存在從頂點到頂點的邊時,從而構(gòu)成一條路徑;因此,如果這條路經(jīng)的成本大于當前最優(yōu)值,則剪去相應(yīng)的子樹,從而減少搜索最優(yōu)解的計算量;
(2)當物流車在配送過程中出現(xiàn)堵車時,由于已經(jīng)走過的路經(jīng)不需要再規(guī)劃,只需要對未走過的路線進行規(guī)劃;因此,只對未訪問的結(jié)點進行優(yōu)化可以節(jié)省大量的優(yōu)化時間。
所述最短路徑規(guī)劃模塊,當客戶數(shù)量較多時采用改進的模擬退火算法,改進的模擬退火算法新解的產(chǎn)生和接受可分為如下5個步驟:
(1)由蟻群算法產(chǎn)生一個位于解空間的新解;
(2)計算與新解所對應(yīng)的目標函數(shù)差,目標函數(shù)差按增量計算;
(3)判斷新解是否被接受, 判斷的依據(jù)是一個接受準則, 接受準則是Metropolis準則;
(4)當新解被確定接受時,用新解代替當前解,將當前解中對應(yīng)于產(chǎn)生新解時的變換部分予以實現(xiàn),同時修正目標函數(shù)值;此時,當前解實現(xiàn)了一次迭代;在此基礎(chǔ)上開始下一輪試驗;當新解被判定為舍棄時,則在原當前解的基礎(chǔ)上繼續(xù)下一輪試驗;
(5)如果迭代次數(shù)還未達到最大迭代次數(shù),則重復(fù)步驟(2),(3),(4);否則,尋優(yōu)過程結(jié)束。
所述螞蟻群法,其步驟如下:
Step1:路徑初始化;將只螞蟻隨機放到個客戶點,每只螞蟻的禁忌表為螞蟻當前所在客戶點,各邊信息初始化為;
Step2:路徑構(gòu)造;每只螞蟻按照概率轉(zhuǎn)換規(guī)則選擇下一個客戶點,依次下去直到條不同路徑;
Step3:信息更新;每次找到一個客戶點后,將信息素、當前路徑長度、最優(yōu)路徑長度進行更新;
Step 4:得出結(jié)果;當執(zhí)行到足夠多的次數(shù)后,得到了最優(yōu)路徑的近似解。
所述最短路徑規(guī)劃模塊、所述最短時間規(guī)劃模塊中整個物流車在配送過程中為動態(tài)規(guī)劃路徑,步驟如下:
(1)配送矩陣;導(dǎo)入客戶間的權(quán)重信息;如果客戶與客戶之間能夠直達,則;否則,;
(2)最優(yōu)路徑初始化;,其中表示倉庫,表示個客戶;
(3)選定倉庫;令,其中可以是集合中的任何一個整數(shù);
(4)求物流車出發(fā)前的最優(yōu)路徑;通過回溯法或改進的模擬退火算法依次選定,,,,則就是當前物流車的最優(yōu)路徑;
(5)配送過程中的動態(tài)規(guī)劃;如果物流車在行進的過程中遇到堵車,則需要根據(jù)物流車的當前情況進行調(diào)整;用回溯法或改進的模擬退火算法具體調(diào)整如下:
①如果堵車路段發(fā)生在物流車已經(jīng)通過的路段,則物流車不需要變更配送路線;
②如果物流車還有兩個客戶或一個客戶沒有配送,則即使發(fā)生堵車,物流車除了等待而別無選擇;
③如果堵車事件不是發(fā)生在物流車的規(guī)劃路線上,物流車同樣不需要變更配送路線;
④如果不是上述三種情形,則需要用回溯法對所有未配送的客戶重新規(guī)劃最優(yōu)路徑;
(6)循環(huán);重復(fù)步驟(5),直至物流車配送結(jié)束。
本發(fā)明的有益效果是:用戶可以在模擬系統(tǒng)界面上隨機標注倉庫與客戶的地址;模擬系統(tǒng)可根據(jù)用戶選擇的路徑規(guī)劃策略,如最短路徑、最少時間等進行配送路線規(guī)劃;模擬系統(tǒng)可根據(jù)某條路段堵車后進行動態(tài)調(diào)整,重新對配送路線進行規(guī)劃;模擬系統(tǒng)界面上可以模擬車輛從倉庫出發(fā),沿著規(guī)劃的配送路線行進,最后返回倉庫。在配送過程中可模擬前方行進路線堵車事件,模擬系統(tǒng)能夠繞開堵車路段動態(tài)規(guī)劃配送路線。
附圖說明
圖1是物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng)總體結(jié)構(gòu)圖。
圖2是模擬系統(tǒng)主界面圖。
圖3是最短路徑規(guī)劃效果圖。
圖4是遇到堵車時的最短路徑規(guī)劃效果圖。
圖5是最短時間規(guī)劃效果圖。
圖6是最短時間規(guī)劃效果圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明做進一步地說明。
物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng)結(jié)合了回朔法、模擬退火算法、蟻群算法,當客戶數(shù)量較少時采用回朔法,當客戶數(shù)量比較多時,采用人工智能算法的改進的模擬退火算法。
物流配送中最優(yōu)路徑規(guī)劃模擬系統(tǒng)分為幾個相對獨立的模塊。分層的模塊化設(shè)計思想,系統(tǒng)采用模塊化程序設(shè)計結(jié)構(gòu),作為應(yīng)用程序有較強的可操作性和可擴展性;結(jié)構(gòu)層次分明,組織完備,清晰簡明。由上到下,系統(tǒng)依次調(diào)用各個模塊,滿足用戶需求;系統(tǒng)負責準確調(diào)用,實現(xiàn)用戶選擇的規(guī)劃策略,即最短時間或者最短路徑。
如圖1,物流配送路徑規(guī)劃模擬系統(tǒng)分為系統(tǒng)主界面、最短時間規(guī)劃、最短路徑規(guī)劃三個模塊;系統(tǒng)運行環(huán)境:Microsoft Visual C++6.0。
如圖2,系統(tǒng)主界面集合了最短時間和最短路徑的各種操作,主界面可以生成客戶數(shù)據(jù),包括客戶的地理位置和客戶的順序編號,以及倉庫的位置等,還有最短時間、最短路徑的按鈕,堵車路段的設(shè)置以及規(guī)劃的最優(yōu)路徑結(jié)果顯示。
最短路徑規(guī)劃模塊包含了回朔法和改進的模擬退火算法處理最短路徑問題,以倉庫為中心,找到從倉庫經(jīng)過所有客戶再回到倉庫的最短路徑。
最短時間規(guī)劃模塊中將各個路段的速度設(shè)為不同的隨機值,計算物流貨車通過所有的客戶所需的最短時間。
系統(tǒng)采用MFC標準界面,所有相關(guān)操作均集合在此界面上。
系統(tǒng)界面除以上所述基本信息外,分為五個部分;分別是路徑顯示框、操作列表、操作框、效果顯示框、執(zhí)行提示框。
路徑顯示框是用來顯示客戶位置、客戶編號、倉庫位置、規(guī)劃路線、貨車運動情況以及堵車后動態(tài)調(diào)整規(guī)劃后的路徑顯示和貨車運動軌跡。鼠標左鍵點擊顯示框的任意位置,每點擊一次,便會生成一個客戶,有相應(yīng)的圓點顯示標記。其中規(guī)劃的路線最終是封閉的,在顯示框中表示為若干條兩點之間的一段直線相連接。當選定了倉庫位置后,倉庫處顏色變?yōu)樗{色,使易于辨識。
操作列表中包括了倉庫位置初始框、最短時間和最短路徑兩個按鈕。倉庫位置初始框是用來設(shè)定倉庫的位置,但前提是必須先有客戶點,這樣才能從其中選擇一個點作為倉庫。為方便操作,系統(tǒng)將倉庫的位置默認為1(即第一個客戶點)。只有選定了倉庫之后,才能進行最短路徑或者最短時間規(guī)劃。點擊“最短時間”按鈕,系統(tǒng)對所有點(包括倉庫和所有客戶點)進行最短時間規(guī)劃。點擊“最短路徑”按鈕,系統(tǒng)會對所有點進行最短路徑規(guī)劃。并且,兩者是可以隨意切換的。
操作框中有一個“設(shè)置”按鈕,以及“設(shè)置堵車路段”的輸入提示。設(shè)置的堵車路段必須是路徑顯示框中已經(jīng)規(guī)劃好的某一條確定路段,如果隨意設(shè)置不存在的堵車路段,系統(tǒng)會有“堵車路線不存在”的信息提示,如果設(shè)置的多次路段是正確的,但是貨車已經(jīng)通過或正在通過所設(shè)定的路段,系統(tǒng)會有“堵車信息提示已經(jīng)晚了”的提醒,并且如果貨車即將回到倉庫,即處在最后或者倒數(shù)第二條路段上,這時設(shè)置堵車路段,由于馬上要到倉庫了,已經(jīng)經(jīng)過了其他所有的客戶必須走剩下的路段,因此,系統(tǒng)會有“堵車提示信息無效,即將回到倉庫”的提示信息。需要注意的的是,在設(shè)置堵車路段時,可以按照執(zhí)行提示框的貨車行駛路段信息進行準確設(shè)置,這樣更具體,否則,如果不正確的設(shè)置,會有相應(yīng)錯誤信息的提醒。這個“設(shè)置”不僅僅可以設(shè)置一次堵車,還可以多次設(shè)置多次路段,實現(xiàn)多路段堵車也能夠動態(tài)調(diào)整動態(tài)規(guī)劃。
效果顯示框包含貨車所在路段和時間(路徑)最優(yōu)值兩塊。貨車所在路段顯示的是貨車當前正在行駛的路段,這個路段由該路段兩端的客戶編號以及一個箭頭組成,并且,該顯示是動態(tài)的,即當貨車到達另一路段時,貨車所在路段也會相應(yīng)地顯示另一路段的客戶編號。當在操作列表中點擊“時間最短”,效果顯示框的下方便顯示時間最優(yōu)值,當在操作列表選擇“路徑最短”時,效果顯示框的下方便顯示路徑最優(yōu)值。
執(zhí)行提示框提示的是規(guī)劃后從倉庫到客戶再到倉庫的所有路徑的具體路線。只有選擇了“時間最短”或者“路徑最短”,執(zhí)行提示框才會有具體的路線顯示。并且,執(zhí)行提示框的信息也是動態(tài)的,當“時間最短”和“路徑最短”之間發(fā)生切換,或者設(shè)置堵車路段生效時,執(zhí)行提示框會根據(jù)系統(tǒng)動態(tài)的規(guī)劃調(diào)整變化進行路線的動態(tài)顯示。使貨車行駛的所有具體路線一目了然。