Skip to content

juan-pablo-vielma/extended-MIQCP

Repository files navigation

extended-MIQCP

This is the code for the paper Extended Formulations in Mixed Integer Conic Quadratic Programming by Juan Pablo Vielma, Iain Dunning, Joey Huchette and Miles Lubin. Bellow are instructions on how to re-run the computational experiments and how to generate the tables and graphics in the paper.

Required Software

The code should generate similar results for similar versions. However, for the closest reproduction of the results we recommend using the specific versions noted above for all software except Julia (the latest release of version 0.3 should work ok).

In particular, you can force the use of the appropriate versions of JuMP, CPLEX.jl and Gurobi.jl by installing the latest release versions and calling

julia> Pkg.pin("JuMP",v"0.7.4")
julia> Pkg.pin("CPLEX",v"0.0.12")
julia> Pkg.pin("Gurobi",v"0.1.24")

Downloading the Code

You can download the code by calling

$ git clone https://github.com/juan-pablo-vielma/extended-MIQCP.git

You can alternatively download the code from https://github.com/juan-pablo-vielma/extended-MIQCP/releases

Running the Experiments

To run the complete set of experiments simply call run_experiments.jl with the name of the results file as the only argument. For instance, to save all results to new_results.csv call

$ julia run_experiments.jl new_results.csv

To run a partial set of experiments add the instance size and list of solvers. For instance, to run all experiments for n=30 and for CPLEX's and Gurobi's QCP solvers call

$ julia run_experiments.jl new_results.csv 30 CplexQcp GurobiQcp

Finally, to generate MPS files for all instances and reformulations call run_experiments.jl without any arguments.

Generating Tables

Code for generating the tables can be found in the tables folder. To generate all tables simply call the code with the name of the results file as the only argument. For instance, to generate the tables from the papers results call

$ julia createtables.jl ../results.csv

To generate a custom table use as arguments: the result file name, instance size, instance class (Mark, Short or Robust) and the list of solvers. The code then generates two files named test_time.tex and test_quality.tex, which contain the tables. For instance calling

$ julia createtables.jl ../results.csv 30 Mark CplexQcp GurobiQcp

generates the tables for the Classical instances for n=30 and for CPLEX's and Gurobi's QCP solvers.

Generating Box Plots

The code for generating the box plots can be found in the boxplot folder. The file makeboxplots.nb contains Mathematica code to generate the graphs.

Generating Performance Profiles

The generation of performance profiles requires the perprof-py library and the luatex latex compiler. To generate the profiles call

$ julia createprofiles.jl
$ ./createprofiles.sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages