создать логические ограничения в CPLEX - PullRequest
0 голосов
/ 23 сентября 2019

Я использую OPL в CPLEX 12.9

В моей модели у меня есть эти два dvar boolean, X[p][t] и Y[t].Я хочу написать:

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

Но также возможно, что

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

Но это не работает.Я надеюсь, что у кого-то есть идея.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

, если вы напишите

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

, единственный невозможный сценарий -

(Y[t] == 1) && (X[u][t] == 1);
0 голосов
/ 24 сентября 2019

Условие (y [t] == ​​1) => (x [u] [t] == ​​1) можно выразить с помощью следующего линейного ограничения.

y[t] + x[u][t] <= 1

Пока у и х являются двоичными файлами.Если y [1] равно 1, то x [u] [t] может принимать значение только 0. Если y [t] равно 0, x [u] [t] может быть либо 0, либо 1.

...