2014-10-06 14 views
1

我遇到了一個問題,我沒有找到任何解決方案來閱讀AMPL文檔的集合。AMPL:目標城市內的型號終端

我想要建模的是一個城市,比如說Kir,例如必須有來自另一個城市的9次交付,比如Sto。但是,這些交貨必須在某些特定的碼頭抵達Kir,每個碼頭每天只需少量時間(約2分鐘)。原始節點也必須如此。從Sto的路線必須從特定的終端指定(所以路徑可以在結果中「跟隨」)。

我已經開始使用集合中「set K in K」操作進行建模,但是這要求V必須是相同的集合,或者K的子集,其中K是代表「節點」的集合 - Kir ,申通快遞等,V是集終端的「候機樓」的名字,「候機樓」等

我開始檢查實例「設置K尺寸4」定義爲,例如:

set K dimension 4; 

data; 

set K:= 
Sto Kir Terminal1 Terminal2 
Bod Kir Terminal3 Terminal2; 

其中,集合K表示從哪個城市(例如Sto)開始交貨(例如Kir),其中Sto中的出發終端是Terminal1,並且是Kir的交付終端是Terminal2。這有一個缺點,就是必須手動指定大量的組合(在Kir中大約有22個終端)。我不知道如何對約束進行建模。例如「一個維」的設置,我以前有:

subject to yvar{i in V, j in V}: 
    sum{k in H} x[i,j,k] <= maxVisits[i,j]; 

其中V是集城市的孤獨,和H是集汽車,maxVisits表示從城市i到城市deliviries的最高金額如果使用車輛k從i傳遞給j,則x和x是1。我不明白這到底是怎麼進行建模,採用四維集K.

問候,

回答

1

一種方法來模擬這是指數x超過KH和改變的總和,包括終端:

var x{K, H} binary; 
subject to yvar{i in V, j in V}: 
    sum{(i,j,t,u) in K, k in H} x[i,j,t,u,k] <= maxVisits[i,j]; 

在求和索引(i,j,t,u) in K將遍歷對那些從城市i路線城市j的端點終端。請注意,ij在此處是固定的,因爲它們是在約束索引{i in V, j in V}中定義的。

+0

我一直在思考這個問題,在過去的一個晚上,想知道有關4維集K的實現,我已經理解它有一些不足之處。它將以某種方式禁止該程序找到「新」解決方案,即終端路線的新組合等等,因爲它是相當預先定義的解決方案。嗯...好吧,想一想,我想這是如何指定數據的問題。將definetely嘗試適應我的代碼這個答案!非常感謝您的回答! – Cenderze 2014-10-07 06:48:05