Table of Contents
Introduzione
I problemi di programmazione integer (IP) e di programmazione mista (MIP) si presentano naturalmente in molte industrie, tra cui la logistica, la produzione, la gestione dell'energia, le telecomunicazioni e la finanza. In questi problemi, le variabili decisionali devono assumere valori interi — per esempio, il numero di camion che si occupano di eseguire il calcolo, le posizioni dei magazzini, o le branche di potenza dettagliate.
Che cos'è la decomposizione dei Benders?
Il sistema di decomposizione dei Benders è un metodo di generazione delle righe progettato per risolvere i problemi di ottimizzazione con una struttura che può essere suddivisa in due fasi: una prima fase comporta variabili "complicanti" (spesso interi o binari) e una seconda fase comporta variabili che, quando le variabili di primo stadio sono fissate, producono un sottoproblema lineare o convesso continuo.
Storicamente, la decomposizione dei Benders è stata sviluppata per la programmazione lineare mista-integer (MILP). Nel tempo, è stata estesa a problemi di ottimizzazione non lineari, stocastici e robusti. In programmazione stocastica, per esempio, il problema principale cattura le decisioni di primo stadio, mentre ogni scenario forma un sottoproblema; Benders taglia poi collega gli scenari. La tecnica rimane un punto di forza nella ricerca di funzionamento e viene implementata in risolutori commerciali come Cbisource
I passi fondamentali della decomposizione dei Benders
L'applicazione della decomposizione di Benders a un problema di programmazione interinale segue una procedura iterativa ben definita.
- problema di padrone (MP):] Contiene le variabili di interi x] ≤ Z]n e una variabile ausiliaria ]θ che rappresenta il costo o il valore atteso dal sottoproblema solo.
- [[LT]][[FLT]]][[FLT]]]][[FLT]]]]]]]k dal MP, il SP risolve un programma lineare continuo (o programma convesso) sulle variabili continue y[FLT]
L'algoritmo iterativo procede come segue:
- Inizializzare:[]] Impostare il contatore di iterazione []k[ = 1. Scegliere un primo fattibile ]]x1]]]]] (spesso dalla risoluzione del MP senza tagli, se fattibile, se possibile).
- [LT] [LT] [[FLT] [[[FLT]]] [[FLT]]] [[FLT]]] [[FLT]]] [[FLT]]] [[FLT]] [[FLT]]] [[FLT]]] [[FLT]]] [[FLT]]][[FLT]]]][FLT]][[FLT]]]]][[[[[[FLT]]]]]]]]]][[[[[[[[[FLT]]]]]]]]]]]]]]]][[[[[[[[[[[[[[[[[[FLT]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
- Aggiungi il taglio al problema principale: Appoggia il taglio appena generato al MP.
- Solve the master problem:[] Risolvere il MP (che ora include tutti i tagli generati finora) per ottenere un nuovo candidato [x]]][]]]]k+1]] e un limite inferiore aggiornato (l'obiettivo ottimale del MP).
- Controllo la convergenza:[] Se il limite superiore e il limite inferiore sono sufficientemente vicini (entro una tolleranza), fermarsi. Altrimenti, aumentare k e tornare al passo 2.
Questo processo è garantito per convergere ad una soluzione ottimale in un numero finito di iterazioni per problemi MILP, perché il numero di possibili tagli è finito (anche se potenzialmente grande). In pratica, tecniche avanzate come Pareto-optimal cuts e ]] il rinforzo basato sulla magnificatudine sono utilizzati per accelerare la convergenza.
Formulazione matematica e un semplice esempio
Per porre a terra la discussione, si consideri un problema classico della posizione della struttura. Le decisioni del primo stadio sono binarie: strutture aperte o non aperte. Le decisioni del secondo stadio assegnano ai clienti di aprire le strutture per ridurre al minimo i costi di trasporto. Il MILP monolitico può essere decomposto in un problema principale che decide quali strutture aprire e un sottoproblema che calcola l'assegnazione ottimale per quel set fisso.
Più in generale, supponga che il problema originale è:
]Tx + f(y)[
]]s.t A x + B y ≥ b
]x | {0,1}[]]n[], y ≥ 0
Dopo aver fissato x, il sottoproblema su y è un programma lineare (LP). Il suo duale produce un raggio di punti estremi. Il taglio di ottimalità deriva dal doppio punto estremo, mentre i raggi estremi producono tagli di fattibilità. Il problema principale diventa allora:
]T]x + θ
]s.t (taglio di fattibilità), (taglio di opportunità)
x aggancio {0,1}n], θ free
Questa separazione spesso produce enormi risparmi computazionali perché il sottoproblem LP può essere risolto in modo molto efficiente anche per un gran numero di variabili continue.
Vantaggi della decomposizione dei Benders
La decomposizione dei Benders porta diversi vantaggi concreti ai praticanti:
- Complessità computazionale ridotta:[] isolando le variabili integer, l'esplosione combinatoria è confinata ad un problema master più piccolo. Il sottoproblema continuo, che può coinvolgere decine di migliaia di variabili, viene risolto rapidamente tramite la programmazione lineare.
- Scalabilità:[] Problemi con milioni di variabili continue e solo poche centinaia di variabili integer diventano trattabili. Questa struttura è comune nella progettazione di rete, nell'ottimizzazione della supply chain e nell'espansione della capacità.
- Flessibilità:[] Il metodo può gestire estensioni stocastiche (sottoproblemi basati su scenari) e ottimizzazione robusta (sottoproblemi convessi o anche non convessi, fino a quando si applica la dualità). Può anche essere combinato con Benders accessibili utilizzando piscine tagliate e preprocessing.
- Possibilità di pallelizzazione:[ I sottoproblemi attraverso diverse iterazioni (o attraverso scenari) possono essere risolti in modo indipendente, consentendo un calcolo parallelo per ridurre il tempo di parete-clock.
- Iniziazione a braccio:[] Se si conosce una buona soluzione iniziale di interi, il problema principale può essere seminato con un piccolo insieme di tagli promettenti, accelerando la convergenza.
Questi vantaggi rendono Benders decomposizione un metodo preferito in molte impostazioni industriali in cui il tempo di soluzione è critico.
Sfide e strategie di mitigazione
Nonostante il suo potere, la decomposizione dei Benders non è una panacea. I praticanti devono essere consapevoli di diverse insidie comuni e adottare strategie per mitigarli:
Convergenza lenta
Nella sua forma di base, la decomposizione di Benders richiede spesso molte iterazioni, perché ogni taglio fornisce solo un'approssimazione locale. Il limite inferiore può migliorare molto lentamente. Per accelerare la convergenza, i ricercatori hanno sviluppato Pareto-optimal cuts] ]
Povero problema di master inizializzazione
A partire da un problema di master vuoto (non tagli) può portare a un punto iniziale infesibile o ad una convergenza estremamente lenta. Una soluzione comune è quella di generare tagli di fattibilità[] da un rilassamento euristico o da LP. Alcuni risolutori generano automaticamente una piccola piscina di tagli iniziali risolvendo il sottoproblema con pochi candidati x[F.
Grande problema di master IP
Se le variabili integer sono numerose, il problema principale può ancora essere difficile da risolvere. In tali casi, Benders (chiamato anche decomposizione multistadio) può essere utilizzato, dove il master è ulteriormente decomposto. In alternativa, ]branch e Benders cut invece integra un frame di ricerca benders.
Stabilità numerica
Le soluzioni duali del sottoproblema possono essere degenerate, producendo tagli con grandi coefficienti che causano problemi numerici. Scaling del problema e utilizzando un robusto risolutore LP (ad esempio, metodo di barriera con crossover) può aiutare. Inoltre, cut lift tecniche possono derivare ineguaglianze più forti e più numericamente stabili.
Infesabilità
Quando il sottoproblema è infesibile per una data x]]k], deve essere generato un taglio di fattibilità. Questo taglio deriva dal doppio raggio estremo dell'infesibile LP. In alcune formulazioni (ad esempio, senza vincoli di “grande M”), il problema può essere possibile
Applicazioni nell'industria
La decomposizione dei Benders è stata applicata con successo in numerosi contesti reali:
- Progettazione di reti a catena:[] Le decisioni strategiche (ubicazione della struttura, selezione della tecnologia) sono variabili integre, mentre le decisioni di flusso operative sono continue.
- Energy System Planning:[] Nell'espansione della generazione di energia, il maestro decide quali generatori costruire (integer) e il sottoproblema invia generatori esistenti per soddisfare la domanda in molti periodi di tempo (continuo).
- Telecommunications Network Design:[] Installazione di collegamenti e attrezzature (integer) rispetto al traffico di routing (continuo) si adatta perfettamente al quadro dei Benders.
- Logistics and Transportation:[ I problemi di autotrasporto e di routing dei veicoli spesso usano Benders per separare la composizione della flotta dalle decisioni di routing.
- Produzione Pianificazione e Scheduling:[[] I problemi di dimensionamento e di assegnazione della macchina beneficiano della decomposizione delle variabili di configurazione (binary) dalle quantità di produzione (continuo).
Ogni applicazione sfrutta il vantaggio principale: nascondendo la struttura continua all'interno di un LP, la difficoltà combinatoria è localizzata al programma master integer.
Confronto con altri metodi di decomposizione
La decomposizione dei Benders è spesso paragonata ad altri approcci di decomposizione:
- Dantzig-Wolfe Decomposizione: Questo metodo funziona per generazione di colonne, dividendo il problema in un master che coordina le combinazioni di soluzioni sottoproblematiche. Mentre Dantzig-Wolfe è potente per problemi con struttura a blocchi, solitamente richiede di risolvere un master non lineare (attraverso vincoli di convesssità).
- Rilassamento lagrangiano:[ Nel rilassamento lagrangiano, complicando i vincoli sono dualizzati, e il problema risultante è spesso più facile da risolvere. Tuttavia, fornisce solo un limite inferiore per problemi di minimizzazione; per trovare l'inerzia ottimale, euristica o uno schema di rami e di uscita devono essere aggiunti.
- Branch e Cut: I moderni risolutori MILP si affidano a rami e tagli, che aggiungono dinamicamente valide diseguaglianze (tagli) durante un albero ramiforme e a bordo. I tagli Benders possono essere considerati una classe speciale di valide disuguaglianze.
Ogni metodo ha i suoi punti di forza, ma la decomposizione di Benders rimane il metodo di scelta quando il problema presenta una struttura naturale a due stadi con variabili integeri di primo stadio e una grande seconda fase continua.
Considerazioni di attuazione
L'implementazione della decomposizione dei Benders richiede efficacemente l'attenzione a diversi dettagli pratici:
- Scelta di solver:[] Il problema principale (integer) può essere risolto con un risolutore MILP come Gurobi, CPLEX, o SCIP. Il sottoproblema (LP) beneficia di un risolutore LP veloce; molti moderni risolutori MILP permettono anche soluzioni LP efficienti senza caricare il modello completo ogni volta.
- La strategia di generazione del taglio: Invece di aggiungere un solo taglio per iterazione, è spesso utile aggiungere tagli multipli (ad esempio, uno da ogni punto estremo del duale). Inoltre, I dettagli del parato-ottimo] dovrebbero essere implementati per accelerare la convergenza.
- Progettazione del problema di Padrone:[] La variabile ausiliaria [θ[] dovrebbe avere un limite inferiore evidente (ad esempio, il valore di rilassamento LP) per evitare le iterazioni master non-bounded.
- Cari di avvistamento:[] Utilizzare un divario relativo o assoluto (ad esempio, 0,1%). Ma in alcune applicazioni, una soluzione quasi ottimale è accettabile, in modo che la tolleranza possa essere rilassata.
- Debugging:[] Un errore comune sta generando tagli errati a causa della doppia degenerazione o di cattiva interpretazione. Verificare sempre che il taglio sia valido testandolo sul problema originale.
Per una guida completa di implementazione con esempi di codice in Python, il Gurobi Benders Esempio[] è una risorsa preziosa. Inoltre, la IBM ILOG CPLEX documentazione sull'algoritmo Benders[ fornisce informazioni sulla decomposizione automatica vs. manuale.
Conclusioni
La decomposizione dei Benders è una tecnica collaudata nel tempo per risolvere i problemi di programmazione integer su larga scala che espongono una separazione tra decisioni discrete e continue.