2014-10-03 70 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