Optimization Cplex决策表达式值限制
我在cplex opl中有一个决策表达式 dexpr浮点A=x[i]-b[i] 我想要一个取值为0或更大的值,那么语法是什么呢?函数用于此目的:Optimization Cplex决策表达式值限制,optimization,cplex,opl,Optimization,Cplex,Opl,我在cplex opl中有一个决策表达式 dexpr浮点A=x[i]-b[i] 我想要一个取值为0或更大的值,那么语法是什么呢?函数用于此目的: 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始终取尽可能小的值(例如,因为非负值在目标函数中受到惩罚),那么您可以
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]
并为所有(I中的I)A[I]>=x[I]-b[I]添加约束。这将隐含地确保A[i]
始终是0和差值之间的最大值。在某些情况下,这会导致更有效的解算器行为。此函数用于此目的:
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]
并为所有(I中的I)A[I]>=x[I]-b[I]
添加约束。这将隐含地确保A[i]
始终是0和差值之间的最大值。在某些情况下,这会导致更有效的解算器行为