我在 CPLEX 12.9 中使用 OPL
在我的模型中,我有两个 dvar 布尔值,X[p][t]
和Y[t]
. 我想写:
(Y[t] == 1) => (X[u][t] == 0);
但也应该有可能
(Y[t] == 0) && (X[u][t] == 0);
但它不起作用。 我希望有人有一个想法。
如果你写
(Y[t] == 1) => (X[u][t] == 0);
唯一不可能的情况是
(Y[t] == 1) && (X[u][t] == 1);
条件 (y[t] == 1( => (x[u][t] == 1( 可以用以下线性约束表示。
y[t] + x[u][t] <= 1
只要 y 和 x 是二进制文件。 如果 y[1] 为 1,则 x[u][t] 只能取值 0。 如果 y[t] 为 0,则 x[u][t] 可以是 0 或 1。