2014-10-03 68 views
1

我正在做一個模型,我需要以相當大的方式進行調整。基本上我需要延長我現在的一組城市,成爲一組城市和時間。例如,V中的元素Kir必須從簡單的「Kir」擴展到「Kir1」,「Kir2」,...,「Kir72」以表示城市Kir以及由數字指定的時間範圍。AMPL:數據集和規範中的一個大集合

我已經開始將它定義爲(在.mod文件中): set V; 在V中設置K;

和.dat文件我很不確定如何寫這個。如果沒有簡單的方法在集合K中包含「字符串」Kir,我會猜測我會寫:

set V := 1 2 3 4 5; 
set K := 1 2; 

例如。我的問題是我該如何做到這一點?我可以包括城市名Kir嗎?具體來說,我已經定義了原始V集中的城市之間的距離數據透視表。例如,城市Kir和Sto之間的原始集合V中的距離必須與擴展集合中Kir1和Sto1之間的距離相同。它也必須是Kir1和Sto72之間的相同距離。原始距離必須是相同的,而不管它是哪個時間範圍。 AMPL中有這樣一個簡單的方法嗎?

編輯:添加標籤Python。我想這也可以在Python中實現。我已經設法使用以下定義新套件:

text = 'Kir' 
string2 = [i for i in range(1,49)] 
for i in string2: 
    print (text+str(i)) 

例如。我卡在距離矩陣雖然

回答

1

雖然你可以通過連接城市名稱和時間來建立一個集合,但我認爲最好使用第一個索引代表城市和第二個時間的二維集合:

set K dimen 2; 

data; 

set K := 
Kir 1 
Kir 2 
Kir 3; 

設定K將包含對('Kir', 1)('Kir', 2)('Kir', 3)

+0

謝謝!不知道這種可能性!顯然比使用另一個程序指定集合更方便,Python! – Cenderze 2014-10-06 05:53:29