SAMPL
Paradigm | multiparadigm : deklarativ , imperativ |
---|---|
Designad av | Gautam Mitra, Enza Messina, Valente Patrick |
Dök först upp | 2001 |
Stabil frisättning | 20120523 / 23 maj 2013
|
OS | Cross-platform (multi-plattform) |
Licens | Proprietär |
Filnamnstillägg | .mod .dat .run .sampl |
Hemsida | |
Influerad av | |
AMPL |
SAMPL , som står för "Stochastic AMPL " , är ett algebraiskt modelleringsspråk som resulterar i att det välkända språket AMPL utökas med utökad syntax och nyckelord. Den är speciellt utformad för att representera stokastiska programmeringsproblem och, genom nya tillägg, problem med slumpmässiga begränsningar, integrerade slumpmässiga begränsningar och robusta optimeringsproblem . Den kan generera den deterministiska ekvivalenta versionen av instanserna, använda alla lösare som AMPL ansluter till, eller generera en SMPS- representation och använda specialiserade nedbrytningsbaserade lösare, som FortSP .
Språkfunktioner
SAMPL delar alla språkfunktioner med AMPL och lägger till några konstruktioner speciellt utformade för att uttrycka scenariobaserad stokastisk programmering och robust optimering .
Stokastiska programmeringsfunktioner och konstruktioner
För att uttrycka scenariobaserade SP-problem beskriver ytterligare konstruktioner trädstrukturen och grupperar beslutsvariabeln i steg. Dessutom är det möjligt att specificera vilken parameter som lagrar sannolikheterna för varje gren av trädet och vilken uppsättning som representerar scenariouppsättningen. Andra konstruktioner för att enkelt definiera slumpmässiga begränsningar och integrerade slumpmässiga begränsningar i ett SP-problem är också tillgängliga. Genom att använda dessa språkkonstruktioner kan man behålla problemets struktur, vilket gör det tillgängligt för lösare, som kan utnyttja det med hjälp av specialiserade nedbrytningsmetoder som Benders nedbrytning för att påskynda lösningen.
Robusta optimeringskonstruktioner
SAMPL stöder konstruktioner för att beskriva tre typer av robusta optimeringsformuleringar:
- Soyster
- Bertsimas och Sim
- Ben-Tal och Nemirovski
Tillgänglighet
SAMPL är för närvarande tillgänglig som en del av programvaran AMPLDev (distribuerad av www.optirisk-systems.com ). Den stöder många populära 32- och 64-bitarsplattformar inklusive Windows , Linux och Mac OS X. En gratis utvärderingsversion med begränsad funktionalitet är tillgänglig.
En stokastisk programmeringsexempelmodell
Följande är SAMPL-versionen av ett enkelt problem (Dakota), för att visa SP-relaterade konstruktioner. Den inkluderar inte datafilen, som följer den normala AMPL-syntaxen (se exemplet på AMPL Wikipedia-sidan för ytterligare referens).
set Prod ;
ställ in Resurs ;
# Scenarier (framtida möjliga realiseringar)
scenariouppsättning Scen;# Definition av problemet som ett tvåstegsproblemträd
Träd := tvåsteg ;# Efterfrågan för varje produkt i varje scenario
slumpmässig param Efterfrågan{Prod, Scen};# Sannolikhet för varje scenario
sannolikhet P{Scen};# Kostnad för varje resursenhet
param Kostnad { Resurs };
# Krav i termer av resursenheter för att producera en enhet av varje produktparameter
ProdReq { Resource , Prod } ;
# Försäljningspris för varje produktparameter
Pris { Prod } ;
# Initial budget
param Budget ;
# Mängd resurser att köpa
0 var buy { r in Resource } >= ,
suffix steg 1;# Mängd av varje produkt som ska produceras
0 var amountprod { p in Prod , s in Scen } >= ,
suffix steg 2;# Mängd av varje produkt att sälja
0 var amountsell { p in Prod , s in Scen } >= ,
suffix steg 2; # Total slutlig förmögenhet, som förväntat total inkomstfrån ( summa { p in Prod } Pris [ p ] * summasell [ p , s ] -summa { r i Resurs } Kostnad [ r ] * köp [ r ]);
försäljning minus kostnader för resurserna
maximera välstånd : summa { s in Scen } P [ s ] *
med förbehåll för
# Se till att du har tillräckligt med resurser för att producera det vi avser att
balansera { r i Resurs , s i Scen }:
köp [ r ] >= summa { p i Prod } ProdReq [ r , p ] * mängdprod [ p , s ];
# Se till att vi inte säljer det vi inte producerade
produktion { p in Prod , s in Scen }: amountsell [ p , s ] <= amountprod [ p , s ];
# Se till att vi inte säljer mer än vad marknaden efterfrågar
försäljning { p in Prod , s in Scen }: amountsell [ p , s ] <= Demand [ p , s ];
# Respektera initial budget
budgetres : summa { r i Resurs } Kostnad [ r ] * köp [ r ] <= Budget ;
Lösare anslutning
SAMPL-instansnivåformatet för SP-problem är SMPS, och därför kan problemet lösas av vilken lösare som helst som stöder den standarden. En av sådana lösare (FortSP) ingår i standardfördelningen SAMPL. När det gäller robusta optimeringsproblem beror den nödvändiga lösaren på den specifika formulering som används, eftersom Ben-Tal och Nemirovskis formulering behöver en andra ordningens kon- kapabel lösare.
Se även
- Algebraiskt modelleringsspråk
- AIMMS
- AMPL
- FortSP
- GAMS – General Algebraic Modeling System
- GLPK – gratis öppen källkodssystem baserat på en delmängd av AMPL
- MPS (format)
- Robust optimering
- Stokastisk programmering