2017-08-24 44 views
1

我解決一個車輛路徑問題和簡單的優化功能時間最小化在車輛調度(VRP)

最小化: 總和所有的車輛遊距離的

這AMPL似乎是這樣的

minimize objective_function: 
    sum {i in city, j in city,k in vehicle} x[i,j,k]*D[i,j]; 

其中x是一個二進制矩陣標記爲各個車輛和d旅行團是距離矩陣

W¯¯我想要做的帽子是最大限度地減少艦隊完成操作所花費的時間。時間計算爲距離速度「D[i,j]/S」。 任何建議我應該如何將其添加到當前的目標函數? 我迄今所做的是改變我的目標函數,這個

minimize objective_function: 
    sum {i in city, j in city,k in vehicle} x[i,j,k]*(D[i,j]/S[k]); 

這給我的每個車輛所採取的所有時間的總和。但是,由於所有車輛的時間並行開始,我需要從每輛車的時間中選擇最大值。那將是完成整個任務的時候。必須在AMPL中對其進行編碼以解決使用CPLEX的問題。

回答

0
var max_time; 
subject to definemaxtime {i in city, j in city, k in vehicle}: 
    max_time >= x[i,j,k]*(D[i,j]/S[k]); 

minimize objective_function: max_time; 

編輯:哎呦,這是不正確的,給一次旅行的最大時間。應該改爲:

var max_time; 
subject to definemaxtime {k in vehicle}: 
    max_time >= sum{i in city, j in city} x[i,j,k]*(D[i,j]/S[k]); 

minimize objective_function: max_time; 
+0

是的,這是完美的。只需從總結中刪除冒號。完美運作。太感謝了。 :) –