在 CPLEX 中创建布尔约束



我在 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。