Stokastisk programmering

From Systems analysis Wiki
Jump to navigation Jump to search

Stokastisk programmering (eng. stochastic programming) — en gren av matematisk programmering som utvecklar modeller och metoder för att lösa optimeringsproblem under osäkerhet, när vissa parametrar i modellen inte är exakt kända utan representeras som slumpvariabler med kända eller uppskattade sannolikhetsfördelningar[1][2].

Till skillnad från deterministiska problem, där alla data betraktas som givna konstanter, syftar stokastisk programmering till att finna en lösning (eller en beslutsregel) som är optimal i någon statistisk mening. Oftast innebär detta minimering eller maximering av väntevärdet av målfunktionen[1]. Grundidén är att hitta en beslutsregel som är bäst "i genomsnitt" över alla möjliga utfall av de slumpmässiga parametrarna, vilket är särskilt relevant för problem där beslut fattas upprepade gånger under liknande förhållanden (till exempel inom lagerhantering eller energisystem)[3].

Matematisk problemformulering

I allmän form kan ett stokastiskt programmeringsproblem formuleras som: minxX𝔼[f(x,ξ)] där:

  • x — vektor av beslutsvariablar (lösningar) som ska bestämmas.
  • X — mängden av tillåtna lösningar för x, definierad av deterministiska bivillkor.
  • ξ — slumpmässig vektor som representerar osäkra parametrar i problemet (till exempel efterfrågan, priser, väderförhållanden).
  • f(x,ξ) — målfunktionen, vars värde beror både på det fattade beslutet x och på utfallet av den slumpmässiga vektorn ξ.
  • 𝔼[] — väntevärdesoperatorn, beräknad med avseende på sannolikhetsfördelningen för vektorn ξ.

Ett centralt princip som ligger till grund för flerstegsstokastiska modeller är icke-anticipativitetsprincipen (eng. non-anticipativity principle). Den innebär att beslut som fattas i vilket steg som helst endast får bero på information som är tillgänglig vid det tillfället och inte kan "se in i framtiden"[2].

Tvåstegsproblem med kompensation

Den vanligaste modellen är tvåstegsproblem med kompensation (eng. two-stage stochastic program with recourse)[1]. Beslutsprocessen delas upp i två steg:

  1. Första steget: Ett "här och nu"-beslut (here-and-now) fattas — vektorn x bestäms. Detta beslut måste fattas innan det konkreta utfallet av den slumpmässiga vektorn ξ är känt.
  2. Andra steget: När det slumpmässiga händelseförloppet har inträffat fattas ett korrigerande eller kompenserande beslut (recourse decision) — vektorn y(ξ), som syftar till att minimera negativa konsekvenser eller utnyttja gynnsamma möjligheter som uppstår till följd av kombinationen av första stegets beslut x och utfallet ξ.

Matematiskt formuleras tvåstegs stokastisk linjär programmering på följande sätt: minxn1{cTx+𝔼ξ[Q(x,ξ)]} med bivillkor för första steget: Ax=b,x0. Här är Q(x,ξ)kompensationsfunktionen (recourse function), som representerar det optimala värdet av andra stegets problem: Q(x,ξ)=minyn2{q(ξ)TyT(ξ)x+Wy=h(ξ),y0} där ξ — en slumpmässig vektor som inkluderar parametrarna q(ξ),T(ξ) och h(ξ); medan c,A,b och W — deterministiska parametrar[2].

Viktiga egenskaper och satser

  • Konvexitet: Ett av teorins grundläggande resultat är att den förväntade kompensationsfunktionen Q(x)=𝔼ξ[Q(x,ξ)] för ett tvåstegs stokastiskt linjärt programmeringsproblem är en konvex funktion. Denna egenskap är av stor betydelse eftersom den garanterar att det övergripande problemet för första steget är ett konvext programmeringsproblem, för vilket det finns effektiva lösningsmetoder och det globala optimumet sammanfaller med det lokala[1].
  • Deterministisk ekvivalent: Om den slumpmässiga vektorn ξ har ett ändligt antal möjliga utfall (scenarier) ξ1,,ξK med sannolikheter p1,,pK, kan det stokastiska programmeringsproblemet omformuleras som ett enda stort deterministiskt optimeringsproblem. I detta fall ersätts väntevärdet av en viktad summa över alla scenarier. Storleken på detta problem växer dock linjärt med antalet scenarier, vilket leder till "dimensionalitetens förbannelse" och gör detta tillvägagångssätt beräkningsmässigt olösbart för ett stort antal scenarier[2].

Jämförelse med robust optimering

Stokastisk programmering är ett av flera tillvägagångssätt för optimering under osäkerhet. Dess viktigaste skillnad från robust optimering ligger i sättet att modellera osäkerhet och i optimalitetskriteriet[4].

Jämförelse av tillvägagångssätt för optimering under osäkerhet
Kriterium Stokastisk optimering Robust optimering
Representation av osäkerhet Parametrar är slumpvariabler med känd sannolikhetsfördelning Parametrar tillhör en given osäkerhetsmängd; fördelning krävs inte
Optimalitetskriterium Optimering av väntevärdet av målfunktionen Optimering i värsta fallet (minimax)
Lösningens karaktär En regel som är optimal "i genomsnitt" kan vara otillåten för sällsynta scenarier En lösning som garanterat är tillåten för alla utfall; kan vara konservativ

Exempel

  • Tidningssäljarproblemet (eng. newsvendor problem): Ett klassiskt lagerhanteringsproblem där en säljare måste besluta hur mycket av en vara som ska köpas in utan att känna till den exakta framtida efterfrågan. Lösningen balanserar risken för förluster till följd av överskott mot risken för utebliven vinst till följd av brist.
  • Bondeproblemet: En bonde beslutar hur många tunnland mark som ska avsättas för olika grödor på en total areal, utan att känna till det framtida vädret som påverkar skörden. När vädret är känt kan bonden vidta korrigerande åtgärder (till exempel sälja överskott eller köpa in otillräcklig skörd på marknaden)[5].

Se även

  • Matematisk programmering
  • Operationsanalys
  • Robust optimering
  • Dynamisk programmering
  • Reglerteknik

Noter

[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]