OpenTCS打造移動機器人交通管制系統(六)

       上一篇談到了OpenTCS的調度策略問題。並提出了關於自帶算法的"死鎖"的問題。

當時提出了下面兩種改進的方法:

1、錯開訂單的下發。

2、改進調度資源分配算法,將雙向路徑考慮到資源分配的過程當中。

         方法1顯然是可以解決的前文提到的死鎖問題的,但是有點彆扭,也有點low,因此筆者嘗試從算法層次着手改進。

我們拓展上一篇文章提出的地圖,將其拓展如下:

(地圖畫的有點亂,懶得整理了,將就看吧)

在算法改進之前,如果同時存在兩個訂單,訂單的內容爲:

1號車要從Location-0002前往Location-0001,2號車要從Location-0003前往Location-0004.

那麼就會出現會死鎖,死鎖的位置會隨機發生在點6到Point-0008之間。爲什麼會出現這種情況呢?其實前一篇文章已經談到了,OpenTCS默認的算法是基於"前饋鎖路"的方式進行交通管制的(查看上一篇)。

而且OpneTCS鎖定資源的粒度是MovementCommand.也就是一個運動步,這一點在OpenTCS的文檔中也已經說明。但是這種算法對於這種雙行線是很容易出現死鎖的,因爲一輛車只要進入了這種通道,那麼如果另外一輛車再進入此通道,那麼必然會"狹路相逢",產生死鎖。

爲了改進此問題,提出一種算法,即:

改進調度資源分配算法,將雙向路徑考慮到資源分配的過程當中。

算法的原理是:動態修改調度的粒度(之前的粒度是一個MovementCommand).對於雙向單通道的路段,動態拓展鎖定的粒度。

效果如下:

算法仿真測試

本篇就到這了,大家如果對調度算法有獨特的見解,或者對OpenTCS的調度算法有深入的研究,也可以一起探討哈。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章