Python AMPL:数据集合和规范中的一个大集合
我现在正在做一个模型,我需要在很大程度上进行调整。基本上,我需要扩展我当前的集合V,它是一组城市,成为一组城市和时间。例如,V中的元素Kir必须从简单的“Kir”扩展到“Kir1”、“Kir2”、“Kir72”,以表示城市Kir以及数字指定的时间范围 我已经开始将其定义为(在.mod文件中): 第五组; 将K设置为V 在.dat文件中,我很不确定如何写这个。如果没有简单的方法将“string”Kir包含在集合K中,我想我会写:Python AMPL:数据集合和规范中的一个大集合,python,ampl,neos-server,Python,Ampl,Neos Server,我现在正在做一个模型,我需要在很大程度上进行调整。基本上,我需要扩展我当前的集合V,它是一组城市,成为一组城市和时间。例如,V中的元素Kir必须从简单的“Kir”扩展到“Kir1”、“Kir2”、“Kir72”,以表示城市Kir以及数字指定的时间范围 我已经开始将其定义为(在.mod文件中): 第五组; 将K设置为V 在.dat文件中,我很不确定如何写这个。如果没有简单的方法将“string”Kir包含在集合K中,我想我会写: set V := 1 2 3 4 5; set K := 1 2;
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))
比如说。虽然可以通过连接城市名称和时间来构建一个集合,但我认为最好使用二维集合,第一个索引表示城市,第二个索引表示城市:
set K dimen 2;
data;
set K :=
Kir 1
Kir 2
Kir 3;
集合
K
将包含成对的('Kir',1)
,('Kir',2)
,('Kir',3)
,谢谢!我不知道有这种可能性!显然比使用另一个程序Python指定集合更方便!