SAMPL

SAMPL
Paradigm multiparadigm : deklarativ , imperativ
Designad av Gautam Mitra, Enza Messina, Valente Patrick
Dök först upp 2001 ; 22 år sedan ( 2001 )
Stabil frisättning
20120523 / 23 maj 2013 ; 9 år sedan ( 2013-05-23 )
OS Cross-platform (multi-plattform)
Licens Proprietär
Filnamnstillägg .mod .dat .run .sampl
Hemsida www .optirisk-systems .com
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 inkomst          frå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

externa länkar