Data and scripts for generating a collection of master problems from Two-Stage Stochastic Programming instances.
- Clone/download this repository
- Download and install Gurobi
- Install packages
julia --project -e 'using Pkg; Pkg.instantiate()'
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.
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");
-
Generate the list of jobs
julia exp/jobs.jl > exp/jobs.txt
-
Create
exp/log
anddata/rmp
directories. If they already exist, ensure they are empty as files will be over-written. -
Run the jobs, e.g. with GNU
parallel
cat exp/jobs.txt | parallel -j1 --joblog colgen.log {}
-
The Master problems are located in
data/rmp
, in.mps.bz2
format. The naming convention is<instance_name>_<scenarios>_<cg_iter>.mps.bz2
.