当我以这种方式定义约束时
subject to p_inj {p in Step, k in Dest : type[k] == 2 || type[k] == 3}
它有效但我使用时:
subject to p_inj {p in Step : time[p] == 1 ,k in Dest : type[k] == 2 || type[k] == 3}
它不再起作用了。
任何人都可以解释为什么它不起作用,是否有任何方法可以以这种方式使这项工作?
还假设我的步骤是这样的:
Set Step : = 1 2 ;
有什么方法可以用这种方式告诉AMPL:
subject to p_inj {p in Step : Step[p] == 1 ,k in BUS : bus_type[k] == 2 || bus_type[k] == 3}
我的意思是有没有办法直接使用集合中不同元素的值?
答案 0 :(得分:2)
在AMPL中,与代数表示法一样,“this that”子句应位于索引表达式的末尾:
self.menuButton.hidden = true
关于第二个问题,如果我理解正确,你可以做类似
的事情subject to p_inj {p in Step, k in Dest:
time[p] == 1 && (type[k] == 2 || type[k] == 3)} ...
或用subject to p_inj {p in {1}, k in BUS: bus_type[k] == 2 || bus_type[k] == 3} ...
替换约束主体中出现的所有p
。