在CPLEX中创建布尔约束

时间:2019-09-23 10:27:31

标签: boolean cplex opl

我正在CPLEX 12.9中使用OPL

在我的模型中,我有这两个dvar布尔值X[p][t]Y[t]。 我要写:

(Y[t] == 1) => (X[u][t] == 0);

但是

(Y[t] == 0) && (X[u][t] == 0);

但是它不起作用。 我希望有人有一个主意。

2 个答案:

答案 0 :(得分:1)

如果你写

(Y[t] == 1) => (X[u][t] == 0);

唯一不可能的情况是

(Y[t] == 1) && (X[u][t] == 1);

答案 1 :(得分:0)

条件(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。