我正在尝试在CPLEX中使用ceil()
函数进行约束,但不断收到“无法提取表达式”错误。这是约束:
forall(j in d, k in b, l in r){
ct14: sum(l in r)(ceil((sum(k in b)X1[j][k][l])/3)); <= 10;
}
如果在外部作为脚本进行评估,CPLEX可以评估左手术语,但在用作约束时无法执行此操作。我找不到任何使用ceil()
的约束的例子,但我认为它可以做,并且我的实现有问题。
纠正此错误的任何帮助都会很棒!
答案 0 :(得分:1)
不,我认为这不会起作用。您只能在约束中使用一些有限的表达式。您必须重新构建模型以使用其他变量来捕获每个变量子集的最大值。然后在这些额外变量上写下约束。