Programmazione stocastica

From Systems analysis Wiki
Jump to navigation Jump to search

La programmazione stocastica (in inglese stochastic programming) è una branca della programmazione matematica che sviluppa modelli e metodi per la risoluzione di problemi di ottimizzazione in condizioni di incertezza, quando alcuni parametri del modello non sono noti con precisione, ma sono rappresentati come variabili casuali con distribuzioni di probabilità note o stimate[1][2].

A differenza dei problemi deterministici, in cui tutti i dati sono considerati costanti note, la programmazione stocastica si propone di trovare una soluzione (o una politica decisionale) che sia ottimale in un certo senso statistico. Nella maggior parte dei casi ciò significa minimizzare o massimizzare il valore atteso della funzione obiettivo[1]. L'idea chiave è quella di individuare una politica decisionale che risulti la migliore «in media» su tutte le possibili realizzazioni dei parametri casuali; questo è particolarmente rilevante per i problemi in cui le decisioni vengono prese ripetutamente in condizioni analoghe (ad esempio, nella gestione delle scorte o dei sistemi energetici)[3].

Formulazione matematica del problema

In forma generale, il problema di programmazione stocastica può essere formulato come: minxX𝔼[f(x,ξ)] dove:

  • x — il vettore delle variabili decisionali (decisioni) che devono essere determinate.
  • X — l'insieme delle soluzioni ammissibili per x, definito da vincoli deterministici.
  • ξ — il vettore casuale che rappresenta i parametri incerti del problema (ad esempio, domanda, prezzi, condizioni meteorologiche).
  • f(x,ξ) — la funzione obiettivo, il cui valore dipende sia dalla decisione adottata x sia dalla realizzazione del vettore casuale ξ.
  • 𝔼[] — l'operatore del valore atteso, calcolato rispetto alla distribuzione di probabilità del vettore ξ.

Il principio fondamentale alla base dei modelli stocastici multi-stadio è il principio di non anticipatività (in inglese non-anticipativity principle). Esso afferma che le decisioni prese in qualsiasi stadio possono dipendere solo dalle informazioni disponibili fino a quel momento e non possono «guardare al futuro»[2].

Problema a due stadi con ricorso

Il modello più diffuso è il problema stocastico a due stadi con ricorso (in inglese two-stage stochastic program with recourse)[1]. Il processo decisionale è suddiviso in due stadi:

  1. Primo stadio: Viene presa una decisione «qui e ora (here-and-now) — viene determinato il vettore x. Questa decisione deve essere presa prima che sia nota la specifica realizzazione del vettore casuale ξ.
  2. Secondo stadio: Dopo che l'evento casuale si è verificato, viene presa una decisione correttiva o di ricorso (recourse decision) — il vettore y(ξ), finalizzata a minimizzare le conseguenze negative o a sfruttare le opportunità favorevoli emerse dalla combinazione della decisione del primo stadio x e dell'esito ξ.

Matematicamente, il problema stocastico a due stadi di programmazione lineare è formulato come segue: minxn1{cTx+𝔼ξ[Q(x,ξ)]} con i vincoli del primo stadio: Ax=b,x0. Qui Q(x,ξ) è la funzione di ricorso (recourse function), che rappresenta il valore ottimale del problema del secondo stadio: Q(x,ξ)=minyn2{q(ξ)TyT(ξ)x+Wy=h(ξ),y0} dove ξ è il vettore casuale che comprende i parametri q(ξ),T(ξ) e h(ξ); mentre c,A,b e W sono parametri deterministici[2].

Proprietà chiave e teoremi

  • Convessità: Uno dei risultati fondamentali della teoria è che, per il problema stocastico a due stadi di programmazione lineare, la funzione di ricorso attesa Q(x)=𝔼ξ[Q(x,ξ)] è una funzione convessa. Questa proprietà è di grande importanza, poiché garantisce che il problema complessivo del primo stadio sia un problema di programmazione convessa, per il quale esistono metodi di soluzione efficienti e l'ottimo globale coincide con quello locale[1].
  • Equivalente deterministico: Se il vettore casuale ξ ha un numero finito di possibili realizzazioni (scenari) ξ1,,ξK con probabilità p1,,pK, il problema di programmazione stocastica può essere riformulato come un unico grande problema di ottimizzazione deterministica. In questo caso il valore atteso viene sostituito da una somma pesata su tutti gli scenari. Tuttavia, la dimensione di tale problema cresce linearmente con il numero di scenari, il che porta alla «maledizione della dimensionalità» e rende questo approccio computazionalmente intrattabile per un numero elevato di scenari[2].

Confronto con l'ottimizzazione robusta

La programmazione stocastica è uno dei diversi approcci all'ottimizzazione in condizioni di incertezza. La sua differenza chiave rispetto all'ottimizzazione robusta risiede nel modo di modellare l'incertezza e nel criterio di ottimalità[4].

Confronto degli approcci all'ottimizzazione in condizioni di incertezza
Criterio Ottimizzazione stocastica Ottimizzazione robusta
Rappresentazione dell'incertezza I parametri sono variabili casuali con una distribuzione di probabilità nota I parametri appartengono a un insieme di incertezza definito; la distribuzione non è richiesta
Criterio di ottimalità Ottimizzazione del valore atteso della funzione obiettivo Ottimizzazione nello scenario peggiore (minimax)
Natura della soluzione Politica ottimale «in media», che può risultare inammissibile per scenari rari Soluzione garantita ammissibile per tutte le realizzazioni; può essere conservativa

Esempi

  • Problema del giornalaio (in inglese newsvendor problem): Classico problema di gestione delle scorte, in cui un venditore deve decidere quanta merce acquistare senza conoscere la domanda futura esatta. La soluzione bilancia il rischio di perdite da eccedenze con il rischio di mancato guadagno dovuto alla carenza.
  • Problema del contadino: Un agricoltore deve decidere quanti ettari di terreno destinare a colture diverse su una superficie totale, senza conoscere le condizioni meteorologiche future, che influenzano i raccolti. Una volta note le condizioni meteorologiche, l'agricoltore può intraprendere azioni correttive (ad esempio, vendere le eccedenze o acquistare sul mercato il raccolto mancante)[5].

Vedi anche

  • Programmazione matematica
  • Ricerca operativa
  • Ottimizzazione robusta
  • Programmazione dinamica
  • Teoria del controllo

Note

[1] [2] [3] [4] [5] </references>

  1. 1.0 1.1 1.2 1.3 1.4 Shapiro, A., Dentcheva, D., & Ruszczyński, A. (2009). Lectures on Stochastic Programming: Modeling and Theory. Society for Industrial and Applied Mathematics (SIAM).
  2. 2.0 2.1 2.2 2.3 2.4 Birge, J. R., & Louveaux, F. (2011). Introduction to Stochastic Programming (2nd ed.). Springer Science+Business Media.
  3. 3.0 3.1 "Стохастическое программирование". Википедия. [1]
  4. 4.0 4.1 Gorissen, B. L., Yanıkoğlu, İ., & den Hertog, D. (2015). A practical guide to robust optimization. Omega, 53, 124-137.
  5. 5.0 5.1 Bricker, D. L. SLPwR: Farmer Problem. University of Iowa. [2]