10.5 Un modello PLI per il problema del cutting stock¶
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 cutting stock (CSP), definito nel Capitolo 3 «Problemi di packing», con la sua istanza di riferimento.
-
Dato un upper bound \(m \in \Z_{\ge 2}\) sul numero di contenitori usati in una qualunque soluzione ottima del CSP, introduciamo le seguenti \(mn\) variabili intere:
\[ \begin{gathered} x_{jb} = \text{numero di copie dell'oggetto $j$ inserite nel contenitore $b$} \\[1ex] \forall j \in \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 \mathscr{B}. \]Il numero totale \(\sum_{j \in \mathscr{I}} d_j\) di copie è un valore valido di \(m\), e lo è anche il numero di contenitori di una qualunque soluzione ammissibile del CSP.
Con queste variabili, un modello di programmazione lineare intera (PLI) per il problema del cutting stock (CSP) è il seguente:
Questo modello PLI si chiama modello \(\mathrm{ILP}_{\mathrm{CSP}}\).
-
Descrizione della funzione obiettivo e dei vincoli del modello \(\mathrm{ILP}_{\mathrm{CSP}}\):
-
la funzione obiettivo lineare \(\eqref{obj_CSP}\) minimizza il numero totale di contenitori usati;
-
i vincoli \(\eqref{cons1_CSP}\) garantiscono che siano inserite esattamente \(d_j\) copie di ogni oggetto \(j\) (\(n\) vincoli lineari);
-
i vincoli \(\eqref{cons2_CSP}\) collegano le variabili intere alle variabili di attivazione e impongono i limiti di capacità, come i vincoli (10.1c) del modello \(\mathrm{ILP}_{\mathrm{BPP}}\) (\(m\) vincoli lineari);
-
infine, i vincoli \(\eqref{cons3_CSP}\) e \(\eqref{cons4_CSP}\) definiscono le variabili del modello PLI.
-
-
Con \(d_j=1\) per ogni oggetto, i vincoli \(\eqref{cons1_CSP}\) danno \(x_{jb}\in\{0,1\}\), e il modello \(\mathrm{ILP}_{\mathrm{CSP}}\) è il modello \(\mathrm{ILP}_{\mathrm{BPP}}\).
-
Le copie di un oggetto sono identiche: una sola variabile intera le conta in ogni contenitore. Il modello \(\mathrm{ILP}_{\mathrm{BPP}}\) sull'insieme esteso degli oggetti userebbe \(m\sum_{j} d_j\) variabili binarie invece di \(mn\) variabili intere.
Esempio 10.6: modello \(\mathrm{ILP}_{\mathrm{CSP}}\)
Consideriamo contenitori di capacità \(c = 10\) e un insieme \(\mathscr{I} = \{1,2,3,4\}\) di \(4\) oggetti (\(n=4\)), con i seguenti pesi e copie richieste:
Questa è l'istanza del CSP del Capitolo 3 «Problemi di packing», dove si trova a occhio una soluzione con \(3\) contenitori: quindi \(m=3\) è un upper bound valido. Il modello \(\mathrm{ILP}_{\mathrm{CSP}}\) con \(m=3\) per questa istanza del CSP è:
Una soluzione ottima \(\tilde{\vet x}(\mathrm{ILP}_{\mathrm{CSP}})\) è:
con tutte le altre variabili pari a \(0\). Il valore ottimo è \(z(\mathrm{ILP}_{\mathrm{CSP}}) = 3\), come trovato nel Capitolo 3. I contenitori contengono una copia degli oggetti \(1\) e \(4\) (peso \(10\)), tre copie dell'oggetto \(3\) (peso \(9\)), e una copia degli oggetti \(1\) e \(2\) (peso \(9\)). La soluzione ottima non è unica: anche la soluzione del Capitolo 3, con i contenitori \(\{4,1\}\), \(\{1,3,3\}\) e \(\{2,3\}\), usa \(3\) contenitori.
10.6 Errori tipici¶
Attenzione
-
Scegliere \(m\) troppo piccolo. Il numero \(m\) di contenitori deve essere un upper bound sul numero di contenitori di una soluzione ottima: con \(m < z(\mathrm{ILP}_{\mathrm{BPP}})\) il modello non ha soluzioni ammissibili. Il valore \(m=n\) è sempre valido.
-
Dimenticare di arrotondare per eccesso. Il valore ottimo del modello \(\mathrm{ILP}_{\mathrm{BPP}}\) è intero, quindi il lower bound dei rilassamenti è \(\lceil \sum_{j} w_j / c \rceil\); nell'Esempio 10.1 è \(\lceil \tfrac{8}{5} \rceil = 2\), non \(\tfrac{8}{5}\).
-
Credere che il modello conti solo i contenitori non vuoti. I vincoli permettono \(y_b=1\) per un contenitore vuoto: è la funzione obiettivo che spegne questi contenitori, in ogni soluzione ottima.
-
Ignorare la simmetria. Permutando gli indici dei contenitori si ottiene un'altra soluzione ottima con lo stesso riempimento: il modello \(\mathrm{ILP}_{\mathrm{BPP}}\) ha molte soluzioni ottime equivalenti.
-
Aspettarsi un rilassamento migliore da \(y_b \le 1\). Il secondo rilassamento ha lo stesso valore ottimo del primo: i limiti superiori \(y_b \le 1\) non tagliano la soluzione ottima del primo rilassamento.
-
Dichiarare binarie le variabili del modello di cutting stock. Nel modello \(\mathrm{ILP}_{\mathrm{CSP}}\) \(x_{jb}\) conta le copie dell'oggetto \(j\) nel contenitore \(b\): con \(x_{jb}\in\{0,1\}\) le tre copie dell'oggetto \(3\) dell'esempio non potrebbero stare nello stesso contenitore.
10.7 In sintesi¶
In sintesi
-
Il modello \(\mathrm{ILP}_{\mathrm{BPP}}\) ha \(m \cdot n\) variabili di assegnamento \(x_{jb}\) e \(m\) variabili di attivazione \(y_b\); i vincoli di capacità le collegano.
-
Entrambi i rilassamenti lineari hanno valore ottimo \(z(\mathrm{LP}_{\mathrm{BPP}}) = \sum_{j} w_j / c\), con soluzione duale \(\tilde{\mu}_j = w_j/c\) e \(\tilde{\pi}_b = 1/c\).
-
Poiché il valore ottimo è intero, \(\lceil z(\mathrm{LP}_{\mathrm{BPP}}) \rceil\) è un lower bound sul numero di contenitori.
-
Il rapporto fra \(z(\mathrm{LP}_{\mathrm{BPP}})\) e \(z(\mathrm{ILP}_{\mathrm{BPP}})\) è almeno \(\tfrac{1}{2}\), e il valore \(\tfrac{1}{2}\) si raggiunge asintoticamente; lo stesso vale per \(\lceil z(\mathrm{LP}_{\mathrm{BPP}}) \rceil\).
-
Il modello \(\mathrm{ILP}_{\mathrm{CSP}}\) ha la struttura del modello \(\mathrm{ILP}_{\mathrm{BPP}}\), con \(mn\) variabili intere \(x_{jb}\) che contano le copie e le domande \(d_j\) come termini noti; sull'istanza del CSP del Capitolo 3 il suo valore ottimo è \(3\).
Quadro riassuntivo dell'Esempio 10.1. Bound su \(z(\mathrm{ILP}_{\mathrm{BPP}})\) calcolati in questo capitolo:
| Bound | Valore | Da |
|---|---|---|
| Primo rilassamento | \(\tfrac{8}{5}\) | \(z(\mathrm{LP}\text{-}0_{\mathrm{BPP}})\) |
| Secondo rilassamento | \(\tfrac{8}{5}\) | \(z(\mathrm{LP}_{\mathrm{BPP}})\) |
| Lower bound | \(2\) | \(\lceil \tfrac{8}{5} \rceil\) |
| Valore ottimo | \(2\) | schemi \(\{1,3\}\) e \(\{2\}\) |
Qui il bound arrotondato coincide già con il valore ottimo.
Esercizi su questo capitolo: Problemi di packing