我现在正在做一个模型,我需要以相当大的方式进行调整。基本上我需要扩展我目前的集合V,这是一组城市,成为一组城市和时间。例如,V中的元素Kir必须从简单的" Kir" to" Kir1"," Kir2",...," Kir72"代表城市Kir以及数字指定的时间范围。
我已经开始将其定义为(在.mod文件中): 设定V; 在K中设置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))
例如。关于距离矩阵,我仍然坚持
答案 0 :(得分:1)
虽然你可以通过连接城市名称和时间来建立一个集合,但我认为最好使用二维集合,第一个索引代表城市,第二次:
set K dimen 2;
data;
set K :=
Kir 1
Kir 2
Kir 3;
集K
将包含('Kir', 1)
,('Kir', 2)
,('Kir', 3)
对。