Il metodo dei tagli di Gomory Esercizio Sia dato il problema min(x x ) x + x (P 0 ) x + x x, x 0, interi. Calcolare la soluzione ottima applicando il metodo dei tagli di Gomory. Risoluzione Per applicare il metodo, occorre passare al rilassamenteo continuo, ottenendo così il problema min(x x ) x + x (P 0) x + x x, x 0. Occorre poi ridurre il problema (P 0) alla forma standard per poter applicare il metodo del simplesso primale. Si ha min(x x ) x + x + x = (P 0) x + x + x = x i 0, i =,.... La base B = I associata alle variabili scarto è ammissibile, pertanto la prima tabella in forma canonica è data da: x x x x b x 0 x 0 0 0 0
Si selezioni come colonna pivot la seconda, quella cioè in corrispondenza della quale si trova un costo ridotto negativo. La riga di pivot è determinata calcolando min{, }. L elemento pivot è quindi e la nuova base è data dalle variabili x, x. Dopo aver aggiornato le righe della tabella secondo le trasformazioni: R = R R R = R si ottiene la seconda tabella: x x x x b x 0 x 0 0 0 Si selezioni come colonna pivot la prima, quella cioè in corrispondenza della quale si trova un costo ridotto negativo. La riga di pivot è necessariamente la prima (si prende in considerazione il solo rapporto /). L elemento pivot è quindi e la nuova base è data dalle variabili x, x. Dopo aver aggiornato le righe della tabella secondo le trasformazioni: R = R R = R + R si ottiene la terza tabella: x x x x b x 0 x 0 0 0 6 La soluzione ottima del rilassamento continuo è il vettore x = (, )T. La soluzione trovata non è dunque intera. Il metodo ci impone di scegliere una componente frazionaria. Si osserva che = +, = +,
si sceglie allora come variabile frazionaria utile per generare il taglio la variabile x, cui corrisponde la componente frazionaria maggiore ( > ). Dalla seconda riga della tabella si ricava x + x + 6 x = x + x + 6 x (), cioè () x. () Sottraendo adesso la () alla () (vale a dire () -()), si ottiene il primo taglio x + 6 x. È possibile scrivere l espressione del taglio in funzione delle variabili iniziali del problema x, x. È sufficiente ricavare le variabili x, x dai vincoli del problema P 0 in forma standard, vale a dire Sostituendo tali valori nel taglio, si ottiene x = x x, x = + x x. x. Si deve ora risolvere un nuovo problema di programmazione lineare generato a partire dal problema P 0, cui viene aggiunto il nuovo vincolo rappresentato dal taglio. Per poter applicare il metodo del simplesso bisogna porre il vincolo del taglio in forma standard, ottenendo così x + 6 x x =, per poter avere una base canonica è conveniente inserire il vincolo in forma standard, dopo aver moltiplicato ambo i membri per. Si aggiunge pertanto il vincolo x 6 x + x =. Alla tabella devono essere aggiunte una riga (associata al nuovo vinocolo) ed una colonna (associata alla variabile x ), si ha
x x x x x b x 0 0 6 0 x 0 x 0 0 6 0 0 0 L aggiunta del taglio fa sì che la soluzione di base primale (associata alla base canonica costituita dalla prima, seconda e quinta colonna) non sia più ammissibile, essendo presente la componente di base negativa (ultimo termine noto). Si osserva inoltre che i costi ridotti sono tutti non negativi: è cioè ammissibile la soluzione duale associata alla base corrente. Si procede allora applicando il metodo del simplesso duale. Si selezioni come riga pivot la terza, quella cioè in corrispondenza della quale si trova il termine noto negativo. La colonna di pivot si ottiene calcolando { } min, 6 =, la colonna pivot è quindi la terza e l elemento pivot è. x, x, x. Dopo aver aggiornato le righe della tabella secondo le trasformazioni: La nuova base è data dalle variabili R = R R = R R R = R R = R R R = R, si ottiene la tabella: x x x x x b x 0 0 x 0 0 0 x 0 0 0 0 0 La soluzione ottima del rilassamento continuo è il vettore x = (, )T. La soluzione trovata non è dunque intera. Si sceglie allora come variabile frazionaria utile per generare il taglio la variabile x. Dalla prima riga della tabella si ricava
x x + x = x + x + x Sottraendo adesso la (6) alla (), si ottiene il primo taglio (), cioè () x x + x 0. (6) x. È possibile scrivere l espressione del taglio in funzione delle variabili iniziali del problema x, x. È sufficiente sostituire l espressione nel taglio, ottenendo x = + x x, x + x. Si deve ora risolvere un nuovo problema di programmazione lineare generato a partire dal problema precedente, cui viene aggiunto il nuovo vincolo rappresentato dal taglio. Per poter applicare il metodo del simplesso bisogna porre il vincolo del taglio in forma standard, ottenendo così x x 6 =, per poter avere una base canonica è conveniente inserire il vincolo in forma standard, dopo aver moltiplicato ambo i membri per. Si aggiunge pertanto il vincolo x + x 6 =. All ultima tabella devono essere aggiunte una riga (associata al nuovo vinocolo) ed una colonna (associata alla variabile x 6 ), si ha x x x x x x 6 b x 0 0 0 x 0 0 0 0 x 0 0 0 x 6 0 0 0 0 0 0 0 0
L aggiunta del taglio fa sì che la soluzione di base primale (associata alla base canonica costituita dalla prima, seconda, terza e sesta colonna) non sia più ammissibile, essendo presente la componente di base negativa (ultimo termine noto). Si osserva inoltre che i costi ridotti sono tutti non negativi: è cioè ammissibile la soluzione duale associata alla base corrente. Si procede allora applicando il metodo del simplesso duale. Si selezioni come riga pivot la terza, quella cioè in corrispondenza della quale si trova il termine noto negativo. La colonna di pivot è necessariamente la quarta (si prende in considerazione il solo rapporto ) e l elemento pivot è. La nuova base è data dalle variabili x, x, x, x. Dopo aver aggiornato le righe della tabella secondo le trasformazioni: si ottiene la tabella: R = R + R R = R R = R R, R = R. x x x x x x 6 b x 0 0 0 x 0 0 0 0 x 0 0 0 x 6 0 0 0 0 0 0 0 0. La soluzione ottima del rilassamento continuo è il vettore x = (, ) T. La soluzione trovata è intera, pertanto essa è anche soluzione del problema iniziale. 6