This package contains the source code for the wedge cut generator described in the paper Intersection Cuts for Single Row Relaxations, by Ricardo Fukasawa, Laurent Poirrier and Álinson S. Xavier.
To produce the tables in the paper, the following tools and libraries were used. Different versions may produce slightly different outputs.
- GNU Make, version 3.81
- CMake, version 3.5.1
- GCC, the GNU Compiler Collection, version 4.8.4
- GMP, the GNU Multiple Precision Arithmetic Library, version 6.1.0
- Ruby, version 1.9.3
- IBM® ILOG® CPLEX®, version 12.6.2
- Make sure that CPLEX is correctly installed in your system and that
the paths in
cmake/FindCPLEX.cmake
point to the correct install location. - Navigate to the folder
build
and runcmake ..
followed bymake
- After the compilation is finished, two binaries will be generated inside
the
build
folder: a librarylibonerow.a
, which can be used independently to generate wedge cuts, and an executableonerow-benchmark.run
, which can be used to run the experiments presented in the paper.
-
Navigate to the folder
onerow/benchmark
. -
To run the computational experiments for all instances, run:
./make
-
To run the computational experiments for a particular instance, give the filename as argument. For example:
./make instances/30n20b8.pre.done
-
To run the computational experiments for multiple instances in parallel, the option -j can be used. For example, to run four instances simultaneously, run:
./make -j4
-
Two files will be generated per instance, inside the folder
out
. One file contains the log, which was printed to the terminal during the execution, while the other file (ending in .yaml), contains the experiment results.
- Navigate to the folder
onerow/benchmark
. - Run the computational experiments, as describe above.
- After the experiments are finished, run
./generate_tables
. - Extended versions of Table 1 and 2 will be printed, in CSV format. A
copy will also be saved in
onerow/benchmark/tables
.
Many parameters for the cut generator can be specified by modifying the
file params.hpp
, located in onerow/library/include/onerow/
.
For example, the three heuristics described in the paper can be achieved
by setting:
MAX_CUT_DEPTH = 5
MAX_R1_RAYS = 100
MAX_GOOD_ROWS = 100
After changing these parameters, it will be necessary to recompile the project.