【发布时间】:2020-08-13 00:07:05
【问题描述】:
我在 cplex opl 中有一个决策表达式,
dexpr 浮点数 A = x[i]-b[i];
我希望 A 取 0 或更大的值,这样做的语法是什么?
【问题讨论】:
标签: optimization cplex opl
我在 cplex opl 中有一个决策表达式,
dexpr 浮点数 A = x[i]-b[i];
我希望 A 取 0 或更大的值,这样做的语法是什么?
【问题讨论】:
标签: optimization cplex opl
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 和差之间的最大值。在某些情况下,这可以导致更有效的求解器行为。
【讨论】: