10.2 Un modello PLI per il problema del bin packing¶
Parte 2 · Formulazioni dei problemi e loro proprietà · Capitolo 10 · Capitolo 10: Problemi di packing · Dispensa, volume 2 (PDF) · Slide · Esercizi: Problemi di packing
Il problema di questa sezione è il problema del bin packing (BPP), definito nel Capitolo 3 «Problemi di packing».
-
Dato un upper bound \(m \in \Z_{\ge 2}\) sul numero di contenitori usati in una qualunque soluzione ottima del BPP, introduciamo le seguenti \(mn\) variabili binarie:
\[ \begin{gathered} x_{jb} = \begin{cases} 1 & \text{se l'oggetto } j \textrm{ è inserito nel contenitore } b \\ 0 & \text{altrimenti} \end{cases} \\[1ex] \forall j \in \underbrace{\{1,2,\dots,n\}}_{=\mathscr{I}},~~ \forall b \in \underbrace{\{1,2,\dots,m\}}_{=\mathscr{B}}, \end{gathered} \]e le seguenti \(m\) variabili binarie:
\[ y_b = \begin{cases} 1 & \text{se il contenitore } b \textrm{ è usato} \\ 0 & \text{altrimenti} \end{cases} \qquad \forall b \in \underbrace{\{1,2,\dots,m\}}_{=\mathscr{B}}. \]Il numero \(n\) di oggetti è un upper bound valido sul numero minimo di contenitori necessari per inserire tutti gli oggetti poiché, nel caso peggiore, ogni oggetto è inserito in un contenitore diverso. Anche il numero di contenitori usati in una qualunque soluzione ammissibile del BPP è un upper bound valido.
Con queste variabili, un modello di programmazione lineare intera (PLI) per il problema del bin packing (BPP) è il seguente:
Questo modello PLI si chiama modello \(\mathrm{ILP}_{\mathrm{BPP}}\).
-
Descrizione della funzione obiettivo e dei vincoli del modello \(\mathrm{ILP}_{\mathrm{BPP}}\):
-
la funzione obiettivo lineare \(\eqref{obj_BPP}\) minimizza il numero totale di contenitori usati;
-
i vincoli \(\eqref{cons1_BPP}\) garantiscono che ogni oggetto sia inserito in esattamente un contenitore, così che tutti gli oggetti siano inseriti (\(n\) vincoli lineari);
-
i vincoli \(\eqref{cons2_BPP}\) collegano le variabili di assegnamento alle variabili di attivazione e impongono i limiti di capacità: se il contenitore \(b\) è usato, il peso dei suoi oggetti è al più \(c\); se non è usato, non contiene oggetti (\(m\) vincoli lineari);
-
infine, i vincoli \(\eqref{cons4_BPP}\) e \(\eqref{cons3_BPP}\) definiscono le variabili del modello PLI.
-
Spiegazione del legame fra le variabili
-
Se almeno un oggetto è inserito nel contenitore \(b\), allora il contenitore è usato. L'implicazione logica è
\[ (x_{1b} {\tt ~OR~} x_{2b} {\tt ~OR~} \dots {\tt ~OR~} x_{nb}) ~~~ \Longrightarrow ~~~ y_b . \]Poiché \(w_j>0\), inserire un oggetto nel contenitore \(b\) dà \(\sum_{j \in \mathscr{I}} w_j x_{jb} > 0\), e il vincolo \(\sum_{j \in \mathscr{I}} w_j x_{jb} \le c\,y_b\) impone \(y_b=1\).
-
Se il contenitore \(b\) non è usato, allora è vuoto. È la contronominale dell'implicazione precedente. Per \(y_b=0\) il vincolo diventa \(\sum_{j \in \mathscr{I}} w_j x_{jb} \le 0\), e poiché \(w_j>0\) otteniamo \(x_{jb}=0\) per ogni oggetto \(j\).
-
Se il contenitore \(b\) è usato, allora contiene almeno un oggetto, ma solo in una soluzione ottima. I vincoli non lo impongono. Tuttavia, se \(x_{jb}=0\) per ogni \(j\) e \(y_b=1\), porre \(y_b=0\) mantiene soddisfatti tutti i vincoli e diminuisce di uno il valore obiettivo. Quindi, in ogni soluzione ottima, i contenitori vuoti non sono contati come usati.
Esempio 10.1: modello \(\mathrm{ILP}_{\mathrm{BPP}}\)
Consideriamo un contenitore di capacità \(c = 10\) e un insieme \(\mathscr{I} = \{1,2,3\}\) di \(3\) oggetti (\(n=3\)), con i seguenti pesi degli oggetti:
Chiamiamo questa istanza del BPP Esempio 10.1.
Il modello \(\mathrm{ILP}_{\mathrm{BPP}}\) con \(m=3\) per questa istanza del BPP è:
Una soluzione ottima \({\tilde{\vet{x}}}(\mathrm{ILP}_{\mathrm{BPP}})\) è:
Un'altra soluzione ottima, ottenuta permutando gli indici dei contenitori \(1\) e \(2\), è:
Il valore ottimo è:
La soluzione ottima associata del BPP è data dagli schemi di riempimento
La soluzione ottima non è unica: anche gli schemi di riempimento \(\{1\}\) e \(\{2,3\}\) usano due contenitori.
10.3 Un primo rilassamento lineare¶
Per ottenere un rilassamento lineare del modello \(\mathrm{ILP}_{\mathrm{BPP}}\), rilassiamo i vincoli \(\eqref{cons4_BPP}\) e \(\eqref{cons3_BPP}\) con i seguenti:
Questo modello PL si chiama modello \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\).
Esempio 10.2: modello \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\)
Il modello \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) per l'istanza del BPP dell'Esempio 10.1 è:
Una soluzione ottima \({\tilde{\vet{x}}}(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) è:
Il valore ottimo \(z(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) è \(\frac{8}{5}\).
Di conseguenza, abbiamo il lower bound:
e, poiché \(z(\mathrm{ILP}_{\mathrm{BPP}})\) è intero, \(z(\mathrm{ILP}_{\mathrm{BPP}}) \ge \lceil \frac{8}{5} \rceil = 2\).
Con
-
una variabile duale libera \(\mu_j\) per ogni vincolo \(\eqref{cons1_BPP}\) (\(j \in \mathscr{I}\))
-
una variabile duale non negativa \(\pi_b\) per ogni vincolo \(\eqref{cons2_BPP}\) (\(b \in \mathscr{B}\))
il modello duale del modello \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) è il seguente:
Questo modello PL si chiama modello duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\).
Esempio 10.3: modello \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\)
Il modello duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) per l'istanza del BPP dell'Esempio 10.1 è:
Una soluzione ottima \((\tilde{\vet{\mu}},\tilde{\vet{\pi}})\) di \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) è:
Il valore ottimo \(z(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}}))\) è \(\frac{8}{5}\).
Proposizione 10.1
Una soluzione ottima del modello primale \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) è:
e una soluzione ottima del modello duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) è:
Corollario 10.2
Il valore ottimo dei modelli primale \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) e duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) è:
-
La dimostrazione procede in tre passi:
-
mostriamo che \(\eqref{PP}\) è una soluzione ammissibile del modello primale \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\);
-
mostriamo che \(\eqref{DD}\) è una soluzione ammissibile del modello duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\);
-
mostriamo che le due soluzioni ammissibili hanno lo stesso valore della funzione obiettivo.
Quindi, per la dualità debole della PL, \(\eqref{PP}\) e \(\eqref{DD}\) sono una coppia di soluzioni ottime primale e duale.
-
Dimostrazione
-
1. Per ogni \(j \in \mathscr{I}\), abbiamo:
\[ \sum_{b \in \mathscr{B}} \tilde{x}_{jb} = \sum_{b \in \mathscr{B}} \frac{1}{m} = \frac{m}{m} = 1 \]quindi i vincoli \(\eqref{cons1_BPP}\) sono soddisfatti.
Per ogni \(b \in \mathscr{B}\), abbiamo:
\[ - \sum_{j \in \mathscr{I}} w_j \; \tilde{x}_{jb} + c \; \tilde{y}_b = - \sum_{j \in \mathscr{I}} w_j \; \frac{1}{m} + c \; \frac{\sum_{j \in \mathscr{I}} w_j}{m \; c} = 0 \]quindi i vincoli \(\eqref{cons2_BPP}\) sono soddisfatti.
Abbiamo \(\tilde{x}_{jb} \geq 0\) e \(\tilde{y}_b \geq 0\), per ogni \(j \in \mathscr{I}\) e ogni \(b \in \mathscr{B}\), quindi i vincoli \(\eqref{cons4_BPP_LP}\) e \(\eqref{cons3_BPP_LP}\) sono soddisfatti.
Quindi \(\eqref{PP}\) fornisce una soluzione ammissibile del modello primale \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\).
-
2. Per ogni \(b \in \mathscr{B}\) e ogni \(j \in \mathscr{I}\), abbiamo:
\[ \tilde{\mu}_j - w_j \; \tilde{\pi}_b = \frac{w_j}{c} - \frac{w_j}{c} = 0 \]quindi i vincoli \(\eqref{cons2_D}\) sono soddisfatti.
Per ogni \(b \in \mathscr{B}\), abbiamo:
\[ c \; \tilde{\pi}_b = \frac{c}{c} = 1 \]quindi i vincoli \(\eqref{cons1_D}\) sono soddisfatti.
Abbiamo \(\tilde{\mu}_j \geq 0\) e \(\tilde{\pi}_b \geq 0\), per ogni \(b \in \mathscr{B}\) e ogni \(j \in \mathscr{I}\), quindi i vincoli \(\eqref{cons3_D}\) e \(\eqref{cons4_D}\) sono soddisfatti.
Quindi \(\eqref{DD}\) fornisce una soluzione ammissibile del modello duale \(D(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\).
-
3. Per le funzioni obiettivo abbiamo:
\[ \sum_{b \in \mathscr{B}} \tilde{y}_b = \sum_{b \in \mathscr{B}} \frac{\sum_{j \in \mathscr{I}} w_j}{m \; c} = \frac{\sum_{j \in \mathscr{I}} w_j}{c} = \sum_{j \in \mathscr{I}} \tilde{\mu}_j \]quindi i valori delle funzioni obiettivo primale e duale coincidono.
Quindi, per la dualità debole della PL, \(\eqref{PP}\) e \(\eqref{DD}\) sono una coppia di soluzioni ottime primale e duale. □
- Riportiamo una dimostrazione alternativa, che non usa la formulazione duale ma ragiona direttamente sul valore minimo della funzione obiettivo imposto dai vincoli.
Proposizione 10.3
Una soluzione ottima del modello primale \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) è:
e il valore ottimo è
Dimostrazione
Sommando i vincoli di capacità \(\eqref{cons2_BPP}\) su tutti i \(b\in\mathscr{B}\) otteniamo
quindi
Quindi ogni soluzione ammissibile di \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\) soddisfa \(\eqref{eq:bpp-lb}\).
Consideriamo ora il punto definito in \(\eqref{PP_alternative}\). Per ogni \(j\in\mathscr{I}\), abbiamo
quindi i vincoli \(\eqref{cons1_BPP}\) valgono. Inoltre, per ogni \(b\in\mathscr{B}\), abbiamo
quindi i vincoli \(\eqref{cons2_BPP}\) valgono all'uguaglianza. Infine, i vincoli \(\eqref{cons4_BPP_LP}\) e \(\eqref{cons3_BPP_LP}\) sono soddisfatti per costruzione. Quindi il punto definito in \(\eqref{PP_alternative}\) è una soluzione ammissibile di \(\mathrm{LP}\text{-}0_{\mathrm{BPP}}\).
Il valore obiettivo di \(\eqref{PP_alternative}\) è
che coincide con il lower bound \(\eqref{eq:bpp-lb}\). Quindi il punto \(\eqref{PP_alternative}\) è una soluzione ottima con valore obiettivo \(\eqref{VAL_alternative}\). □
10.4 Un secondo rilassamento lineare¶
Per ottenere un rilassamento lineare del modello \(\mathrm{ILP}_{\mathrm{BPP}}\), rilassiamo i vincoli \(\eqref{cons4_BPP}\) e \(\eqref{cons3_BPP}\) con i seguenti:
Questo modello PL si chiama modello \(\mathrm{LP}_{\mathrm{BPP}}\).
Esempio 10.4: modello \(\mathrm{LP}_{\mathrm{BPP}}\)
Il modello \(\mathrm{LP}_{\mathrm{BPP}}\) per l'istanza del BPP dell'Esempio 10.1 è:
Una soluzione ottima \({\tilde{\vet{x}}}(\mathrm{LP}_{\mathrm{BPP}})\) è:
Il valore ottimo \(z(\mathrm{LP}_{\mathrm{BPP}})\) è \(\frac{8}{5}\). Di conseguenza, abbiamo lo stesso lower bound di prima.
Con
-
una variabile duale libera \(\mu_j\) per ogni vincolo \(\eqref{cons1_BPP}\) (\(j \in \mathscr{I}\))
-
una variabile duale non negativa \(\pi_b\) per ogni vincolo \(\eqref{cons2_BPP}\) (\(b \in \mathscr{B}\))
-
una variabile duale non positiva \(\lambda_b\) per ogni vincolo \(\eqref{cons3_BPP_LP_LL}\) (\(b \in \mathscr{B}\))
il modello duale del modello \(\mathrm{LP}_{\mathrm{BPP}}\) è il seguente:
Questo modello PL si chiama modello duale \(D(\mathrm{LP}_{\mathrm{BPP}})\).
Esempio 10.5: modello \(D(\mathrm{LP}_{\mathrm{BPP}})\)
Il modello \(D(\mathrm{LP}_{\mathrm{BPP}})\) dell'Esempio 10.1 è:
Il valore ottimo \(z(D(\mathrm{LP}_{\mathrm{BPP}}))\) è \(\frac{8}{5}\). Una soluzione ottima \((\tilde{\vet{\mu}},\tilde{\vet{\pi}},\tilde{\vet{\lambda}})\) di \(D(\mathrm{LP}_{\mathrm{BPP}})\) è:
-
I vincoli:
\[ x_{jb} \le 1, \qquad \forall j \in \mathscr{I},\; \forall b \in \mathscr{B}, \]sono anch'essi validi poiché, per ogni \(j \in \mathscr{I}\) e ogni \(b \in \mathscr{B}\), abbiamo:
\[ x_{jb} \in \{0,1\} ~~~~~\Rightarrow~~~~~ x_{jb} \le 1 \]ma sono implicati dai vincoli \(\eqref{cons1_BPP}\).
Proposizione 10.4
Una soluzione ottima del modello primale \(\mathrm{LP}_{\mathrm{BPP}}\) è:
e una soluzione ottima del modello duale \(D(\mathrm{LP}_{\mathrm{BPP}})\) è:
Corollario 10.5
Il valore ottimo dei modelli primale \(\mathrm{LP}_{\mathrm{BPP}}\) e duale \(D(\mathrm{LP}_{\mathrm{BPP}})\) è:
Dimostrazione
La dimostrazione è simile alla precedente. In più, occorre osservare che
poiché \(\sum_{j} w_j / c \le z(\mathrm{ILP}_{\mathrm{BPP}}) \le m\), dove l'ultima disuguaglianza vale perché \(m\) è un upper bound sul numero di contenitori in una qualunque soluzione ottima del BPP. Di conseguenza, anche i vincoli \(\eqref{cons3_BPP_LP_LL}\) sono soddisfatti. □
10.4.1 Alcune proprietà teoriche importanti¶
- Le due proposizioni seguenti mostrano che il rapporto fra \(z(\mathrm{LP}_{\mathrm{BPP}})\) e \(z(\mathrm{ILP}_{\mathrm{BPP}})\) è almeno un mezzo per ogni istanza del BPP (per ipotesi \(z(\mathrm{ILP}_{\mathrm{BPP}}) >1\), poiché gli oggetti non entrano tutti in un solo contenitore). Inoltre, esistono istanze per cui il valore un mezzo si raggiunge asintoticamente quando la capacità \(c \to +\infty\).
Proposizione 10.6
Per ogni istanza del BPP abbiamo:
Dimostrazione
Consideriamo una soluzione ottima \(\tilde{\vet{x}}(\mathrm{ILP}_{\mathrm{BPP}})\) di valore \(z=z(\mathrm{ILP}_{\mathrm{BPP}})\) (numero di contenitori usati). Possiamo supporre, senza perdita di generalità, che i contenitori \(1,2,\dots,z\) siano quelli non vuoti.
In una soluzione ottima, due contenitori non possono avere entrambi peso totale degli oggetti al più \(c/2\), altrimenti il loro contenuto si potrebbe unire in un solo contenitore senza superare la capacità \(c\) (contro l'ottimalità).
Se tutti i contenitori non vuoti hanno peso totale degli oggetti maggiore di \(c/2\), allora
Altrimenti, supponiamo che esista un contenitore con peso totale degli oggetti al più \(c/2\). Rinumerando i contenitori se necessario, sia il contenitore \(z\), così che
Poiché \(z>1\), esiste un altro contenitore, diciamo il contenitore 1; per l'ottimalità, deve valere
e, per l'ottimalità, ogni contenitore in \(\{2,3,\dots,z-1\}\) ha peso totale degli oggetti \(>c/2\). Quindi,
□
Proposizione 10.7
Esistono istanze del BPP tali che:
Dimostrazione
Dato \(\vartheta \in \Z_{\ge 1}\), consideriamo l'istanza del BPP con capacità dei contenitori \(c = 2\vartheta\) e \(n\) oggetti con i seguenti pesi:
Nessun contenitore può contenere più di un oggetto, quindi ogni oggetto va inserito da solo nel proprio contenitore. Quindi il valore ottimo del BPP è
Per il rilassamento lineare abbiamo:
Ne segue che:
Di conseguenza, concludiamo che:
□
- Le due proposizioni seguenti mostrano che il rapporto fra \(\lceil z(\mathrm{LP}_{\mathrm{BPP}}) \rceil\) e \(z(\mathrm{ILP}_{\mathrm{BPP}})\) è almeno un mezzo per ogni istanza del BPP. Inoltre, esistono istanze per cui il valore un mezzo si raggiunge asintoticamente quando il numero di oggetti \(n \to +\infty\).
Proposizione 10.8
Per ogni istanza del BPP abbiamo:
Dimostrazione
Consideriamo una soluzione ottima \(\tilde{\vet{x}}(\mathrm{ILP}_{\mathrm{BPP}})\) di valore \(z=z(\mathrm{ILP}_{\mathrm{BPP}})\) (numero di contenitori usati). Possiamo supporre, senza perdita di generalità, che i contenitori \(1,2,\dots,z\) siano quelli non vuoti.
In una soluzione ottima, due contenitori non possono avere entrambi peso totale degli oggetti al più \(c/2\), altrimenti il loro contenuto si potrebbe unire in un solo contenitore senza superare la capacità \(c\) (contro l'ottimalità).
Se tutti i contenitori non vuoti hanno peso totale degli oggetti maggiore di \(c/2\), allora
Altrimenti, supponiamo che esista un contenitore con peso totale degli oggetti al più \(c/2\). Rinumerando i contenitori se necessario, sia il contenitore \(z\). Allora abbiamo:
Poiché \(z\) è intero, questo implica:
Quindi:
□
Proposizione 10.9
Esistono istanze del BPP tali che:
Dimostrazione
Dato \(n \in \Z_{\ge 2}\) (con \(n\) pari), consideriamo l'istanza del BPP con capacità dei contenitori \(c=n\) e \(n\) oggetti con i seguenti pesi:
Nessun contenitore può contenere più di un oggetto, poiché \(w_j>c/2\) per ogni \(j\). Quindi ogni oggetto va inserito da solo nel proprio contenitore, e il valore ottimo del BPP è
Per il rilassamento lineare abbiamo:
quindi \(\lceil z(\mathrm{LP}_{\mathrm{BPP}})\rceil=\frac{n}{2}+1\) (poiché \(n\) è pari). Ne segue che:
Di conseguenza, concludiamo che:
□
Avanti: 10.5 Un modello PLI per il problema del cutting stock