本發(fā)明屬于路徑規(guī)劃領(lǐng)域,特別涉及一種基于時(shí)間代價(jià)函數(shù)的時(shí)間窗路徑規(guī)劃沖突解決方法。
背景技術(shù):
agv最早出現(xiàn)于上世紀(jì)50年代,可配備電磁或光學(xué)導(dǎo)引裝置,同時(shí)配置可編程模塊供開發(fā)人員靈活使用,是一種無人駕駛的智能化搬運(yùn)設(shè)備,是現(xiàn)代工業(yè)自動化物流系統(tǒng)的重要設(shè)施之一。發(fā)展智能agv小車代替人工運(yùn)輸,將倉庫實(shí)現(xiàn)無人化、智能化、自動化,提高運(yùn)輸效率,減少人為干預(yù),降低安全風(fēng)險(xiǎn),節(jié)省運(yùn)輸成本,是現(xiàn)代倉儲運(yùn)輸行業(yè)迫在眉睫的需求。本發(fā)明所涉及的沖突解決方法,適用于倉儲物流企業(yè)中的多agv運(yùn)輸系統(tǒng)。
另外,隨著計(jì)算機(jī)技術(shù)等前沿學(xué)科的飛速發(fā)展,路徑規(guī)劃技術(shù)在agv系統(tǒng)運(yùn)行中是不可缺少的重要組成部分。路徑規(guī)劃是指在具有障礙物的環(huán)境中,按照一定的評價(jià)標(biāo)準(zhǔn)(評價(jià)標(biāo)準(zhǔn)通常是時(shí)間或距離),尋找一條從起始狀態(tài)到目標(biāo)狀態(tài)的無碰撞路徑。在本發(fā)明中,我們采用dijkstra算法計(jì)算單個(gè)任務(wù)的最短路徑。
時(shí)間窗算法是目前多agv系統(tǒng)中國內(nèi)外學(xué)者比較認(rèn)可的一種車輛之間沖突檢測的方法。因此,在本發(fā)明中,我們借助時(shí)間窗來計(jì)算多agv之間的路徑?jīng)_突,并且通過計(jì)算兩個(gè)代價(jià)函數(shù)來決定采取等待策略或二次規(guī)劃策略來解決沖突。
目前,傳統(tǒng)倉儲物流產(chǎn)業(yè)由于極度依賴人力資源并且效率低下的原因,已經(jīng)逐漸被時(shí)代所淘汰,企業(yè)正逐步尋求自動化的生產(chǎn)模式來代替人工操作。agv作為智能運(yùn)輸系統(tǒng)中最重要的一環(huán),可以極大地節(jié)省人力成本,滿足于各種類型企業(yè)的倉儲運(yùn)輸需求,逐漸成為企業(yè)對倉儲進(jìn)行自動化升級的首選方案。同時(shí)多agv系統(tǒng)中的資源分配和沖突問題也是當(dāng)前的研究熱點(diǎn)之一。本發(fā)明所設(shè)計(jì)的基于時(shí)間窗路徑規(guī)劃算法的沖突解決方法可以很好的滿足上述需求。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種提高倉儲物流企業(yè)的運(yùn)輸效率,解決多agv系統(tǒng)的路徑規(guī)劃沖突問題,提升企業(yè)的核心競爭力的基于時(shí)間代價(jià)函數(shù)的時(shí)間窗路徑規(guī)劃沖突解決方法。
技術(shù)方案:為解決上述技術(shù)問題,本發(fā)明提供一種基于時(shí)間代價(jià)函數(shù)的時(shí)間窗路徑規(guī)劃沖突解決方法,具體步驟如下:
第一步:采用拓?fù)浣7▽gv運(yùn)行環(huán)境進(jìn)行建模,得到一張有向連接圖g=(v,e),其中v代表圖中的所有節(jié)點(diǎn),e代表圖中節(jié)點(diǎn)之間的邊,節(jié)點(diǎn)之間的每一條邊(u,v)都含有一個(gè)權(quán)值wuv,表示節(jié)點(diǎn)之間的距離;
第二步:手動添加運(yùn)輸任務(wù),并針對每個(gè)任務(wù),采用dijkstra算法進(jìn)行路徑規(guī)劃;進(jìn)行路徑規(guī)劃后會得到一條最短路徑,這條路徑是由一組路段(即有向連接圖的邊)構(gòu)成的集合;
第三步:根據(jù)第二步中該路段集合計(jì)算所有路段的時(shí)間窗,并檢查所有路段的時(shí)間窗是否出現(xiàn)沖突,如果出現(xiàn)沖突則進(jìn)入第四步,如果沒有出現(xiàn)沖突則進(jìn)入第六步;
第四步:重新采用dijkstra算法進(jìn)行路徑規(guī)劃,并計(jì)算等待代價(jià)函數(shù)cw和二次規(guī)劃代價(jià)函數(shù)cr的數(shù)值;
第五步:比較兩個(gè)函數(shù)的值,觀察等待代價(jià)函數(shù)cw是否大于二次規(guī)劃代價(jià)函數(shù)cr,如果cw>cr此時(shí)采用等待策略的時(shí)間成本要高于采取二次規(guī)劃策略的時(shí)間成本,則小車采用二次規(guī)劃策略,按照重新規(guī)劃的路徑進(jìn)行行駛,如果cw≤cr則此時(shí)二次規(guī)劃策略的時(shí)間成本較高,則小車采取等待策略并進(jìn)入第六步;
第六步:按照原路徑行駛并結(jié)束。
進(jìn)一步的,所述等待代價(jià)函數(shù)cw主要由等待時(shí)間代價(jià)cw1、剩余路徑代價(jià)cw2、剩余路徑?jīng)_突代價(jià)cw3三個(gè)分量構(gòu)成,并且cw=cw1+cw2+cw3:
其中等待時(shí)間代價(jià)cw1的計(jì)算方法如下
cw1=tw
其中,tw表示小車在執(zhí)行任務(wù)過程中遇到?jīng)_突的等待時(shí)間;當(dāng)小車由于沖突等待在某處時(shí),運(yùn)輸任務(wù)完成的時(shí)間隨之延遲,該等待時(shí)間可以通過時(shí)間窗向量事先獲得,等待的時(shí)間越長,則采取等待策略的代價(jià)越高。
剩余路徑代價(jià)cw2的計(jì)算方法如下
其中,|ej|表示剩余路徑中邊ej的距離,m表示剩余路徑中起始邊的編號,n表示剩余路徑中終止邊的編號,v表示小車的行駛速度;剩余路徑代價(jià)表示小車在繼續(xù)等待一段時(shí)間后,按照原先規(guī)劃的路徑行駛時(shí)所花費(fèi)的時(shí)間,當(dāng)小車剩余的路徑越少,則采取等待策略的代價(jià)越低。
剩余路徑?jīng)_突代價(jià)cw3的計(jì)算方法如下
其中,tj表示小車在行駛剩余路徑的過程中在邊ej的沖突代價(jià),m表示剩余路徑中起始邊的編號,n表示剩余路徑中終止邊的編號;如果在邊ej未發(fā)生沖突,則tj的值為0。剩余路徑?jīng)_突代價(jià)表示小車如果不采取二次規(guī)劃策略,在等待一段時(shí)間之后按照剩余路徑行駛時(shí),在剩余路徑中與其他小車發(fā)生沖突進(jìn)行等待的時(shí)間總和。如果與其余小車的沖突越多,則等待代價(jià)越高。
進(jìn)一步的,所述二次規(guī)劃代價(jià)函數(shù)cr包含二次規(guī)劃后的路徑代價(jià)cr1和二次規(guī)劃后的路徑?jīng)_突代價(jià)cr2兩個(gè)分量,并且cr=cr1+cr2:
其中二次規(guī)劃后的路徑代價(jià)cr1的計(jì)算方法如下
其中,|ek|表示二次規(guī)劃路徑中邊ek的距離,p表示二次規(guī)劃路徑中起始邊的編號,q表示二次規(guī)劃路徑中終止邊的編號,v表示小車的行駛速度;如果對小車進(jìn)行二次規(guī)劃路徑,則會得到新路徑的邊序列,當(dāng)新生成的路徑距離越長,則完成運(yùn)輸任務(wù)所需的時(shí)間越長。
二次規(guī)劃后的路徑?jīng)_突代價(jià)cr2的計(jì)算方法如下
其中,tk表示小車在行駛二次規(guī)劃路徑的過程中在邊ek的沖突代價(jià),p表示二次規(guī)劃路徑中起始邊的編號,q表示二次規(guī)劃路徑中終止邊的編號。需要注意的是,如果在邊ek未發(fā)生沖突,則tk的值為0。沖突代價(jià)表示小車采取二次規(guī)劃策略后,新生成的路徑與其余小車的沖突情況。如果與其余小車的沖突越多,則完成運(yùn)輸任務(wù)所需的時(shí)間越長。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明針對多agv路徑規(guī)劃中的沖突問題,通過設(shè)置兩個(gè)代價(jià)函數(shù),對于兩種常用的沖突解決策略——等待策略和二次規(guī)劃路徑策略進(jìn)行了量化分析,將沖突的代價(jià)轉(zhuǎn)換為時(shí)間成本,從而選擇代價(jià)較小的策略解決沖突。本發(fā)明可以有效提高多agv系統(tǒng)在路徑規(guī)劃方面的運(yùn)行效率,對倉儲物流企業(yè)的agv系統(tǒng)化部署有著重要的意義。
附圖說明
圖1為本發(fā)明的總體流程圖;
圖2為具體實(shí)施例中工廠倉庫agv工作區(qū)域平面圖;
圖3為具體實(shí)施例中agv工作區(qū)域地圖模型圖;
圖4為具體實(shí)施例中dijkstra算法的節(jié)點(diǎn)連接圖;
圖5為具體實(shí)施例中時(shí)間窗沖突示意圖;
圖6為具體實(shí)施例中采取停止等待策略解決時(shí)間窗沖突示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式,進(jìn)一步闡明本發(fā)明。
agv、路徑規(guī)劃算法。agv又名自動運(yùn)輸車,是現(xiàn)代智能化物流企業(yè)的重要設(shè)備之一,是本發(fā)明相關(guān)算法的運(yùn)行實(shí)體;路徑規(guī)劃算法在agv運(yùn)輸系統(tǒng)中起到了舉足輕重的作用,是agv完成運(yùn)輸任務(wù)不可缺少的重要組成部分,在本發(fā)明中,我們首先采取dijkstra算法對單臺agv進(jìn)行路徑規(guī)劃,為其規(guī)劃一條最短路徑,隨后運(yùn)用時(shí)間窗算法對多臺agv之間的路徑?jīng)_突進(jìn)行檢測,進(jìn)而采取本發(fā)明提出的兩個(gè)代價(jià)函數(shù)對相關(guān)代價(jià)進(jìn)行數(shù)值上的比較,然后選擇時(shí)間成本較低的策略解決路經(jīng)過沖突。
1agv運(yùn)行環(huán)境的建模
在使用本系統(tǒng)前,需要對agv運(yùn)行環(huán)境進(jìn)行建模,本發(fā)明選擇拓?fù)浞ㄟM(jìn)行建模,選取企業(yè)倉庫中的若干特定點(diǎn)與點(diǎn)之間可通行的路徑,將其抽象為計(jì)算機(jī)科學(xué)中常用的圖結(jié)構(gòu),用節(jié)點(diǎn)和弧邊的方式表示整個(gè)運(yùn)行環(huán)境。本發(fā)明對于建立的模型描述如下:在有向連接圖g=(v,e)中(其中v代表圖中的所有節(jié)點(diǎn),e表示圖中節(jié)點(diǎn)之間的邊),它的每一條邊(u,v)都含有一個(gè)權(quán)值wuv,表示節(jié)點(diǎn)之間的距離。圖2和圖3分別表示了工廠倉庫agv工作區(qū)域和通過拓?fù)浞ńK玫腶gv工作區(qū)域地圖模型,其中紅色的連線表示連接節(jié)點(diǎn)的弧邊,即agv可以行使的區(qū)域。
2單臺agv路徑規(guī)劃算法
當(dāng)建立完相關(guān)模型后,可以對單臺agv運(yùn)用相關(guān)路徑規(guī)劃算法指導(dǎo)其執(zhí)行運(yùn)輸任務(wù)。本發(fā)明采用dijkstra算法對單個(gè)任務(wù)進(jìn)行路徑規(guī)劃,在帶權(quán)值有向圖g=(v,e)中,把圖中節(jié)點(diǎn)的集合v分成兩組,第一組為已經(jīng)求出最短路徑的頂點(diǎn)集合(用s表示),初始化時(shí)s中只有一個(gè)節(jié)點(diǎn),即源點(diǎn),以后每求出一個(gè)點(diǎn)的最短路徑,就將該點(diǎn)加入到s中,直到全部頂點(diǎn)都加入到s中或者求出目標(biāo)點(diǎn)的最短路徑,算法退出,第二組為其余未確定最短路徑的節(jié)點(diǎn)的集合(用u表示,u=v-s,即u是s相對于v的補(bǔ)集),按最短路徑長度依次將第二組的節(jié)點(diǎn)加入到s中,加入的過程中,總保持從源點(diǎn)v到s中各個(gè)頂點(diǎn)的最短路徑長度不大于v到u中任何頂點(diǎn)的最短路徑長度。此外,每個(gè)頂點(diǎn)對應(yīng)一個(gè)路徑,s中的頂點(diǎn)的路徑就是v到此頂點(diǎn)的最短路徑,u中頂點(diǎn)的路徑,是從v到此頂點(diǎn)且包括s中節(jié)點(diǎn)作為中間節(jié)點(diǎn)的最短路徑長度。該算法的具體步驟為:
(1)初始時(shí),s只包含源點(diǎn),即s={v},v的距離為0。u包含除v外的其他頂點(diǎn),即:u={除v外的其余頂點(diǎn)},若v與u中頂點(diǎn)u有邊,則<u,v>正常有權(quán)值,若u不是v的出邊鄰接點(diǎn),則<u,v>權(quán)值為∞。
(2)從u中選取一個(gè)距離v最小的頂點(diǎn)k,把k加入s中(該選定的距離就是v到k的最短路徑長度)。
(3)以k為新考慮的中間點(diǎn),修改u中各頂點(diǎn)的距離;若從源點(diǎn)v到頂點(diǎn)u的距離(經(jīng)過頂點(diǎn)k)比原來距離(不經(jīng)過頂點(diǎn)k)短,則修改頂點(diǎn)u的距離值,修改后的距離值的頂點(diǎn)k的距離加上邊上的權(quán)。
(4)重復(fù)步驟2和3直到所有頂點(diǎn)都包含在s中。
由于無向圖本質(zhì)上可以看成是雙向的有向圖,為了簡便說明算法,以圖4表示的無向圖為例,表1演示了從節(jié)點(diǎn)a搜索到圖中其他所有節(jié)點(diǎn)的最短路徑的算法流程。
表1dijkstra算法流程
3時(shí)間窗算法
在上文對單臺agv進(jìn)行路徑規(guī)劃算法后,對于單個(gè)運(yùn)輸任務(wù),可以滿足運(yùn)輸需求,但一般企業(yè)倉庫中需要多臺agv同時(shí)完成運(yùn)輸任務(wù),此時(shí)多臺agv之間的路徑可能出現(xiàn)重疊或者沖突,如果不采取措施,多臺agv在運(yùn)行過程中可能會產(chǎn)生碰撞,影響整個(gè)運(yùn)輸系統(tǒng)的穩(wěn)定性,導(dǎo)致運(yùn)輸任務(wù)延誤。本發(fā)明采取基于時(shí)間窗的多agv路徑規(guī)劃算法對多agv之間的沖突進(jìn)行檢測,該算法的核心在于避免小車之間沖突與碰撞。下面通過示例對該算法的沖突檢測和解決方式進(jìn)行說明。
假設(shè)現(xiàn)在有兩個(gè)運(yùn)輸任務(wù)t1、t2需要執(zhí)行,t1的優(yōu)先級高于t2的優(yōu)先級,兩個(gè)任務(wù)分別被分配給兩臺空閑的小車c1,c2。如果兩臺小車在執(zhí)行任務(wù)的過程中在路段ej中出現(xiàn)沖突,則路段ej對應(yīng)的時(shí)間窗向量表示為:
其中,w1j表示任務(wù)t1在路段ej的時(shí)間窗,w2j表示任務(wù)t2在路段ej的時(shí)間窗。
假設(shè)兩個(gè)時(shí)間窗分量出現(xiàn)重疊,則會出現(xiàn)圖5所示的情況
如圖所示,由于
為了解決此類沖突,一般有兩種方法:停止等待策略和二次規(guī)劃路徑策略。采用這兩種策略解決沖突有可能會產(chǎn)生新的沖突,需要進(jìn)一步使用上述策略,直到所有小車互相都沒有沖突為止。對于停止等待策略,可以運(yùn)用在上述例子中,即優(yōu)先級高的小車先進(jìn)入某一路段,優(yōu)先級低的小車后進(jìn)入,停止等待策略命令優(yōu)先級低的小車在檢測到時(shí)間窗會出現(xiàn)沖突時(shí),暫時(shí)不進(jìn)入沖突路段,停在前一路段中,等待沖突路段的小車(即高優(yōu)先級的小車)駛出該路段時(shí)再進(jìn)入。在本例中,2號小車等待1號小車駛出路段ej再進(jìn)入ej。通過停止等待策略解決相向沖突的示意圖如圖6所示。
圖中所示的2號小車等待一段時(shí)間,相應(yīng)地,在路段ej的時(shí)間窗將往后平移,此時(shí),路段ej的時(shí)間窗沒有沖突,兩臺小車可以先后通過該路段。
對于二次規(guī)劃路徑策略,通常用在停止等待策略無法完全解決沖突的情況中。如果兩臺小車有多個(gè)路段發(fā)生沖突,僅僅通過停止等待策略并不能完全解決沖突,反而可能導(dǎo)致整個(gè)系統(tǒng)的停滯或延誤,這時(shí)需要重新為其中一輛小車規(guī)劃路徑,通過設(shè)置沖突路段不可用來為路徑規(guī)劃算法增加限制條件,根據(jù)二次規(guī)劃出的路徑更新時(shí)間窗向量表,循環(huán)進(jìn)行,直到所有小車的時(shí)間窗都不發(fā)生沖突為止。
4代價(jià)函數(shù)
通過上文可知,在agv遇到?jīng)_突時(shí),通常有兩種策略對沖突進(jìn)行解決,即停止等待策略和二次規(guī)劃路徑策略。本發(fā)明針對上述兩種策略,提出兩個(gè)分別描述其時(shí)間代價(jià)的函數(shù),通過量化的方式比較兩種策略的時(shí)間成本,從而采取完成任務(wù)時(shí)間更短的一種策略解決沖突。下面對兩種代價(jià)函數(shù)進(jìn)行詳細(xì)介紹。
當(dāng)小車在運(yùn)行過程中出現(xiàn)沖突時(shí),小車需要根據(jù)一定的評判標(biāo)準(zhǔn)決定是否采用二次規(guī)劃策略進(jìn)行路徑調(diào)整,這里就涉及到一個(gè)等待代價(jià)和二次規(guī)劃路徑代價(jià)的比較問題,本文設(shè)計(jì)了一種基于等待代價(jià)函數(shù)cw和二次規(guī)劃代價(jià)函數(shù)cr的綜合評價(jià)策略,將其應(yīng)用于多臺小車的路徑規(guī)劃。
假設(shè)該策略不考慮小車的任務(wù)優(yōu)先級、任務(wù)類型等因素,并且約定小車在運(yùn)行過程中的行駛速度恒定不變。等待代價(jià)函數(shù)cw主要由以下三個(gè)子項(xiàng)構(gòu)成:
(1)等待時(shí)間代價(jià)cw1。當(dāng)小車由于沖突等待在某處時(shí),運(yùn)輸任務(wù)完成的時(shí)間隨之延遲,該等待時(shí)間可以通過時(shí)間窗向量事先獲得,等待的時(shí)間越長,則采取等待策略的代價(jià)越高。
cw1=tw(1)
其中,tw表示小車在執(zhí)行任務(wù)過程中遇到?jīng)_突的等待時(shí)間。
(2)剩余路徑代價(jià)cw2。剩余路徑代價(jià)表示小車在繼續(xù)等待一段時(shí)間后,按照原先規(guī)劃的路徑行駛時(shí)所花費(fèi)的時(shí)間,當(dāng)小車剩余的路徑越少,則采取等待策略的代價(jià)越低。
其中,|ej|表示剩余路徑中邊ej的距離,m表示剩余路徑中起始邊的編號,n表示剩余路徑中終止邊的編號,v表示小車的行駛速度。
(3)剩余路徑?jīng)_突代價(jià)cw3。剩余路徑?jīng)_突代價(jià)表示小車如果不采取二次規(guī)劃策略,在等待一段時(shí)間之后按照剩余路徑行駛時(shí),在剩余路徑中與其他小車發(fā)生沖突進(jìn)行等待的時(shí)間總和。如果與其余小車的沖突越多,則等待代價(jià)越高。
其中,tj表示小車在行駛剩余路徑的過程中在邊ej的沖突代價(jià),m表示剩余路徑中起始邊的編號,n表示剩余路徑中終止邊的編號。需要注意的是,如果在邊ej未發(fā)生沖突,則tj的值為0。
等待代價(jià)函數(shù)cw為cw1、cw2、cw3這三個(gè)代價(jià)的總和,即如果采取等待策略,完成運(yùn)輸任務(wù)所需的實(shí)際時(shí)間如公式4所示:
cw=cw1+cw2+cw3(4)
如果對小車進(jìn)行二次規(guī)劃,使其按照重新規(guī)劃的路徑行駛,則小車無需等待,二次規(guī)劃代價(jià)函數(shù)中沒有等待時(shí)間代價(jià)分量,只包含二次規(guī)劃后的路徑代價(jià)和二次規(guī)劃后的路徑?jīng)_突代價(jià)這兩個(gè)分量,由于設(shè)置了沖突路段不可用,則重新規(guī)劃的路徑可能會增加路徑長度,其相應(yīng)的路徑代價(jià)可能有所提高。
可以得出,二次規(guī)劃代價(jià)函數(shù)cr由以下兩個(gè)子項(xiàng)構(gòu)成:
(1)二次規(guī)劃后的路徑代價(jià)cr1。如果對小車進(jìn)行二次規(guī)劃路徑,則會得到新路徑的邊序列,當(dāng)新生成的路徑距離越長,則完成運(yùn)輸任務(wù)所需的時(shí)間越長。
其中,|ek|表示二次規(guī)劃路徑中邊ek的距離,p表示二次規(guī)劃路徑中起始邊的編號,q表示二次規(guī)劃路徑中終止邊的編號,v表示小車的行駛速度。
(2)二次規(guī)劃后的路徑?jīng)_突代價(jià)cr2。沖突代價(jià)表示小車采取二次規(guī)劃策略后,新生成的路徑與其余小車的沖突情況。如果與其余小車的沖突越多,則完成運(yùn)輸任務(wù)所需的時(shí)間越長。
其中,tk表示小車在行駛二次規(guī)劃路徑的過程中在邊ek的沖突代價(jià),p表示二次規(guī)劃路徑中起始邊的編號,q表示二次規(guī)劃路徑中終止邊的編號。需要注意的是,如果在邊ek未發(fā)生沖突,則tk的值為0。
二次規(guī)劃代價(jià)函數(shù)cr為cr1、cr2這兩個(gè)代價(jià)的總和,即如果采取二次規(guī)劃策略,完成運(yùn)輸任務(wù)所需的實(shí)際時(shí)間如公式7所示:
cr=cr1+cr2(7)
當(dāng)cw>cr時(shí),此時(shí)采用等待策略的時(shí)間成本要高于采取二次規(guī)劃策略的時(shí)間成本,則小車采用二次規(guī)劃策略,主控臺重新生成新的路徑發(fā)送給小車。當(dāng)cw≤cr時(shí),此時(shí)二次規(guī)劃策略的時(shí)間成本較高,則小車采取等待策略。
以上所述僅為本發(fā)明的實(shí)施例子而已,并不用于限制本發(fā)明。凡在本發(fā)明的原則之內(nèi),所作的等同替換,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明未作詳細(xì)闡述的內(nèi)容屬于本專業(yè)領(lǐng)域技術(shù)人員公知的已有技術(shù)。