Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization Cplex决策表达式值限制_Optimization_Cplex_Opl - Fatal编程技术网

Optimization Cplex决策表达式值限制

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始终取尽可能小的值(例如,因为非负值在目标函数中受到惩罚),那么您可以

我在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
始终取尽可能小的值(例如,因为非负值在目标函数中受到惩罚),那么您可以使用
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和差值之间的最大值。在某些情况下,这会导致更有效的解算器行为