2015-05-20 64 views
0

我正在使用谷歌地圖和optaplanner構建車輛路線應用程序的原型。我將基於距離的評分改爲基於持續時間的評分,其中持續時間值是使用車輛的距離/平均速度計算的。交通堵塞車輛路線

現在我想堵車變量加入到我的應用程序。堵車變量被實現爲從當前位置到另一位置的額外持續時間值(我使用RoadLocation類中距離變量的位置和雙精度圖)。當我試圖運行它時,結果總是與前一個相同。第一次運行的結果如下: enter image description here

我畫了一些紅線代表堵車,然後嘗試重新運行求解階段。這是第二個結果:

enter image description here

的結果與前一次相同。我的問題是,將交通擁堵變量應用於車輛路徑問題的最佳方法是什麼?有沒有人有任何經驗添加這個變量?任何意見和建議將不勝感激。 感謝和問候。

回答

1

這一段只是一個介紹。如果你想跳過它,那就做吧。 ;-) 我實施了類似的交通堵塞方法,但它不是一個實時系統。解決方案每X分鐘運行一次,這絕對沒問題。 在實際的optaPlanner計算開始之前,這給了我預先計算完整道路網絡的方式和路線的好處。 這爲optaPlanner的真實計算節省了時間。網絡由頂點和圓弧組成。對於每個弧線你都會有一個重量。

這裏爲你開始真正的交易。 我們假設您爲所有地方的預先計算步驟以及如何實現DijkstraA-Star算法實施算法。這些尋路算法選擇具有最低「旅行」成本的弧線。對於將被阻擋的每條弧線/道路,我們假設距離爲DOUBLE.MAX_VALUE。這個值可以被解釋爲「不可驅動」或者徹底地說:在當前求解過程中,兩個頂點之間的連接甚至不存在。所以尋找算法的方法將簡單地跳過這條路。對於每條可駕駛的道路,我們都會計算實際成本,例如距離或採取近似的經驗。

的optaplanner過程本身只是使用預先計算的查找方式機構,例如比較從地點A到地點B的計算距離。

設置distance變量爲DOUBLE.MAX_VALUE您可以在基於用戶的信息,其他提供者的信息(如Google或基於管理員的規則)之間做出決定。由於我的經驗與基於用戶的內容和基於管理的操作一致,我可以推薦兩種方式。

讓我們討論了基於用戶行爲:用戶可以擁有一組相同的GUI操作作爲管理員的檢舉的方式「卡住」。對於下一個optaPlanner迭代,將涉及該標誌。如果你有你的用戶的GPS數據,你可以得到近似的速度。對於GPS測量的每個intervall,您都可以計算出該速度。如果速度在道路上(不是十字路口),並且低於規定的最低速度(假設爲1mph或2kmh),那麼您可以通過彈出式窗口詢問用戶是否出現交通堵塞問題,或者自動阻止該道路而不詢問用戶。如果你選擇了彈出式對話框,那麼很多不同的用戶必須在定義的時隙內投票「是」,例如,半個小時,然後道路被阻擋。當許多用戶再次開車行駛併發送該道路的GPS座標時,您可以解決交通堵塞問題。 自動方法的主要優點是,您將擁有低錯誤率的基於系統的方法。

如果您通過管理員採取手動方式,那麼您必須照顧實施GUI以顯示道路並啓用/禁用道路的阻止屬性。

+0

感謝您分享您對車輛路徑問題的交通擁堵的想法和經驗。我仍然困惑的一件事是,交通擁堵數據的最佳來源是什麼?目前,我讓我的用戶自己定義了它,但這種方法實際上有點奇怪,並不是很好。 –

+0

添加了關於添加/刪除阻塞道路屬性的不同接近的信息。 – mchlfchr