AMPL,设置1..T不起作用

时间:2018-05-24 15:37:20

标签: set command display ampl

1..T功能对我不起作用,我不知道为什么。我的代码如下所示:

set TIME;

data;

set TIME = 1..8760 by 3;

display TIME;

我想让它显示1, 4, 7, 10,依此类推,但它只是1..8760 by 3。我如何解决这个问题,以便我不必编写8,760个不同的数字?

感谢答案!

2 个答案:

答案 0 :(得分:0)

我在代码中找不到任何错误。我试过我的AMPL IDE:

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。数字。