Как добавить ограничение с помощью CPLEX opl? - PullRequest
0 голосов
/ 28 октября 2019

S [i] [j] [k] - время начала работы O [i] [j] на машине [k].

C [i] [j] [k] время завершенияоперации O [i] [j] на машине [k].

v [i] [j] [k] равно 1, если операция O [i] [j] выполняется на машине [k], в противном случае0.

Я хочу добавить ограничение, что S [i] [j] [k] + C [i] [j] [k] <= v [i] [j] [k] * Big-M, где k принадлежит MC [i] [j] </p>

MC [i] [j] - это набор машин-кандидатов, который может обрабатывать операции O [i] [j].

МожетКто-нибудь помочь сформулировать эту проблему?

Я новичок в CPLEX, и я не знаю, как добавить ограничение, как это (потому что k имеет некоторое ограничение, что k должен принадлежать MC [i] [j])

1 Ответ

0 голосов
/ 29 октября 2019

В OPL вы можете написать этот вид ограничения почти так, как если бы он был естественным языком:

float bigM = ...; // Put some value for bigM
forall (i in I)
  forall (j in J)
    forall (k in MC[i][j])
      S[i][j][k] + S[i][j][k] <= v[i][j][k] * bigM;

Обратите внимание, что в вашем описании, похоже, есть проблема: S [i] [j] [k] указывает время начала выполнения задания и . Скорее всего, это не то, что вы хотите.

...