簡體   English   中英

車輛路線的線性規划

[英]Linear programming of vehicle routing

需要幫助進行車輛路徑問題的線性規划。 在車輛路徑問題 (VRP) 中,車輛將為一組節點提供服務,從而使總行駛成本最小化。 我的決策變量是:Xij=1 如果在節點 i 之后訪問節點 j。 參數 dij 是節點 i 和 j 之間的距離。 所以,模型如下:

在此處輸入圖片說明

請注意,車輛從倉庫(節點編號 0)開始游覽,最后返回倉庫(約束 11 和 12)。 應該訪問所有節點(約束 13),並且當進入一個節點時,它應該離開該節點(約束 14)。 但是,當我在 cplex 中為大量節點解決此問題時,有時由於這樣的循環,解決方案無效:

在此處輸入圖片說明

在此解決方案的情況下,滿足所有約束但此解決方案無效,因為路由未連接。 現在,我的問題是我應該添加什么約束來完成模型。

正如@Erwin 提到的,您需要添加 subtour 消除約束。 簡要地:

  1. 解決這個問題。
  2. 分析解決方案。 如果沒有子旅行,則解決方案是最佳的。 否則,對原始問題的子路徑添加約束(在您的示例中,x_01+x_12+x_20 <= 2 和 x_34+x_45+x_53 <= 2)。 轉到 1。

雖然這個問題很老,但@alex 的回答中有一個重要的細節需要強調。 他的鏈接中的子旅游消除(SE)是通過延遲約束回調即時實現的。 記住這一點很重要,因為在較大的示例中,創建所有 SE 約束可能是不可能的,最好懶惰地評估它們。

CPLEX_Studio128\\opl\\examples\\opl\\models\\TravelingSalesmanProblem您可以找到您需要的一個小示例,即 subtour 消除。

謝謝你的回答。 我發現用於 subtour 消除的 Tucker 公式效果很好。

Ui-Uj+nXij<=n-1.

暫無
暫無

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

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