Cplex决策表达式值限制

问题描述

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

dexpr float 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]并添加约束{{ 1}}。这将隐式确保forall(i in I) A[i] >= x[i] - b[i]始终是0与差之间的最大值。在某些情况下,这可以导致更有效的求解器行为。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...