Cplex决策表达式值限制



我在cplex opl,中有一个决策表达式

dexpr浮点A=x[i]-b[i];

我想让A取0或更大的值,这样做的语法是什么?

maxl((函数用于此目的:

range I = 1..2;
dvar float+ x[I];
dvar float+ b[I];
dexpr float A[i in I] = maxl(x[i] - b[i], 0);

但是,根据使用A的方式,使用决策变量而不是决策表达式可能会更好。假设您的模型是公式化的,使得A总是取尽可能小的值(例如,因为非负值在目标函数中会受到惩罚(,那么您可以使用dvar float+ A[I]并添加约束forall(i in I) A[i] >= x[i] - b[i]。这将隐含地确保A[i]始终是0和差值之间的最大值。在某些情况下,这可能会导致更高效的解算器行为。

最新更新