Le soluzioni di base
Nella programmazione lineare le soluzioni di base (SB) di un sistema vincolato sono le soluzioni ottenute usando n vincoli linearmente indipendenti. Se le soluzioni sono ammissibili si parla di soluzioni ammissibili di base (SBA).
Cosa sono le soluzioni di base
Ho un poliedro P in forma standard
$$ A \cdot x=b $$
- A è una matrice Am,n con m righe e n colonne
- x è il vettore delle variabili di decisione
- b è il vettore dei termini noti
Esempio. Il seguente sistema vincolato ha m=3 righe e n=4 colonne. I vincoli non contano come riga. $$ \begin{cases} x_1 +x_2 + x_3 = 4 \\ 2x_2 +x_3 +x_4 = 6 \\ 3x_1 -x_2-2x_4 = 0 \\ x_1,x_2,x_3,x_4 \ge 0 \end{cases} $$ si può riscrivere in forma matriciale $$ Ax=b $$ $$ \begin{pmatrix} 1 & 1 & 1 & 0 \\ 0 & 2 & 1 & 1 \\ 3 & -1 & 0 & -2 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{pmatrix} = \begin{pmatrix} 4 \\ 6 \\ 0 \end{pmatrix}$$
Il sistema soddisfa le seguenti condizioni
$$ rg(A) = m $$
$$ m \le n $$
Esempio. Il rango del sistema precedente è uguale a 3. $$ r_k \begin{pmatrix} 1 & 1 & 1 & 0 \\ 0 & 2 & 1 & 1 \\ 3 & -1 & 0 & -2 \end{pmatrix} = 3 = m $$ Il numero delle righe (m=3) è minore uguale al numero delle incognite/colonne (n=4). $$ m=3 \le n=4 $$
Questo vuol dire che il sistema ammette soluzioni secondo il teorema di Rouché-Capelli.
$$ rg(A) = rg(A|b) $$
A partire da questo sistema posso costruire una base B ottenuta selezionando m colonne della matrice A.
$$ [ B_{(1)}, ..., B_{( m)} ] $$
Nota. Le lettere B(1)...B(m) indicano il numero indice della colonna della matrice ( es 1=prima colonna, 2=seconda colonna, ecc. ).
Le colonne selezionate nella base B devono essere vettori linearmente indipendenti.
Usando questi indici, posso costruire una sottomatrice quadrata AB con colonne linearmente indipendenti.
$$ A_B = [ A_{B_1} , ... , A_{B_m} ] $$
Esempio. Scegliendo [1,2,3] seleziono la prima e la seconda colonna della matrice delle incognite A. $$ A_{B_1} = \begin{pmatrix} 1 & 1 & 1 \\ 0 & 2 & 1 \\ 3 & -1 & 0 \end{pmatrix} $$
Con le restanti colonne della matrice A, quelle esclude da AB, posso formare un'altra sottomatrice AN.
Esempio. Se scelgo le colonne [1,2,3] , le colonne escluse della matrice A sono [4]. In questo caso è solo una ma potrebbero anche essere due o più. Quindi la matrice AN è la seguente. $$ A_N = \begin{pmatrix} 0 \\ 1 \\ -2 \end{pmatrix} $$
Quindi, posso riscrivere la matrice A come composizione delle sottomatrici AB e AN
$$ A = [ A_B , A_N ] $$
Esempio. Nell'esempio precedente la matrice A è composta da $$ A = [ A_B , A_N ] = [ \begin{pmatrix} 1 & 1 & 1 \\ 0 & 2 & 1 \\ 3 & -1 & 0 \end{pmatrix} , \begin{pmatrix} 0 \\ 1 \\ -2 \end{pmatrix} ] = \begin{pmatrix} 1 & 1 & 1 & 0 \\ 0 & 2 & 1 & 1 \\ 3 & -1 & 0 & -2 \end{pmatrix} $$
Tenendo conto degli indici delle colonne di AB e AN posso formare due vettori con le rispettive incognite.
$$ x = \begin{pmatrix} x_B \\ x_N \end{pmatrix} \ge 0 $$
Esempio. La matrice AB è composta dalla prima, seconda e terza colonna [1,2,3] della matrice A. Quindi, il vettore xB è composto dalle incognite x1 , x2 e x3. $$ x_B = \begin{pmatrix} x_1 & x_2 & x_3 \end{pmatrix} $$ La matrice AN è composta dalla quarta colonna [4] della matrice A. Quindi, il vettore xN è composto dall'incognita x4. In questo caso è solo una ma potrebbero anche essere due o più. $$ x_N = \begin{pmatrix} x_4 \end{pmatrix} $$
Posso così riscrivere il sistema nel seguente modo:
$$ Ax = b $$
$$ [ A_B , A_N ] [ x_B,x_N ] = b $$
$$ A_B x_B + A_N x_N = b$$
Quindi, le incognite xB della base sono determinate da:
$$ A_B x_B + A_N x_N = b$$
$$ A_B x_B = b - A_N x_N $$
$$ x_B = \frac{b - A_N x_N}{A_B} $$
$$ x_B = A_B^{-1} ( b - A_N x_N ) $$
$$ x_B = A_B^{-1} b - A_B^{-1} A_N x_N $$
Il vettore delle incognite diventa
$$ x = \begin{pmatrix} x_B \\ x_N \end{pmatrix} \ge 0 $$
$$ x = \begin{pmatrix} A_B^{-1} b - A_B^{-1} A_N x_N \\ x_N \end{pmatrix} \ge 0 $$
Quest'ultima forma è detta forma canonica.
E' la forma standard rappresentata rispetto agli indici della base B.
Come trovare la soluzione del sistema?
Per prima cosa metto a zero il vettore xN=0.
$$ x_N = 0 $$
Così facendo il vettore x si riduce a
$$ x = \begin{pmatrix} A_B^{-1} b - A_B^{-1} A_N x_N \\ x_N \end{pmatrix} \ge 0 $$
$$ x = \begin{pmatrix} A_B^{-1} b - A_B^{-1} A_N \cdot 0 \\ 0 \end{pmatrix} \ge 0 $$
$$ x = \begin{pmatrix} A_B^{-1} b \\ 0 \end{pmatrix} \ge 0 $$
Le soluzioni di xB sono dette soluzioni di base del poliedro associate agli indici di base B.
$$ \overline{x_B} = A_B^{-1} b $$
Esempio. Nell'esempio precedente ho selezionato le colonne B=[1,2,3] come base. $$ \overline{x_B} = A_B^{-1} b $$ $$ \overline{x_B} =\begin{pmatrix} 1 & 1 & 1 \\ 0 & 2 & 1 \\ 3 & -1 & 0 \end{pmatrix} ^{-1} \begin{pmatrix} 4 \\ 6 \\ 0 \end{pmatrix} $$ Calcolo la matrice inversa A-1. $$ \overline{x_B} =\begin{pmatrix} -\frac{1}{2} & \frac{1}{2} & \frac{1}{2} \\ \frac{-3}{2} & \frac{3}{2} & \frac{1}{2} \\ 3 & -2 & -1 \end{pmatrix} \begin{pmatrix} 4 \\ 6 \\ 0 \end{pmatrix} $$ $$ \overline{x_B} = \begin{pmatrix} -\frac{1}{2} \cdot 4 + \frac{1}{2} \cdot 6 + \frac{1}{2} \cdot 0 \\ \frac{-3}{2} \cdot 4 + \frac{3}{2} \cdot 6 + \frac{1}{2} \cdot 0 \\ 3 \cdot 4 -2 \cdot 6 -1 \cdot 0 \end{pmatrix} $$ $$ \overline{x_B} = \begin{pmatrix} 1 \\ 3 \\ 0 \end{pmatrix} $$
Le soluzioni di xB sono soluzioni di base ammissibile ( SBA ) se sono non negative.
$$ \overline{x_B} \ge 0 $$
Una SBA è detta degenere se una o più elementi di xB sono uguali a zero.
Infine, se le soluzioni di xB hanno almeno un elemento negativo la base oppure i vettori della base B prescelta sono linearmente dipendenti, la base è detta non ammissibile.
Esempio. Nell'esempio precedente uno dei tre elementi è zero. Si tratta di una base ammissibile degenere. $$ \overline{x_B} = \begin{pmatrix} 1 \\ 3 \\ 0 \end{pmatrix} $$
Quante sono le soluzioni di base?
Le soluzioni di base sono date dalle possibili combinazioni di colonne scelte per formare B.
$$ \frac{n!}{m!(n-m)!} $$
Dove n sono le colonne e m le righe della matrice A.
Esempio. Nell'esempio precedente ci sono n=4 colonne e m=3 righe. $$ \frac{n!}{m!(n-m)!} $$ $$ \frac{4!}{3!(4-3)!} $$ $$ \frac{24}{6} = 4 $$ Ci sono 4 soluzioni di base possibili. $$ [ 1,2,3 ] \\ [ 1,2,4] \\ [1,3,4] \\ [2,3,4] $$
Ovviamente non tutte le soluzioni di base sono ammissibili.
Esempio. Vediamo tutte le combinazioni possibili delle colonne della matrice. Le incognite mancanti sono nulle perché fanno parte del vettore xN. $$ B=[1,2,3] \rightarrow \overline{x_B} = \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix} = \begin{pmatrix} 1 \\ 3 \\ 0 \end{pmatrix} \text{SBA degenere} $$ $$ B=[1,2.4] \rightarrow \text{non ammissibile perché vettori linearmente dipendenti} $$ $$ B=[1,3,4] \rightarrow \overline{x_B} = \begin{pmatrix} x_1 \\ x_3 \\ x_4 \end{pmatrix}= \begin{pmatrix} 4 \\ 0 \\ 6 \end{pmatrix} \text{SBA degenere} $$ $$ B=[2,3,4] \rightarrow \overline{x_B} = \begin{pmatrix} x_2 \\ x_3 \\ x_4 \end{pmatrix} = \begin{pmatrix} 4 \\ 0 \\ -2 \end{pmatrix} \text{non ammissibile} $$ Le SBA [1,2,3] e [1,3,4] sono soluzioni ammissibili del sistema $$ \begin{cases} x_1 +x_2 + x_3 = 4 \\ 2x_2 +x_3 +x_4 = 6 \\ 3x_1 -x_2-2x_4 = 0 \\ x_1,x_2,x_3,x_4 \ge 0 \end{cases} $$
Alcune potrebbero essere non ammissibili, altre degeneri.
Le coordinate corrispondenti alle SBA sono particolarmente importanti perché
Ogni punto SBA corrisponde a un vertice del poliedro
Quindi, conoscere le SBA equivale a conoscere le coordinate dei vertici della regione ammissibile del problema di ottimizzazione.
Quale soluzione di base ammissibile è ottima?
Dipende dalla funzione obiettivo del modello.
La funzione obiettivo in un modello di ottimizzazione è espressa nella forma.
$$ \min c_1 x_1 + ... + c_n x_n $$
Espressa in forma vettoriale.
$$ \min c^T x $$
Nota. La lettera T indica la trasposizione del vettore da verticale a orizzontale per consentire il prodotto scalare dei due vettori.
Dove c e T sono vettori.
$$ c=\begin{pmatrix} c_1 \\ ... \\ c_n \end{pmatrix} $$
$$ x=\begin{pmatrix} x_1 \\ ... \\ x_n \end{pmatrix} $$
In questo caso, però, sia i costi che le incognite sono distinte in due vettori, uno di base (B) e l'altro con le colonne escluse (N).
$$ \min c^T_B x_B + c^T_N x_N $$
Quindi, per calcolare il costo di ciascuna soluzione devo moltiplicare il vettore dei costi cB della soluzione di base e le incognite xB della soluzione di base $$ c_B^T \cdot x_B $$
Esempio. Se la funzione obiettivo fosse $$ \min z(x) = x_1 + 2x_2 - x_4 $$ il vettore dei costi sarebbe $$ \begin{pmatrix} 1 \\ 2 \\ 0 \\ -1 \end{pmatrix} $$ Analizzando le soluzioni di base $$ SBA_{[1,2,3]} \rightarrow z(x) = c^T_B x_B = \begin{pmatrix} 1 , 2 , 0 , {\color{Red} {-1} } \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ {\color{Red} {x_4} } \end{pmatrix} = \begin{pmatrix} 1 , 2 , 0 , {\color{Red} {-1} } \end{pmatrix} \begin{pmatrix} 1 \\ 3 \\ 0 \\ {\color{Red} {0} } \end{pmatrix} = 1 \cdot 1 + 2 \cdot 3 = 7 $$ $$ \min z(x) = x_1 + 2x_2 - x_4 $$ $$ SBA_{[1,3,4]} \rightarrow z(x) = c^T_B x_B = \begin{pmatrix} 1 , {\color{Red} {2} } , 0 , -1 \end{pmatrix} \begin{pmatrix} x_1 \\ {\color{Red} {x_2} } \\ x_3 \\ x_4 \end{pmatrix} = \begin{pmatrix} 1 , {\color{Red} {2} } , 0 , -1 \end{pmatrix} \begin{pmatrix} 4 \\ {\color{Red} {0} } \\ 0 \\ 6 \end{pmatrix} = 1 \cdot 4 +( -1 ) \cdot 6 = -2 $$
Come trovare la soluzione di base ottima
Una soluzione ottima si ottiene quando xN è uguale a zero, ossia quando le incognite escluse dalla base sono nulle.
$$ \min c^T_B x_B + c^T_N x_N $$
Per sapere se xN=0 mi basta controllare il valore di cTN.
Secondo il criterio di ottimalità delle soluzioni di base, se cTN è maggiore o uguale a zero allora xN è sicuramente uguale a zero.
Calcolo il vettore dei costi ridotti per differenza a partire dalla funzione obiettivo.
Sono i costi delle incognite escluse dalla base.
$$ \overline{c^T_N} = c^T - c^T_B A^{-1}_B A $$
Dove cT è il vettore dei costi mentre cTB è il vettore dei costi della base.
Ottengo così i costi relativi alle incognite escluse dalla base.
Esempio. Nel caso della soluzione SDA[1,2,3] il costo minimo non è maggiore di zero. E' il costo dell'incognita x4. $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,2, 0 ) \begin{pmatrix} -\frac{1}{2} & \frac{1}{2} & \frac{1}{2} \\ \frac{-3}{2} & \frac{3}{2} & \frac{1}{2} \\ 3 & -2 & -1 \end{pmatrix} \begin{pmatrix} 1 & 1 & 1 & 0 \\ 0 & 2 & 1 & 1 \\ 3 & -1 & 0 & -2 \end{pmatrix} $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,2, 0 ) \begin{pmatrix} 1 & 0 & 0 & -0,5 \\ 0 & 1 & 0 & 0,5 \\ 0 & 0 & 1 & 0 \end{pmatrix} $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,2, 0, 0.5 ) $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 0, 0, 0, -1.5 ) $$ Nel caso della soluzione SDA[1,3,4] il costo minimo è maggiore di zero. E' il costo dell'incognita x2. Pertanto, è una soluzione ottima. $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,0, -1 ) \begin{pmatrix} -2 & 2 & 1 \\ 3 & -2 & -1 \\ -3 & 3 & 1 \end{pmatrix} \begin{pmatrix} 1 & 1 & 1 & 0 \\ 0 & 2 & 1 & 1 \\ 3 & -1 & 0 & -2 \end{pmatrix} $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,0, -1 ) \begin{pmatrix} 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 2 & 0 & 1 \end{pmatrix} $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 1, 2, 0, -1 ) - ( 1,-1, 0, -1 ) $$ $$ \overline{c^T_N} = c^T - c^T_B x_B = ( 0, 3, 0, 0 ) $$
Va comunque detto che nel caso delle soluzioni di base degenere il criterio di ottimalità è una condizione necessaria ma non sufficiente.
Esempio
Ho un problema primale di minimizzazione
$$ \begin{cases}
\min z(x) = x_1-3x_2+2x_3-x_4 \\ \\
x_1-2x_2+4x_3+2x_4 \ge 6 \\
-x_1-2x_2-x_3+3x_4 \le 2 \\
3x_1 + 4x_2 -2x_3+x_4 = 0 \\ \\
x_1, x_4 \ge 0 \\
x_2 \le 0
\end{cases}
$$
Calcolo una soluzione di base ammissibile per il problema primale.
Scelgo le colonne [1,2,3] della matrice A dei coefficienti.
Ottengo così una matrice quadrata di base AB con i coefficienti delle colonne selezionate.
Poi calcolo l'inversa della matrice di base AB.
$$ \begin{pmatrix} 1 & -2 & 4 \\ -1 & -2 & -1 \\ 3 & 4 & -2 \end{pmatrix}^{-1} = \begin{pmatrix} 0.31 & 0.46 & 0.38 \\ -0.19 & -0.54 &-0.12 \\ 0.08 & -0.38 & -0.15 \end{pmatrix} $$
Le soluzioni di base sono le seguenti:
$$ x = A^{-1}b = \begin{pmatrix} 0.31 & 0.46 & 0.38 \\ -0.19 & -0.54 &-0.12 \\ 0.08 & -0.38 & -0.15 \end{pmatrix} \begin{pmatrix} 6 \\ 2 \\ 0 \end{pmatrix} = \begin{pmatrix} 2.78 \\ -2.22 \\ -0.28 \end{pmatrix} $$
E' una soluzione ammissibile del problema primale.
Verifica. Faccio una verifica usando le soluzioni X [ 2.78 , -2.22 , -0.28 , 0 ] $$ \begin{cases}
\min z(x) = x_1-3x_2+2x_3-x_4 \\ \\
x_1-2x_2+4x_3+2x_4 \ge 6 \\
-x_1-2x_2-x_3+3x_4 \le 2 \\
3x_1 + 4x_2 -2x_3+x_4 = 0 \\ \\
x_1, x_4 \ge 0 \\
x_2 \le 0
\end{cases}
$$ $$ \begin{cases}
\min z(x) = 2.78-3(-2.22)+2(-0.28)-0 \\ \\
2.78-2(-2.22)+4(-0.28)+2(0) \ge 6 \\
-2.78-2(-2.22)-(-0.28)+3(0) \le 2 \\
3·2.78 + 4(-2.22) -2(-0.28)+0 = 0 \\ \\
2.78, x_4 \ge 0 \\
-2.22 \le 0
\end{cases}
$$ $$ \begin{cases}
\min z(x) = 8,88 \\ \\
6.1 \ge 6 \\
1.94 \le 2 \\
0 = 0 \\ \\
2.78, x_4 \ge 0 \\
-2.22 \le 0
\end{cases}
$$ Le soluzioni sono ammissibili e risolvono il problema.
Verifico se è una soluzione ottimale
$$ c^T - c^T_B A^{-1}_B A $$
$$ (1,-3,2,-1) - (1, -3, 2 ) \begin{pmatrix} 0.31 & 0.46 & 0.38 \\ -0.19 & -0.54 &-0.12 \\ 0.08 & -0.38 & -0.15 \end{pmatrix} \begin{pmatrix} 1 & -2 & 4 & 2 \\ -1 & -2 & -1 & 3 \\ 3 & 4 & -2 & 1 \end{pmatrix} $$
$$ (1,-3,2,-1) - (1, -3, 2, 6.42 ) $$
$$ (0,0,0,6.42) $$
In questo caso è una soluzione ottimale.
E così via.