Formulando a restrição condicional

Aug 21 2020

Eu quero desenvolver uma extensão de modelo do problema de localização capacitada.

As variáveis ​​são binárias$x_i$e um contínuo$Q_i$. A seguinte condição deve ser satisfeita:

  1. E se$x_i = 0$,$Q_i$deve ser zero.
  2. E se$x_i = 1$,$Q_i \geq 0$.

Como o formulamos na formulação de programação inteira?

Obrigado pela sua resposta.

Respostas

5 RobPratt Aug 21 2020 at 08:23

Deixar$M_i$ser um limite superior em$Q_i$, e impor restrições lineares big-M$0 \le Q_i \le M_i x_i$.

2 AlexFleischer Aug 21 2020 at 17:08

Costumo preferir restrições lógicas ao grande M, a menos que o grande M seja realmente necessário.

No OPL CPLEX podemos escrever

int n=10;
range r=1..n;

dvar boolean x[r];
dvar float+ Q[r];

subject to
{
  forall(i in r) (x[i]==0) => (Q[i]==0);
}