簡體   English   中英

如何使用 or-tools 在車輛路徑問題中僅讓部分行程返回車輛段?

[英]How to make only some tours return to depot in vehicle routing problem with or-tools?

在我試圖解決的使用 Google 的 OR-Tools 的車輛路徑問題 (VRP) 的實例中,只有某些路徑(旅行)應該在起點結束,即站點。

我可以編輯從每個位置到倉庫的距離。 將它們全部設置為 0 將具有設置任意結束位置的效果,並且路線看起來有點像“放射狀”,中心位於站點中。 而設置從每個位置到站點的距離將使路線看起來“圓形”。

問題是,如何對問題進行建模,以便只有某些路由(包含特定類型的節點)是“循環的”?

這里有一些例子:
“徑向”(從中心 0 開始)。 例如: https ://github.com/google/or-tools/raw/stable/ortools/constraint_solver/doc/vrp_starts_ends_solution.svg?sanitize=true src: https ://github.com/google/or-tools/blob /stable/ortools/constraint_solver/doc/VRP.md#multiple-starts-ends
注意:在此示例中,每輛車都有不同的起始節點,並且都使用相同的站點結束節點也就是 0

循環:(從倉庫開始並返回)。
例如: https ://github.com/google/or-tools/raw/stable/ortools/constraint_solver/doc/vrp_global_span_solution.svg?sanitize=true src: https ://github.com/google/or-tools/blob /stable/ortools/constraint_solver/doc/VRP.md#global-span-constraints

只需創建一個虛擬節點,與您所說的任何節點的距離為零,同時保留您的倉庫。

在構建 RoutingIndexManager 時,您可以傳遞一個開始/結束列表,以便在結束列表中選擇您的虛擬節點或真正的站點,以便讓車輛返回站點或不返回站點。

在您的“打印/顯示”方法中,您可以檢查結束節點索引並相應地繪制/打印...

注意:您可以在源代碼樹中找到用於生成這些 svg 的 python 腳本(我幾個月沒有運行它,所以它可能會損壞(TODO:在其上添加 CI 作業 ^^))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM