Problemi di programmazione lineare¶
Parte 1 · Funzioni lineari, poliedri e problemi di programmazione lineare · Capitolo 4 · Dispensa, volume 1 (PDF) · Esercizi: Problemi di programmazione lineare · App: Il metodo grafico
4.1 Forma canonica di massimo¶
Definizione 4.1: Problemi di programmazione lineare in forma canonica di massimo
Dati:
-
un vettore dei costi \({\boldsymbol c} \in \R^{n}\)
-
una matrice dei vincoli \({\boldsymbol A} \in \R^{m \times n }\)
-
un vettore dei termini noti \({\boldsymbol b} \in \R^{m}\) con \(m\) righe
\[ \underbrace{ \begin{pmatrix} c_{1} \\ c_{2} \\ \vdots \\ \vdots \\ c_{n} \\ \end{pmatrix} }_{{\boldsymbol c}} \in \R^{n} \qquad \qquad \underbrace{ \begin{pmatrix} a_{11} & a_{12} & \dots & \dots & a_{1n}\\ a_{21} & a_{22} & \dots & \dots & a_{2n}\\ \vdots & \vdots & \ddots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & \dots & a_{mn}\\ \end{pmatrix} }_{{\boldsymbol A}} \in \R^{m \times n } \qquad \qquad \underbrace{ \begin{pmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{m} \\ \end{pmatrix} }_{{\boldsymbol b}} \in \R^{m} \]
un problema di programmazione lineare LP in forma canonica di massimo con \(n\) variabili non negative
e \(m\) vincoli lineari di minore o uguale è il seguente problema di ottimizzazione:
dove \({\boldsymbol 0} = \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 0 \\ \end{pmatrix}\) è un vettore (colonna) di \(n\) zeri.
Esempio 4.1: Problema LP in forma canonica di massimo
Consideriamo i seguenti dati di un problema LP con \(n=2\) e \(m=3\):
Le componenti numeriche dei due vettori colonna e della matrice sono
Il problema ha \(n=2\) variabili non negative \({\boldsymbol x}= \begin{pmatrix} x_1 \\[1ex] x_2\\ \end{pmatrix}.\)
Il problema LP associato in forma canonica di massimo con \(n=2\) variabili non negative e \(m=3\) vincoli lineari di minore o uguale è il seguente:
Esempio 4.2: Problema LP in forma canonica di massimo
Consideriamo i seguenti dati di un problema LP con \(n=2\) e \(m=2\):
I valori numerici dei due vettori colonna e della matrice sono
Il problema ha \(n=2\) variabili decisionali non negative \({\boldsymbol x}= \begin{pmatrix} x_1 \\[1ex] x_2\\ \end{pmatrix}.\)
Il problema LP associato in forma canonica di massimo con \(n=2\) variabili non negative e \(m=2\) vincoli lineari di minore o uguale è il seguente:
4.1.1 Regione ammissibile e funzione obiettivo¶
Definizione 4.2: regione ammissibile e funzione obiettivo
-
La regione ammissibile di un problema LP (4.1) è il poliedro \(F\) definito come segue:
\[\begin{equation*} \label{FeasibleRegion} \begin{split} F = \left\{~ \underbrace{ \begin{pmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \\ \end{pmatrix}}_{{\boldsymbol x}} \in \R^n : \right. ~~ & \underbrace{\sum_{j=1}^n a_{ij} \, x_j \le b_i,~~\forall i \in \{1,2,\dots,m\}}_{{\boldsymbol A}\,{\boldsymbol x} \le {\boldsymbol b}}, \\[1ex] & \left. \vphantom{\begin{pmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{pmatrix}} \underbrace{x_j \ge 0,~~\forall j \in \{1,2,\dots,n\}}_{{\boldsymbol x} \ge {\boldsymbol 0}} ~\right\}. \end{split} \tag{4.2} \end{equation*}\]La regione ammissibile è definita dai vincoli lineari di minore o uguale \(\eqref{Cons}\) e dai vincoli di non negatività \(\eqref{NonNegCons}\).
-
La funzione obiettivo \(\eqref{ObjFunc}\) di un problema LP (4.1), da massimizzare, è la funzione lineare \(f\) (scalare) definita come segue:
\[\begin{equation*} \label{ObjectiveFunction} f: \R^{n} \rightarrow \R, \qquad f : \underbrace{\begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix}}_{{\boldsymbol x}} \mapsto \underbrace{\sum_{j=1}^n c_j x_j}_{{\boldsymbol c}' {\boldsymbol x}} \tag{4.3} \end{equation*}\]
Esempio 4.3: funzione obiettivo
La funzione obiettivo del problema LP dell'Esempio 4.1 è la funzione lineare scalare:
Esempio 4.4: regione ammissibile
La regione ammissibile del problema LP dell'Esempio 4.1 è il poliedro:
4.1.2 Lower bound¶
Definizione 4.3: soluzione ammissibile e lower bound
-
Data
\[ \underbrace{\begin{pmatrix} \bar x_1 \\ \bar x_2 \\ \vdots \\ \bar x_n \end{pmatrix}}_{{ \bar{\boldsymbol x}}(\, LP \,)} \in F \]una soluzione ammissibile del problema LP (4.1) (un punto che soddisfa i vincoli \(\eqref{Cons}\) e \(\eqref{NonNegCons}\)), possiamo calcolare un lower bound \(LB(\bar{\boldsymbol x})\) sul valore ottimo \(z(\, LP \,)\) come segue:
\[\begin{equation*} \label{FeasSolCanonical} LB(\bar{\boldsymbol x})= \sum_{j=1}^n c_j \; \bar{x}_j \tag{4.4} \end{equation*}\]
Per ogni soluzione ammissibile \({ \bar{\boldsymbol x}}(\, LP \,) \in F\) di un problema LP (4.1), abbiamo
Esempio 4.5: Soluzioni ammissibili e lower bound
Consideriamo il problema LP dell'Esempio 4.1. Una soluzione ammissibile è per esempio \({ \bar{\boldsymbol x}}(\, LP \,)= \begin{pmatrix} 0 \\ 4 \end{pmatrix}\) (dove \(\bar{x}_1=0\) e \(\bar{x}_2=4\)) poiché:
Di conseguenza, un lower bound \(LB(\bar{\boldsymbol x})\) sul valore ottimo \(z(\, LP \,)\) del problema LP è:
4.1.3 Metodo grafico¶
Una soluzione ottima di un problema LP (4.1) in forma canonica di massimo con due variabili si può determinare graficamente usando la direzione del gradiente della funzione obiettivo e gli insiemi di livello perpendicolari al gradiente.
Esempio 4.6: Metodo grafico
Per il problema LP dell'Esempio 4.1:
una soluzione ottima è:
e il valore ottimo è:
In blu tratteggiato, da sinistra a destra, gli insiemi di livello \(5\,x_1 + 2\,x_2 = 0\), \(5\,x_1 + 2\,x_2 = 8\), \(5\,x_1 + 2\,x_2 = \frac{40}{3}\), \(5\,x_1 + 2\,x_2 = \frac{108}{5}\) e \(5\,x_1 + 2\,x_2 = 32\) della funzione obiettivo; il vertice ottimo è disegnato in blu.
Esempio 4.7: Metodo grafico
Per il problema LP dell'Esempio 4.2:
una soluzione ottima è:
e il valore ottimo è:
In blu tratteggiato, dal basso verso l'alto, gli insiemi di livello \(-2\,x_1 - 4\,x_2 = -6\) e \(-2\,x_1 - 4\,x_2 = -8\) della funzione obiettivo; il vertice ottimo \((1,1)\) è disegnato in blu e il gradiente è tracciato a partire dal punto \((2,4)\).
4.2 Forma standard di massimo¶
Definizione 4.4: Problemi di programmazione lineare in forma standard di massimo
Dati:
-
un vettore dei costi \({\boldsymbol c} \in \R^{n}\)
-
una matrice dei vincoli \({\boldsymbol A} \in \R^{m \times n }\)
-
un vettore dei termini noti \({\boldsymbol b} \in \R^{m}\) con \(m\) righe
\[ \underbrace{ \begin{pmatrix} c_{1} \\ c_{2} \\ \vdots \\ \vdots \\ c_{n} \\ \end{pmatrix} }_{{\boldsymbol c}} \in \R^{n} \qquad \qquad \underbrace{ \begin{pmatrix} a_{11} & a_{12} & \dots & \dots & a_{1n}\\ a_{21} & a_{22} & \dots & \dots & a_{2n}\\ \vdots & \vdots & \ddots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & \dots & a_{mn}\\ \end{pmatrix} }_{{\boldsymbol A}} \in \R^{m \times n } \qquad \qquad \underbrace{ \begin{pmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{m} \\ \end{pmatrix} }_{{\boldsymbol b}} \in \R^{m} \]
un problema di programmazione lineare LP in forma standard di massimo con \(n\) variabili non negative
e \(m\) vincoli lineari di uguaglianza è il seguente problema di ottimizzazione:
dove \({\boldsymbol 0} = \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 0 \\ \end{pmatrix}\) è un vettore (colonna) di \(n\) zeri.
Esempio 4.8: Problema LP in forma standard di massimo
Consideriamo i seguenti dati di un problema LP con \(n=3\) e \(m=1\):
I valori numerici dei due vettori colonna e della matrice sono
Il problema ha \(n=3\) variabili non negative \({\boldsymbol x}= \begin{pmatrix} x_1 \\[1ex] x_2 \\[1ex] x_3\\ \end{pmatrix}.\)
Il problema LP associato in forma standard di massimo con \(n=3\) variabili non negative e \(m=1\) vincolo lineare di uguaglianza è il seguente:
4.2.1 Regione ammissibile e funzione obiettivo¶
Definizione 4.5: regione ammissibile e funzione obiettivo
-
La regione ammissibile di un problema LP (4.6) è il poliedro \(F\) definito come segue:
\[\begin{equation*} \label{STANDARD_FeasibleRegion} \begin{split} F = \left\{~ \underbrace{ \begin{pmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \\ \end{pmatrix}}_{{\boldsymbol x}} \in \R^n : \right. ~~ & \underbrace{\sum_{j=1}^n a_{ij} \, x_j = b_i,~~\forall i \in \{1,2,\dots,m\}}_{{\boldsymbol A}\,{\boldsymbol x} ={\boldsymbol b}}, \\[1ex] & \left. \vphantom{\begin{pmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{pmatrix}} \underbrace{x_j \ge 0,~~\forall j \in \{1,2,\dots,n\}}_{{\boldsymbol x} \ge {\boldsymbol 0}} ~\right\}. \end{split} \tag{4.7} \end{equation*}\]La regione ammissibile è definita dai vincoli lineari di uguaglianza \(\eqref{STANDARD_Cons}\) e dai vincoli di non negatività \(\eqref{STANDARD_NonNegCons}\).
-
La funzione obiettivo \(\eqref{STANDARD_ObjFunc}\) di un problema LP (4.6), da massimizzare, è la funzione lineare \(f\) (scalare) definita come segue:
\[\begin{equation*} \label{STANDARD_ObjectiveFunction} f: \R^{n} \rightarrow \R, \qquad f : \underbrace{\begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix}}_{{\boldsymbol x}} \mapsto \underbrace{\sum_{j=1}^n c_j x_j}_{{\boldsymbol c}' {\boldsymbol x}} \tag{4.8} \end{equation*}\]
Esempio 4.9: funzione obiettivo
La funzione obiettivo del problema LP dell'Esempio 4.8 è la funzione lineare scalare:
Esempio 4.10: regione ammissibile
La regione ammissibile del problema LP dell'Esempio 4.8 è il poliedro:
4.2.2 Lower bound¶
Definizione 4.6: soluzione ammissibile e lower bound
-
Data
\[ \underbrace{\begin{pmatrix} \bar x_1 \\ \bar x_2 \\ \vdots \\ \bar x_n \end{pmatrix}}_{{ \bar{\boldsymbol x}}(\, LP \,)} \in F \]una soluzione ammissibile del problema LP (4.6) (un punto che soddisfa i vincoli \(\eqref{STANDARD_Cons}\) e \(\eqref{STANDARD_NonNegCons}\)), possiamo calcolare un lower bound \(LB(\bar{\boldsymbol x})\) sul valore ottimo \(z(\, LP \,)\) come segue:
\[\begin{equation*} \label{FeasSolStandard} LB(\bar{\boldsymbol x})= \sum_{j=1}^n c_j \; \bar{x}_j \tag{4.9} \end{equation*}\]
Per ogni soluzione ammissibile \({ \bar{\boldsymbol x}}(\, LP \,) \in F\) di un problema LP (4.6), abbiamo
Esempio 4.11: Soluzioni ammissibili e lower bound
Consideriamo il problema LP dell'Esempio 4.8. Una soluzione ammissibile è per esempio \({ \bar{\boldsymbol x}}(\, LP \,)= \begin{pmatrix} 1 \\ \frac13 \\ 1 \end{pmatrix}\) (dove \(\bar{x}_1 = 1\), \(\bar{x}_2 = \tfrac13\) e \(\bar{x}_3 = 1\)) poiché:
Di conseguenza, un lower bound \(LB(\bar{\boldsymbol x})\) sul valore ottimo \(z(\, LP \,)\) del problema LP è:
4.2.3 Metodo grafico¶
Una soluzione ottima di un problema LP (4.6) in forma standard di massimo con due o tre variabili si può determinare graficamente usando la direzione del gradiente della funzione obiettivo e gli insiemi di livello perpendicolari al gradiente.
Esempio 4.12: Metodo grafico
Per il problema LP dell'Esempio 4.8:
Tutte le soluzioni ottime giacciono sul segmento
cioè sul segmento che congiunge i punti \(\begin{pmatrix} 2\\ 0\\ 0 \end{pmatrix}\) e \(\begin{pmatrix} 0\\ 0\\ 4 \end{pmatrix}\). Prendendo per esempio la soluzione ottima \(\tilde{\boldsymbol x}(\, LP \,) = \begin{pmatrix} 2\\ 0\\ 0 \end{pmatrix}\) (dove \(\tilde{x}_1=2\), \(\tilde{x}_2=0\) e \(\tilde{x}_3=0\)), il valore ottimo è: \(z(\, LP \,) = 2\,\tilde{x}_1 + 2\,\tilde{x}_2 + \tilde{x}_3 = 2 \cdot 2 + 2 \cdot 0 + 0 = 4.\)
Esercizi su questo capitolo: Problemi di programmazione lineare
Laboratorio interattivo¶
Le idee del capitolo, da toccare con mano: muovi i cursori e trascina i punti. Ogni app si apre anche a tutta pagina nel laboratorio interattivo: Il metodo grafico.