Valladolid Stochastic Programming Short Course, July 11th-20th, 2017
Note: Access to this page is restricted to registered participants. 
Questions: Contact Victor Zavala [link



Part I: Formulations

Tuesday, July 11th, 10 am - 1 pm
  • Intro Probability Theory
  • Motivating Examples  
  • Two-Stage Formulations
  • Julia, JuMP, JuliaBox

Wednesday, July 12th, 10 am - 1 pm
  • Value of Stochastic Programming
  • Risk Metrics 

Thursday, July 13th, 10 am - 1 pm
  • Probabilistic Constraints
  • Sampling and Inference Analysis

Monday, July 17th, 10 am - 1 pm
  • Multi-Objective Formulations
  • Multi-Stage Formulations

Part II: Software and Algorithms

Tuesday, July 18th, 10 am - 1 pm
  • Algorithms for Stochastic NLP
  • Nonlinear Programming
  • Structured Linear Algebra
  • Plasmo, Ipopt, and PIPS-NLP

Wednesday, July 19th, 10 am - 1 pm
  • Algorithms for Stochastic  MIP
  • Benders Decomposition 
  • Stochastic Dual Dynamic Programming
  • Dual Decomposition
  • DSP

Thursday, July 20th, 10 am - 1 pm
  • Advanced Topics, Summary,  Discussion

Slides [link]

Software Intructions
The course is based on Julia 
All scripts can be downloaded from (under Valladolid2017 folder)

Part I
The first part of the course will be based on JuliaBox. Please validate that JuliaBox is working for you prior to attending the course.  
Note: If you have any questions, please contact Jordan Jalving. E-mail:
  • 1. Go to  and log in using your Gmail account (this is safe, the server is hosted by Google)
  • 2. Go to Sync Tab and type in the Git Clone URL field. Click on arrow to synchronize with GIT repo.
  • 3. Go to IJulia Tab and go to JuliaBox > Valladolid2017 folder 
  • 4. To test: 
    • Open install_packages.ipynb notebook file  under Valladolid2017 folder
    • In the options tab, click Kernel>Change Kernel>Julia 0.5.x (this changes to the current  version of Julia)
    • In the options tab, click on Cell>Run All  (this runs the notebook)
    • After completion, shut down the install_packages.ipynb 
    • Open jump_example.ipynb notebook file  under Valladolid2017/Formulations and run
Part II 
The second part of the course is more advanced and will require you to have several packages for modeling and solution of stochastic programming problems installed on your laptop. 
Note: If you have any questions, please contact Jordan Jalving. E-mail:

  • Install version 0.5.2 following the instructions in
  • Install packages JuMP, Cbc, PyPlot, Distributions, and IJulia using Pkg.Add("Name") where Name=JuMP, Cbc, etc.
Set Environmental Variables

Assuming that you have installed all our packages under /opt,  you need to modify your environmental variables using:
  • export PATH=/opt/Ipopt/bin:$PATH
  • export PATH=/opt/mpich/bin:$PATH
  • export PATH=/opt/PIPS/build_pips:$PATH
  • export LD_LIBRARY_PATH=/opt/mpich/lib:$LD_LIBRARY_PATH
  • export LD_LIBRARY_PATH=/opt/PIPS/build_pips/ThirdParty:$LD_LIBRARY_PATH
  • export CPLUS_INCLUDE_PATH=/opt/mpich/include:$CPLUS_INCLUDE_PATH
  • export PIPS_NLP_SHARED_LIB=/opt/PIPS_BACK/build_pips/PIPS-NLP/
  • export PIPS_NLP_PAR_SHARED_LIB=/opt/PIPS_BACK/build_pips/PIPS-NLP/

To test that your installation is running correctly, try running the following scripts:
  •    farmer.jl (by typing "julia farmer.jl")  or by running notebook farmer.ipynb using IJulia
  •    jump_example.jl or jump_example.ipynb
  •    PIDtuning.jl
  •    StochPIDTuning_Plasmo.jl
  •    farmer_dsp.jl