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 designed specifically for representing stochastic programming problems 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, 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
- Bertsimas and Sim
- Ben-Tal and Nemirovski
Availability
SAMPL is currently available as a part of the software AMPLDev. 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.A stochastic programming sample model
The following is the SAMPL version of a simple problem, to show the SP related constructs. It does not include the data file, which follows the normal AMPL syntax.scenarioset Scen;
tree Tree := twostage;
random param Demand;
probability P;
suffix stage 1;
suffix stage 2;
suffix stage 2;