/TSSP

TSSP instances

Primary LanguageJuliaMIT LicenseMIT

TSSP

Data and scripts for generating a collection of master problems from Two-Stage Stochastic Programming instances.

Installation

  1. Clone/download this repository
  2. Download and install Gurobi
  3. Install packages
    julia --project -e 'using Pkg; Pkg.instantiate()'

Instances

We consider the TSSP instances with at least 1000 scenarios, which are displayed below.

.cor file .tim file .sto file
env.cor, env.cor.diss env.tim env.sto.[1200-32928]
4node.cor, 4node.cor.base 4node.tim 4node.sto.[1024-32768]
phone.cor phone.tim phone.sto
stormG2.cor stormG2.tim stormG2_1000.sto
assets.cor assets.tim assets.sto.large

Each instance is solved by column-generation, with Gurobi (default parameters) as the MP solver. Sub-problems are solved by Gurobi as LPs. The column-generation algorithm is implemented in the (unregistered) package Linda.jl.

We save the RMP every 10 iterations of the CG procedure, and at the final iteration. This gives a dataset of structured LPs.

Generating a sysimage

julia --trace-compile=exp/precompile.jl --project exp/snoop.jl
using PackageCompiler
PackageCompiler.create_sysimage([:JuMP, :LinearAlgebra, :SparseArrays, :Gurobi, :Linda, :SMPSReader]; project=".", sysimage_path="JuliaTSSP.so", precompile_statements_file="exp/precompile.jl");

Generating RMP collection

  1. Generate the list of jobs

    julia exp/jobs.jl > exp/jobs.txt
  2. Create exp/log and data/rmp directories. If they already exist, ensure they are empty as files will be over-written.

  3. Run the jobs, e.g. with GNU parallel

    cat exp/jobs.txt | parallel -j1 --joblog colgen.log {}
  4. The Master problems are located in data/rmp, in .mps.bz2 format. The naming convention is <instance_name>_<scenarios>_<cg_iter>.mps.bz2.