informatica |
Anche se la convergenza è garantita, il metodo dei piani di taglio "alla Gomory" risulta troppo lento per essere efficace in generale. Padberg e Rinaldi (1991) hanno proposto per primi di combinare Branch-and-Bound (B&B) e Metodo di Taglio denominando tale combinazione Branch-and-Cut: questa famiglia di algoritmi è oggi la più efficace risposta alla necessità di risolvere esattamente (cioè trovando un ottimo globale) un problema di Ottimizzazione Combinatoria difficile.
Il Branch-and-Cut (B&C) ricorre ad un albero decisionale del tutto analogo a quello del B&B. Si comincia col supporre che il problema sia stato formulato come problema di PLI e si costruisce un "serbatoio" (pool) di disuguaglianze valide per tutte le soluzioni intere (cioè per la regione di ammissibilità che abbiamo indicato con X). In pratica questo è in effetti un pool di algoritmi per cercare piani di taglio in presenza di una soluzione ottima frazionaria del rilassamento continuo del problema.
Si inizia il B&C come con il Metodo di Taglio risolvendo per un certo numero di iterazioni il problema di separazione di x* da X con l' aiuto del pool di algoritmi di cui sopra. Se si arriva ad una soluzione intera sappiamo che è quella ottima, ma anche quando ciò non accade l' ultima iterazione ci avrà dato una stima (per difetto se il problema è di minimo) del valore dell' ottimo che si presume migliore di quella ottenuta senza far ricorso al pool di disuguaglianze valide.
Si procede allora a ramificare (branch) ad esempio generando un sottoproblema per ogni valore intero permesso di una delle variabili frazionarie di x*. Ad ognuno dei sottoproblemi si applica di nuovo il Metodo di Taglio e così via.
Perché il B&C abbia successo è vitale che le stime ottenute siano più vicine possibile all' ottimo, cioè che i piani di taglio derivati dal pool siano i più vincolanti possibili. Un criterio spesso usato è quello di cercare famiglie di disuguaglianze che inducano faccette per X: sappiamo infatti che queste sono disuguaglianze forti in quanto si avvicinano il più possibile a conv(X) senza tagliare via niente.
Si noti che, dato che la convergenza è garantita dal processo di branch, è possibile utilizzare metodi euristici per la soluzione dei problemi di separazione, accettando che in certi casi non si trovi un taglio di una data famiglia anche se esiste.
Idealmente si vorrebbe disporre di procedure generalmente applicabili a qualunque problema di PLI. In questa direzione si sono fatti progressi notevoli (un esempio è il metodo Lift-and-Project di Balas et al.), ma non ancora definitivi. Finché tali procedure restano insoddisfacenti in pratica dal punto di vista del tempo di calcolo, l' alternativa è di studiare classi specifiche di problemi di PLI, per identificare famiglie di tagli con le relative procedure di separazione per rendere il più efficace possibile l' uso del pool sopra illustrato.
BRANCH AND CUT
[inizializzazione] Sia z = max e P la sua regione di ammissibilità rilassata; z:=- , x* vuoto; si preprocessi il problema dato e lo si metta nella LISTANODI;
[uscita] if LISTANODI vuota then go to 8 else
scegli un nodo i e rimuovilo dalla LISTANODI;
[inizio iterazione] ripristina il rilassamento continuo Pi dell'insieme Xi; k:=1; Pik:=Pi;
[rilassamento continuo] risolvi zik = max; if inammissibile go to 2 else
sia xik la soluzione;
[taglio] cerca di tagliare xik con gli algoritmi del pool; if tagli trovati then aggiungili a Pik ottenendo Pik+1; k:=k+1; go to 4 else
[potatura e aggiornamento] if zik z then go to 2 else if xikIX then z := zik ; x*:= xik; go to 2
[branching] crea due o più nuovi problemi Xit con
rilassamenti Pit e aggiungili a LISTANODI; go to 2
[fine] output x* (ottimo)
ALCUNE TECNICHE UTILIZZATE PER MIGLIORARE IL B&C
Quando zLP non corrisponde ad una soluzione intera x*, se si dispone di una soluzione F ottenuta euristicamente, sappiamo che zLP z* zF. F può spesso ottenersi con semplici tecniche di arrotondamento delle variabili frazionarie (euristica primale).
Ad esempio vincoli tipo Zaino possono generare disuguaglianze di copertura violate da x* (questa tecnica è ben illustrata dal lavoro di Aardal et al. 1994 sul problema di allocazione ottima con vincoli di capacità).
STRATEGIA DI BRANCH
La scelta della variabile frazionaria su cui fare il Branch avviene secondo uno o un misto dei seguenti criteri (supponendo di avere a che fare con un problema di minimo in variabili binarie):
e 3. sono stati usati da Padberg e Rinaldi per il TSP;
è spesso efficace insieme ad una tecnica depth-first
di selezione del problema da esaminare per primo fra quelli corrispondenti a nodi attivi dell' albero decisionale. Molte altre opzioni sono state proposte in tempi recenti.
Chiamiamo metodi euristici quelli che (contrariamente ai metodi approssimati) non danno nessuna garanzia a-priori sul valore di R(x,y).
Distinguiamo fra euristiche COSTRUTTIVE (ad esempio il metodo GREEDY) e euristiche DI SCAMBIO (dette anche di RICERCA LOCALE)
Sia F l' insieme delle soluzioni ammissibili s di un generico problema di ottimizzazione combinatoria e c(s) la sua funzione costo e supponiamo, senza perdere in generalità, che si tratti di un problema di minimo:
min
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta