StochasticPrograms.jl
A modeling framework for stochastic programming problems
Summary
StochasticPrograms models recourse problems where an initial decision is taken, unknown parameters are observed, followed by recourse decisions to correct any inaccuracy in the initial decision. The underlying optimization problems are formulated in JuMP.jl. In StochasticPrograms, model instantiation can be deferred until required. As a result, scenario data can be loaded/reloaded to create/rebuild the recourse model at a later stage, possibly on separate machines in a cluster. Another consequence of deferred model instantiation is that StochasticPrograms.jl can provide stochastic programming constructs, such as expected value of perfect information (EVPI
) and value of the stochastic solution (VSS
), to gain deeper insights about formulated recourse problems. A good introduction to recourse models, and to the stochastic programming constructs provided in this package, is given in Introduction to Stochastic Programming. A stochastic program has a structure that can be exploited in solver algorithms. Therefore, StochasticPrograms provides a structured solver interface. Furthermore, a suite of solvers based on L-shaped and progressive-hedging algorithms that implements this interface are included. StochasticPrograms has parallel capabilities, implemented using the standard Julia library for distributed computing.
Features
- Flexible problem definition
- Deferred model instantiation
- Scenario data injection
- Natively distributed
- Interface to structure-exploiting solver algorithms
- Efficient parallel implementations of classical algorithms
Consider Quick start for a tutorial explaining how to get started using StochasticPrograms.
Some examples of models written in StochasticPrograms can be found on the Examples page.
See the Index for the complete list of documented functions and types.
Citing
If you use StochasticPrograms, please cite the following preprint:
@article{spjl,
title = {Efficient Stochastic Programming in {J}ulia},
author = {Martin Biel and Mikael Johansson},
journal = {arXiv preprint arXiv:1909.10451},
year = {2019}
}
If you use the cut aggregation funcionality for L-shaped, please cite the following preprint
@article{cutaggregation,
title = {Dynamic cut aggregation in {L}-shaped algorithms},
author = {Martin Biel and Mikael Johansson},
journal = {arXiv preprint arXiv:1910.13752},
year = {2019}
}
Manual Outline
- Quick start
- Installation
- Stochastic programs
- A simple stochastic program
- Stochastic model definition
- Finite sample space
- Infinite sample space
- Stochastic data
- Stochastic models
@stage
blocks@parameters
blocks@decision
blocks@known
blocks@uncertain
blocks- Model instantiation
- Instant models
- SMPS
- Multi-stage decisions
- Distributed stochastic programs
- Structured solvers
- Examples
Library Outline
- Public interface
- Contents
- Index
- Constructors
- IO
- Structures
- Decisions
- Scenarios
- Model definition
- API
- Stochastic programming constructs
- Solver interface
- Crash
- L-shaped solvers
- Progressive-hedging solvers
- Sample average approximation
Index
StochasticPrograms.AbstractSampler
StochasticPrograms.AbstractScenario
StochasticPrograms.AbstractStochasticStructure
StochasticPrograms.DecisionRef
StochasticPrograms.DecisionVariable
StochasticPrograms.Deterministic
StochasticPrograms.DeterministicEquivalent
StochasticPrograms.DistributedHorizontal
StochasticPrograms.DistributedVertical
StochasticPrograms.ExpectedScenario
StochasticPrograms.Horizontal
StochasticPrograms.HorizontalStructure
StochasticPrograms.KnownRef
StochasticPrograms.Probability
StochasticPrograms.SMPS.SMPSSampler
StochasticPrograms.SMPS.SMPSScenario
StochasticPrograms.SPConstraintRef
StochasticPrograms.Sampler
StochasticPrograms.Scenario
StochasticPrograms.StochasticInstantiation
StochasticPrograms.StochasticProgram
StochasticPrograms.StochasticProgram
StochasticPrograms.StochasticProgram
StochasticPrograms.StochasticProgram
StochasticPrograms.StochasticProgram
StochasticPrograms.UnloadableStructure
StochasticPrograms.UnloadedStructure
StochasticPrograms.UnspecifiedInstantiation
StochasticPrograms.UnsupportedStructure
StochasticPrograms.Vertical
StochasticPrograms.VerticalStructure
StochasticPrograms.@decision
StochasticPrograms.@define_scenario
StochasticPrograms.@expectation
StochasticPrograms.@first_stage
StochasticPrograms.@known
StochasticPrograms.@parameters
StochasticPrograms.@recourse
StochasticPrograms.@sample
StochasticPrograms.@sampler
StochasticPrograms.@scenario
StochasticPrograms.@second_stage
StochasticPrograms.@stage
StochasticPrograms.@stochastic_model
StochasticPrograms.@uncertain
StochasticPrograms.@zero
Base.getindex
Base.read
Base.read
Base.read
JuMP.BinaryRef
JuMP.FixRef
JuMP.IntegerRef
JuMP.LowerBoundRef
JuMP.UpperBoundRef
JuMP.all_constraints
JuMP.constraint_by_name
JuMP.constraint_object
JuMP.constraint_object
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete
JuMP.delete_lower_bound
JuMP.delete_lower_bound
JuMP.delete_upper_bound
JuMP.delete_upper_bound
JuMP.dual
JuMP.dual
JuMP.dual_objective_value
JuMP.dual_objective_value
JuMP.dual_objective_value
JuMP.dual_status
JuMP.dual_status
JuMP.dual_status
JuMP.fix
JuMP.fix
JuMP.fix
JuMP.fix
JuMP.has_duals
JuMP.has_duals
JuMP.has_duals
JuMP.has_lower_bound
JuMP.has_lower_bound
JuMP.has_upper_bound
JuMP.has_upper_bound
JuMP.has_values
JuMP.has_values
JuMP.index
JuMP.index
JuMP.is_binary
JuMP.is_binary
JuMP.is_fixed
JuMP.is_fixed
JuMP.is_integer
JuMP.is_integer
JuMP.is_valid
JuMP.is_valid
JuMP.is_valid
JuMP.is_valid
JuMP.list_of_constraint_types
JuMP.lower_bound
JuMP.lower_bound
JuMP.name
JuMP.name
JuMP.name
JuMP.name
JuMP.normalized_coefficient
JuMP.normalized_coefficient
JuMP.normalized_rhs
JuMP.normalized_rhs
JuMP.num_constraints
JuMP.num_variables
JuMP.objective_bound
JuMP.objective_bound
JuMP.objective_function
JuMP.objective_function
JuMP.objective_function
JuMP.objective_function_type
JuMP.objective_function_type
JuMP.objective_function_type
JuMP.objective_sense
JuMP.objective_sense
JuMP.objective_sense
JuMP.objective_value
JuMP.objective_value
JuMP.objective_value
JuMP.objective_value
JuMP.optimize!
JuMP.optimize!
JuMP.optimizer_index
JuMP.optimizer_index
JuMP.optimizer_index
JuMP.optimizer_index
JuMP.primal_status
JuMP.primal_status
JuMP.primal_status
JuMP.raw_status
JuMP.raw_status
JuMP.raw_status
JuMP.reduced_cost
JuMP.reduced_cost
JuMP.relative_gap
JuMP.relative_gap
JuMP.set_binary
JuMP.set_binary
JuMP.set_integer
JuMP.set_integer
JuMP.set_lower_bound
JuMP.set_lower_bound
JuMP.set_name
JuMP.set_name
JuMP.set_name
JuMP.set_name
JuMP.set_normalized_coefficient
JuMP.set_normalized_coefficient
JuMP.set_normalized_rhs
JuMP.set_normalized_rhs
JuMP.set_objective_coefficient
JuMP.set_objective_coefficient
JuMP.set_objective_sense
JuMP.set_objective_sense
JuMP.set_objective_sense
JuMP.set_optimizer
JuMP.set_optimizer
JuMP.set_optimizer_attribute
JuMP.set_optimizer_attribute
JuMP.set_optimizer_attributes
JuMP.set_start_value
JuMP.set_start_value
JuMP.set_upper_bound
JuMP.set_upper_bound
JuMP.solve_time
JuMP.solve_time
JuMP.solve_time
JuMP.start_value
JuMP.start_value
JuMP.termination_status
JuMP.termination_status
JuMP.termination_status
JuMP.unfix
JuMP.unfix
JuMP.unset_binary
JuMP.unset_binary
JuMP.unset_integer
JuMP.unset_integer
JuMP.upper_bound
JuMP.upper_bound
JuMP.value
JuMP.value
JuMP.value
JuMP.value
JuMP.value
JuMP.value
JuMP.value
StochasticPrograms.DEP
StochasticPrograms.EEV
StochasticPrograms.EEV
StochasticPrograms.EV
StochasticPrograms.EVP
StochasticPrograms.EVPI
StochasticPrograms.EVPI
StochasticPrograms.EWS
StochasticPrograms.EWS
StochasticPrograms.StochasticStructure
StochasticPrograms.VRP
StochasticPrograms.VRP
StochasticPrograms.VSS
StochasticPrograms.VSS
StochasticPrograms.WS
StochasticPrograms.add_scenario!
StochasticPrograms.add_scenario!
StochasticPrograms.add_scenario!
StochasticPrograms.add_scenario!
StochasticPrograms.add_scenarios!
StochasticPrograms.add_scenarios!
StochasticPrograms.add_scenarios!
StochasticPrograms.add_scenarios!
StochasticPrograms.add_worker_scenario!
StochasticPrograms.add_worker_scenario!
StochasticPrograms.add_worker_scenario!
StochasticPrograms.add_worker_scenario!
StochasticPrograms.add_worker_scenarios!
StochasticPrograms.add_worker_scenarios!
StochasticPrograms.add_worker_scenarios!
StochasticPrograms.add_worker_scenarios!
StochasticPrograms.all_decision_variables
StochasticPrograms.all_decision_variables
StochasticPrograms.all_decision_variables
StochasticPrograms.all_decision_variables
StochasticPrograms.all_known_decision_variables
StochasticPrograms.all_known_decision_variables
StochasticPrograms.clear!
StochasticPrograms.confidence_interval
StochasticPrograms.decision
StochasticPrograms.decision
StochasticPrograms.decision
StochasticPrograms.decision
StochasticPrograms.decision
StochasticPrograms.decision_by_name
StochasticPrograms.default_structure
StochasticPrograms.deferred
StochasticPrograms.distributed
StochasticPrograms.evaluate_decision
StochasticPrograms.evaluate_decision
StochasticPrograms.evaluate_decision
StochasticPrograms.expected
StochasticPrograms.expected
StochasticPrograms.expected_value_decision
StochasticPrograms.first_stage
StochasticPrograms.gap
StochasticPrograms.generate!
StochasticPrograms.generator
StochasticPrograms.get_optimizer_attribute
StochasticPrograms.get_optimizer_attribute
StochasticPrograms.has_generator
StochasticPrograms.has_values
StochasticPrograms.instantiate
StochasticPrograms.instantiate
StochasticPrograms.instantiate
StochasticPrograms.instantiate
StochasticPrograms.lower_confidence_interval
StochasticPrograms.master_optimizer
StochasticPrograms.num_decisions
StochasticPrograms.num_decisions
StochasticPrograms.num_known_decisions
StochasticPrograms.num_scenarios
StochasticPrograms.num_stages
StochasticPrograms.num_subproblems
StochasticPrograms.optimal_decision
StochasticPrograms.optimal_decision
StochasticPrograms.optimal_decision
StochasticPrograms.optimal_decision
StochasticPrograms.optimal_recourse_decision
StochasticPrograms.optimizer
StochasticPrograms.optimizer
StochasticPrograms.optimizer_constructor
StochasticPrograms.optimizer_constructor
StochasticPrograms.optimizer_name
StochasticPrograms.optimizer_name
StochasticPrograms.outcome_model
StochasticPrograms.outcome_model
StochasticPrograms.probability
StochasticPrograms.probability
StochasticPrograms.probability
StochasticPrograms.probability
StochasticPrograms.proxy
StochasticPrograms.recourse_decision
StochasticPrograms.sample
StochasticPrograms.sample!
StochasticPrograms.sample!
StochasticPrograms.scenario
StochasticPrograms.scenario
StochasticPrograms.scenario_type
StochasticPrograms.scenario_types
StochasticPrograms.scenarios
StochasticPrograms.scenariotext
StochasticPrograms.set_probability!
StochasticPrograms.shadow_price
StochasticPrograms.shadow_price
StochasticPrograms.stage
StochasticPrograms.stage
StochasticPrograms.stage_model
StochasticPrograms.stage_one_model
StochasticPrograms.stage_parameters
StochasticPrograms.stage_probability
StochasticPrograms.state
StochasticPrograms.state
StochasticPrograms.state
StochasticPrograms.statistically_evaluate_decision
StochasticPrograms.structure
StochasticPrograms.structure_name
StochasticPrograms.subproblem
StochasticPrograms.subproblem
StochasticPrograms.subproblem_optimizer
StochasticPrograms.subproblems
StochasticPrograms.update_decisions!
StochasticPrograms.update_decisions!
StochasticPrograms.update_decisions!
StochasticPrograms.upper_confidence_interval
StochasticPrograms.upper_confidence_interval
StochasticPrograms.wait_and_see_decision