对 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;
我有一个优化问题模型,它使用三组不同的有序对。使用此约束:
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;