【发布时间】:2019-09-23 10:27:31
【问题描述】:
我在 CPLEX 12.9 中使用 OPL
在我的模型中,我有这两个 dvar 布尔值,X[p][t] 和 Y[t]。
我要写:
(Y[t] == 1) => (X[u][t] == 0);
但也应该有可能
(Y[t] == 0) && (X[u][t] == 0);
但它不起作用。 我希望有人有一个想法。
【问题讨论】:
我在 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。
【讨论】: