AMPL语法错误:&#34; ____不是一个集合&#34; &安培; &#34; ____不是param <或constraint =“”或=“”var =“”>&#34;

时间:2016-02-23 00:04:51

标签: syntax ampl

我是AMPL编程的新手,尽管其他编程语言经验丰富。 我将此作为我的.run列出的第一个.dat文件:

data;

#set declarations
    set TIME = {0..1680} ordered; #time
#   set GENHRS := {150..1660} ; #generation hours

#Scalars
    param StorageMin :=1;#       Minimum reservoir storage level
    param StorageMax :=50;#       Maximum reservoir storage level
    param Qmin       :=1;#       Minimum total outflow 
    param QturbMax   :=20;#       Maximum level of outflow through turbine
    #param Qin {t in TIME};#        need to read in from file.

如标题所示,我在运行它时遇到错误(通过cmd) &#34;时间不是一套&#34;以及上面列出的所有其他参数:&#34; ___不是参数&#34;。

我很困惑。据我所知,他们都是用正确的语法定义的,虽然我无法弄清楚&#34;:=&#34;和&#34; =&#34;但是我已经尝试了两种方法,但两种方法都没有。

我不知道它是否相关,但我的.mod文件中指定了约束,变量和目标。

1 个答案:

答案 0 :(得分:0)

AMPL语言由两部分组成或模式,一种用于指定优化模型的建模语言和一种用于提供集合和参数数据的data specification languagedata语句将AMPL切换到数据模式,在该模式下,它将数据转换为数据规范语言中的输入。

AMPL代码

set TIME = {0..1680} ordered;

给出了集合TIME的声明,因此它应该在模型中使用,而不是在数据中使用。