Git Product home page Git Product logo

extended-miqcp's Introduction

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

extended-miqcp's People

Contributors

juan-pablo-vielma avatar joehuchette avatar mlubin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.