Articulo de referencia

SAMPL

SAMPL , which stands for "Stochastic AMPL " , is an algebraic modeling language resulting by expanding the well-known language AMPL with extended syntax and keywords. It is desi...

SAMPL, which stands for "Stochastic AMPL", is an algebraic modeling language resulting by expanding the well-known language AMPL with extended syntax and keywords. It is designed specifically for representing stochastic programming problems[1] and, through recent extensions, problems with chance constraints, integrated chance constraints and robust optimization problems. It can generate the deterministic equivalent version of the instances, using all the solvers AMPL connects to,[2] or generate an SMPS representation and use specialized decomposition based solvers, like FortSP.

Language Features

SAMPL shares all language features with AMPL, and adds some constructs specifically designed for expressing scenario based stochastic programming and robust optimization.

Stochastic programming features and constructs

To express scenario-based SP problems, additional constructs describe the tree structure and group the decision variable into stages. Moreover, it is possible to specify which parameter stores the probabilities for each branch of the tree and which set represents the scenario set. Other constructs to easily define chance constraints and integrated chance constraint in an SP problem are available as well. Using these language constructs allows to retain the structure of the problem, hence making it available to the solvers, which might exploit it using specialized decomposition methods like Benders' decomposition to speed-up the solution.

Robust optimization constructs

SAMPL supports constructs to describe three types of robust optimization formulations:

  • Soyster[3]
  • Bertsimas and Sim[4]
  • Ben-Tal and Nemirovski[5]

Availability

SAMPL is currently available as a part of the software AMPLDev (distributed by www.optirisk-systems.com). It supports many popular 32- and 64-bit platforms including Windows, Linux and Mac OS X. A free evaluation version with limited functionality is available.[6]

A stochastic programming sample model

The following is the SAMPL version of a simple problem (Dakota[7]), to show the SP related constructs. It does not include the data file, which follows the normal AMPL syntax (see the example provided in the AMPL Wikipedia page for further reference).

setProd;setResource;# Scenarios (future possible realizations)scenarioset Scen; # Definition of the problem as a two-stage problemárbol Árbol := dos etapas ; # Demand for each product in each scenarioParámetro aleatorio Demanda{Prod, Scen}; # Probability of each scenarioprobabilidad P{Escena}; # Cost of each unit of resourceparamCost{Resource};# Requirement in terms of resources units to produce one unit of each productparamProdReq{Resource,Prod};# Selling price of each productparamPrice{Prod};# Initial budgetparamBudget;# Amount of resources to buyvarbuy{rinResource}>=0,sufijo etapa 1; # Amount of each product to producevaramountprod{pinProd,sinScen}>=0,sufijo etapa 2; # Amount of each product to sellvaramountsell{pinProd,sinScen}>=0,sufijo etapa 2; # Total final wealth, as expected total income from sales minus costs for the resourcesmaximizewealth:sum{sinScen}P[s]*(sum{pinProd}Price[p]*amountsell[p,s]-sum{rinResource}Cost[r]*buy[r]);subjectto# Make sure you have enough resources to produce what we intend tobalance{rinResource,sinScen}:buy[r]>=sum{pinProd}ProdReq[r,p]*amountprod[p,s];# Make sure we do not sell what we did not produceproduction{pinProd,sinScen}:amountsell[p,s]<=amountprod[p,s];# Make sure we do not sell more than the market demandsales{pinProd,sinScen}:amountsell[p,s]<=Demand[p,s];# Respect initial budgetbudgetres:sum{rinResource}Cost[r]*buy[r]<=Budget;

Conectividad de los solucionadores

El formato de instancia SAMPL para problemas SP es SMPS, por lo que el problema puede resolverse con cualquier solucionador que admita dicho estándar. Uno de estos solucionadores (FortSP) está incluido en la distribución estándar de SAMPL. En cuanto a los problemas de optimización robusta, el solucionador necesario depende de la formulación específica utilizada; por ejemplo, las formulaciones de Ben-Tal y Nemirovski requieren un solucionador con capacidad para conos de segundo orden .

Véase también

Referencias

  1. Christian Valente, Gautam Mitra, Mustapha Sadki y Robert Fourer (2009). "Extending algebraic modelling languages ​​for stochastic programming" . INFORMS Journal on Computing . 21 (1): 107–122 . doi : 10.1287/ijoc.1080.0282 .{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  2. "Solucionadores" .
  3. Allen L Soyster (1974). "Nota técnica: programación convexa con restricciones de inclusión de conjuntos y aplicaciones a la programación lineal inexacta" . Operations Research . 21 (5): 1154– 1157. doi : 10.1287/opre.21.5.1154 .
  4. Bertsimas, Dimitris; Sim, Melvyn (2004). "El precio de la robustez" . Operations Research . 52 (1): 35– 53. doi : 10.1287/opre.1030.0065 . hdl : 2268/253225 . S2CID 8946639 . 
  5. Aharon Ben-Tal y Arkadi Nemirovski (1998). "Optimización convexa robusta". Matemáticas de la Investigación Operativa . 23 (4): 769– 805. CiteSeerX 10.1.1.135.798 . doi : 10.1287/moor.23.4.769 . 
  6. "Productos: AMPLDev SP" . optirisk-systems.com . Archivado del original el 11/11/2012.
  7. Higle, Julia L, Wallace, Stein W (2003). "Análisis de sensibilidad e incertidumbre en programación lineal" (PDF) . Interfaces . 33 (4): 53– 60. doi : 10.1287/inte.33.4.53.16370 .{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  • Página principal de AMPL
  • Página principal de OptiRisk Systems
  • Página principal del solucionador HiGHS