optaplanner_OptaPlanner –具有真实道路距离的车辆路线
optaplanner
在現實世界中,車輛路徑問題(VRP)中的車輛必須走這條路:它們不能在客戶之間直線行駛。 大多數VRP研究論文和演示都樂于忽略此實現細節。 和我一樣,過去。 盡管使用道路距離(而不是空中距離)不會對VRP的NP硬性產生多大影響,但確實會帶來一些額外的挑戰。 讓我們來看看這些挑戰。
道路距離數據集
首先,我們需要現實的數據集。 不幸的是,在VRP研究社區中,缺乏具有道路距離的公共VRP數據集。 VRP Web很少,例如位于29個位置的巴伐利亞數據集,但沒有什么嚴重的。 因此,我必須根據以下要求自己生成一些實際的數據集:
- 例如,在小道路上合理的時候使用高速公路。
我最終生成了比利時的數據集,其中包含城市,城鎮和郊區的位置。 最大的一個有2750個位置。 稍后,我可能會添加USA數據集的道路變量,這些變量最多可包含10萬個位置。
通過使用基于OpenStreetMap的出色的Java庫GraphHopper ,查詢實際道路距離相對容易。 只要整個道路網(比利時只有200MB)可以加載到內存中,它也很快。 加載整個北美道路網絡(6GB)更具挑戰性。 我將這些數據集提交到VRP Web,以便其他研究人員也可以使用它們。
所有這一切都發生在 OptaPlanner的VRP示例開始解決它之前。 在求解過程中,距離已經在查找表中可用。 一旦我們開始生成具有1000個或更多位置的數據集,預先計算每個位置對之間的所有距離可能會帶來內存和性能問題。 我將在下一個博客中解釋這些以及補救措施。
空中距離與道路距離
為了清楚起見,我將集中在數據集belgium-n50-k10.vrp上,該數據集具有50個位置和10個車輛,每個車輛的容量為125。 OptaPlanner有5分鐘的時間來解決這兩種變化(空中和道路距離)。
使用空中距離 (可根據緯度和經度計算歐幾里得距離)會導致:
總距離22.99并不重要,因為它不在通用的度量單位內,而且我們的車輛無論如何也無法從點到點飛行。 我們需要將此空距解決方案應用于真實道路網絡 (如下所示),以了解真實距離:
現在,讓我們比較上面的空中距離解決方案和下面的道路距離解決方案。
道路距離解決方案所需的時間減少了108.45公里,因此提高了近5%! 而且,這是世界上最密集的道路網之一(比利時的道路網):在稀疏的道路網上,收益可能會更多。
結論
使用實際距離而不是空中距離確實很重要。 用空距離求解VRP,然后應用道路距離是次優的。
但是,我們真的可以預先計算大型數據集中的每個地理位置對嗎? 敬請關注。
翻譯自: https://www.javacodegeeks.com/2014/09/optaplanner-vehicle-routing-with-real-road-distances.html
optaplanner
總結
以上是生活随笔為你收集整理的optaplanner_OptaPlanner –具有真实道路距离的车辆路线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑主机显卡风扇嗡嗡响怎么办(显卡风扇特
- 下一篇: 使用ArchUnit验证代码和体系结构约