Formulazione del vincolo condizionale

Aug 21 2020

Voglio sviluppare un'estensione del modello del problema della posizione capacitativa.

Le variabili sono binarie$x_i$e un continuo$Q_i$. Deve essere soddisfatta la seguente condizione:

  1. Se$x_i = 0$,$Q_i$deve essere zero.
  2. Se$x_i = 1$,$Q_i \geq 0$.

Come lo formuliamo nella formulazione della programmazione intera?

La ringrazio per la risposta.

Risposte

5 RobPratt Aug 21 2020 at 08:23

Permettere$M_i$essere un limite superiore$Q_i$, e imporre vincoli lineari di M grande$0 \le Q_i \le M_i x_i$.

2 AlexFleischer Aug 21 2020 at 17:08

Tendo a preferire i vincoli logici alla grande M a meno che la grande M non sia davvero necessaria.

In OPL CPLEX possiamo scrivere

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