对 AMPL 中的约束集元素语法错误求和

Sum over constrained set element syntax error in AMPL

我有一个优化问题模型,它使用三组不同的有序对。使用此约束:

subject to Constraint8 {t in T, j in J, a in A}: 
    sum{i in I: (i,j) in LINKS} l[i,t,a] >= sum{v in V, (ih,jh) in REV:(ih,j) not in LINKS} x[ih,j,v,t,a]+1;    

实际有效并给出了正确的解决方案。不过我想改变这个约束,所以我把它注释掉,然后写修改后的版本:

subject to Constraint8 {t in T, j in J, a in A}:
    sum{i in I: (i,j) in LINKS} l[i,t,a] >= sum{g in T: g <= t, v in V, (ih,jh) in REV: (ih,j) not in LINKS} x[ih,j,v,g,a] +1;  

(区别在于 x 现在也在集合 T 上求和,但是在元素 g in T: g <= t 上求和。但是,AMPL 似乎不喜欢这样,这会产生语法错误。我一直在尝试在一些不同的 "places" 内求和,但它不起作用。

有人知道这个错误吗?

在 AMPL 中,以及在数学符号中,您应该在索引表达式的末尾指定 "such that" 条件:

subject to Constraint8 {t in T, j in J, a in A}:
  sum{i in I: (i,j) in LINKS} l[i,t,a] >=
    sum{g in T, v in V, (ih,jh) in REV: g <= t and (ih,j) not in LINKS}
      x[ih,j,v,g,a] + 1;