Python code for generating intersections cuts for non-convex quadratic problems
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
GlobalLib first commit Apr 21, 2017
boxQP first commit Apr 21, 2017
.gitignore no significant change Nov 7, 2017
README.txt no significant change Nov 7, 2017
cutgenerators.py first commit Apr 21, 2017
formulationHandler.py
intersectioncuts.py
linalgtools.py first commit Apr 21, 2017
optMinorPSD.txt no significant change Nov 7, 2017
results.xlsx first commit Apr 21, 2017

README.txt

This is code used in the numerical experiments of the paper

"Outer-Product-Free Sets for Polynomial Optimization and Oracle-Based Cuts"

by Bienstock D. Chen C. and Muñoz G. Available on arXiv 1610.04604.

The code uses as input any model readable by Gurobi (LP, MPS, REW, etc), and then executes
a cutting plane procedure used for finding intersection cuts as indicated in the paper. 
The input model must be a quadratic problem, although not necessarily convex.

We include 2 folders with the test instances used in the paper in LP format, as well as the
full table of results obtained.

To run the code, execute

python intersectioncuts.py filename.lp

You can also include an additional file to indicate a special set of cut families to be considered.
The file "optMinorPSD.txt" is included as an example, and in such case the code must be executed as

python intersectioncuts.py filename.lp optMinorPSD.txt

The code requires Numpy, Scipy, and Gurobi installed.

This code is not intended as a serious implementation, nor a standalone solver, but rather 
as a tool for testing these new families of cuts. Some results may vary in different machines
due to numerical instability of some instances.

Any feedback is appreciated, and please cite if used.