1..T
功能对我不起作用,我不知道为什么。我的代码如下所示:
set TIME;
data;
set TIME = 1..8760 by 3;
display TIME;
我想让它显示1, 4, 7, 10
,依此类推,但它只是1..8760 by 3
。我如何解决这个问题,以便我不必编写8,760个不同的数字?
感谢答案!
答案 0 :(得分:0)
我在代码中找不到任何错误。我试过我的AMPL IDE:
我想当你写"数据"是你的代码在.dat文件中,当你写#34;显示"是你的.run文件
你用什么来写你的模型? NEOS SERVER或IDE ??
问候!
答案 1 :(得分:0)
尝试删除代码的前两行。
您用来指定TIME的格式似乎只适用于" model"模式;在"数据"模式,相同的文本被解释为声明一组文字" 3"," by"和" 1..8760"。 (快速测试:如果您键入display card(TIME);
,则值为3,告诉您此集合中只有3个成员。)
Section 5.2 of the AMPL Book建议使用" x..y by z"模型中的类型声明(使用x,y,z作为声明的参数),然后在数据中指定x,y,z的值。
请注意,从1开始并逐步增加3实际上确实达到了8760,所以如果你想要相同的间隙,你可能想要将你的开始改为0或3,或者你的结尾改为8761。数字。