Formulation de la contrainte conditionnelle

Aug 21 2020

Je souhaite développer une extension de modèle du problème de localisation capacitaire.

Les variables sont binaires$x_i$et une continue$Q_i$. La condition suivante doit être satisfaite :

  1. si$x_i = 0$,$Q_i$doit être nul.
  2. si$x_i = 1$,$Q_i \geq 0$.

Comment le formulons-nous dans la formulation de la programmation en nombres entiers ?

Merci pour votre réponse.

Réponses

5 RobPratt Aug 21 2020 at 08:23

Laisser$M_i$être une borne supérieure sur$Q_i$, et imposer des contraintes big-M linéaires$0 \le Q_i \le M_i x_i$.

2 AlexFleischer Aug 21 2020 at 17:08

J'ai tendance à préférer les contraintes logiques au grand M à moins que le grand M ne soit vraiment nécessaire.

Dans OPL CPLEX on peut écrire

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);
}