AMPL:d集合和规格中的一个大集合

2024-10-17 06:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个模型,我需要在很大程度上调整。基本上我需要扩展我现在的V集,它是一组城市,变成一组城市和时间。例如,V中的元素Kir必须从简单的“Kir”扩展到“Kir1”、“Kir2”、…、“Kir72”,以表示城市Kir以及数字指定的时间范围。你知道吗

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

在.dat文件中,我很不确定如何写这个。如果没有简单的方法将“string”Kir包含在集合K中,我想我会写:

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

例如。我的问题是我该怎么做?我能把这个城市的名字包括进来吗?特别地,我定义了一个数据透视表,它显示了原始V集中城市之间的距离。原始集合V中城市Kir和Sto之间的距离必须与扩展集合中城市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))

例如。不过,我对距离矩阵有点纠结


Tags: 文件方法textin模型元素距离for
1条回答
网友
1楼 · 发布于 2024-10-17 06:23:07

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

set K dimen 2;

data;

set K :=
Kir 1
Kir 2
Kir 3;

集合K将包含对('Kir', 1)('Kir', 2)('Kir', 3)。你知道吗

相关问题 更多 >