1

我现在正在做一个模型,我需要进行很大的调整。基本上我需要扩展我当前的集合 V,它是一组城市,成为一组城市和时间。例如,V 中的元素 Kir 必须从简单的 "Kir" 扩展到 "Kir1"、"Kir2"、...、"Kir72" 以表示城市 Kir 以及由数字指定的时间范围。

我已经开始将其定义为(在 .mod 文件中): set V; 将 K 设置在 V 内;

在 .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))

例如。我被困在距离矩阵上

4

1 回答 1

1

虽然你可以通过连接城市名称和时间来构建一个集合,但我认为最好使用一个二维集合,第一个索引代表城市,第二个索引:

set K dimen 2;

data;

set K :=
Kir 1
Kir 2
Kir 3;

该集合K将包含对('Kir', 1), ('Kir', 2), ('Kir', 3)

于 2014-10-03T17:17:12.773 回答