Compare commits

...

5 Commits

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 2.8)
project(multirow)
project(onerow)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(CPLEX REQUIRED)
@ -7,12 +7,10 @@ include_directories(${CPLEX_INCLUDE_DIR})
find_package(GMP REQUIRED)
find_package(OpenMP REQUIRED)
find_package(BLAS REQUIRED)
find_package(LAPACKE REQUIRED)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -O3")
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_C_FLAGS} -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -O3")
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_C_FLAGS} -O3")
include_directories(${gtest_SOURCE_DIR}/include)
include_directories(onerow/library/include)

@ -0,0 +1,83 @@
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1064311.svg)](https://doi.org/10.5281/zenodo.1064311)
Intersection Cuts for Single Row Relaxations
============================================
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.
Required Tools and Libraries
----------------------------
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
Build instructions
------------------
1. Make sure that CPLEX is correctly installed in your system and that
the paths in `cmake/FindCPLEX.cmake` point to the correct install location.
2. Navigate to the folder `build` and run `cmake ..` followed by `make`
3. After the compilation is finished, two binaries will be generated inside
the `build` folder: a library `libonerow.a`, which can be used
independently to generate wedge cuts, and an executable
`onerow-benchmark.run`, which can be used to run the experiments presented
in the paper.
Running the experiments
-----------------------
1. Navigate to the folder `onerow/benchmark`.
2. To run the computational experiments for all instances, run:
./make
3. To run the computational experiments for a particular instance, give the
filename as argument. For example:
./make instances/30n20b8.pre.done
4. 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
5. 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.
Generating the tables
---------------------
1. Navigate to the folder `onerow/benchmark`.
2. Run the computational experiments, as describe above.
2. After the experiments are finished, run `./generate_tables`.
3. Extended versions of Table 1 and 2 will be printed, in CSV format. A
copy will also be saved in `onerow/benchmark/tables`.
Heuristics
----------
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.

@ -1,11 +0,0 @@
find_library(LAPACKE_LIBRARIES
NAMES lapacke)
find_path(LAPACKE_INCLUDE_DIR NAMES lapacke.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LAPACKE
DEFAULT_MSG
LAPACKE_LIBRARIES
LAPACKE_INCLUDE_DIR)
mark_as_advanced(LAPACKE_LIBRARIES LAPACKE_INCLUDE_DIR)

@ -0,0 +1,29 @@
instance,cutsmir,cutsw,origgap,mirperf,wperf,mircontrib,wcontrib,wimprov,wtime
gmu-35-40.pre,27,403,0.01,0.07,9.94,0.74,99.26,9.88,122
eil33-2.pre,30,247,13.14,4.28,15.25,28.03,71.97,11.47,8972
neos-1337307.pre,158,400,0.4,3.76,6.45,58.34,41.66,2.79,32572
opm2-z7-s2.pre,100,200,25.29,0.62,0.98,62.83,37.17,0.37,284884
mik-250-1-100-1.pre,100,942,19.65,53.52,73.38,72.93,27.07,42.74,14
neos-686190.pre,123,351,23.7,4.61,5.54,83.18,16.82,0.98,33697
mine-90-10.pre,522,274,11.15,12.4,14.51,85.4,14.6,2.42,970
cov1075.pre,101,48,14.29,3.6,4.19,86.1,13.9,0.6,95
mine-166-5.pre,400,200,45.09,6.57,7.58,86.65,13.35,1.08,1892
n3div36.pre,48,100,12.59,16.38,18.85,86.91,13.09,2.95,268969
air04.pre,106,609,1.07,8.14,9.12,89.19,10.81,1.07,144318
rococoC10-001000.pre,136,149,34.42,21.16,22.41,94.42,5.58,1.58,226
rmine6.pre,123,300,1.12,14.57,15.34,95,5,0.9,2751
reblock67.pre,400,100,11.61,21.38,22.46,95.19,4.81,1.38,446
ran16x16.pre,20,52,18.48,17.25,18.07,95.5,4.5,0.98,1
iis-bupa-cov.pre,202,191,26.4,1.22,1.26,96.41,3.59,0.05,9892
sp98ir.pre,100,100,1.37,4.63,4.77,97.12,2.88,0.14,10242
iis-pima-cov.pre,174,135,19.33,2.1,2.14,98.06,1.94,0.04,34347
iis-100-0-cov.pre,100,41,42.53,1.76,1.79,98.11,1.89,0.03,48
eilB101.pre,89,302,11.64,2.64,2.69,98.18,1.82,0.05,13247
mzzv11.pre,221,78,4.86,26.99,27.11,99.57,0.43,0.16,49301
roll3000.pre,194,15,13.9,21.83,21.91,99.63,0.37,0.1,356
dfn-gwin-UUM.pre,45,1,29.12,41.82,41.9,99.82,0.18,0.13,0
csched010.pre,84,3,18.52,3.89,3.9,99.85,0.15,0.01,647
msc98-ip.pre,224,23,1.56,17.78,17.81,99.86,0.14,0.03,26752
neos-916792.pre,91,1,17.53,4.06,4.06,99.86,0.14,0.01,112
mcsched.pre,128,2,8.56,0.04,0.04,99.92,0.08,0,4634
beasleyC3.pre,124,0,68.44,15.58,15.59,99.95,0.05,0.01,0
1 instance cutsmir cutsw origgap mirperf wperf mircontrib wcontrib wimprov wtime
2 gmu-35-40.pre 27 403 0.01 0.07 9.94 0.74 99.26 9.88 122
3 eil33-2.pre 30 247 13.14 4.28 15.25 28.03 71.97 11.47 8972
4 neos-1337307.pre 158 400 0.4 3.76 6.45 58.34 41.66 2.79 32572
5 opm2-z7-s2.pre 100 200 25.29 0.62 0.98 62.83 37.17 0.37 284884
6 mik-250-1-100-1.pre 100 942 19.65 53.52 73.38 72.93 27.07 42.74 14
7 neos-686190.pre 123 351 23.7 4.61 5.54 83.18 16.82 0.98 33697
8 mine-90-10.pre 522 274 11.15 12.4 14.51 85.4 14.6 2.42 970
9 cov1075.pre 101 48 14.29 3.6 4.19 86.1 13.9 0.6 95
10 mine-166-5.pre 400 200 45.09 6.57 7.58 86.65 13.35 1.08 1892
11 n3div36.pre 48 100 12.59 16.38 18.85 86.91 13.09 2.95 268969
12 air04.pre 106 609 1.07 8.14 9.12 89.19 10.81 1.07 144318
13 rococoC10-001000.pre 136 149 34.42 21.16 22.41 94.42 5.58 1.58 226
14 rmine6.pre 123 300 1.12 14.57 15.34 95 5 0.9 2751
15 reblock67.pre 400 100 11.61 21.38 22.46 95.19 4.81 1.38 446
16 ran16x16.pre 20 52 18.48 17.25 18.07 95.5 4.5 0.98 1
17 iis-bupa-cov.pre 202 191 26.4 1.22 1.26 96.41 3.59 0.05 9892
18 sp98ir.pre 100 100 1.37 4.63 4.77 97.12 2.88 0.14 10242
19 iis-pima-cov.pre 174 135 19.33 2.1 2.14 98.06 1.94 0.04 34347
20 iis-100-0-cov.pre 100 41 42.53 1.76 1.79 98.11 1.89 0.03 48
21 eilB101.pre 89 302 11.64 2.64 2.69 98.18 1.82 0.05 13247
22 mzzv11.pre 221 78 4.86 26.99 27.11 99.57 0.43 0.16 49301
23 roll3000.pre 194 15 13.9 21.83 21.91 99.63 0.37 0.1 356
24 dfn-gwin-UUM.pre 45 1 29.12 41.82 41.9 99.82 0.18 0.13 0
25 csched010.pre 84 3 18.52 3.89 3.9 99.85 0.15 0.01 647
26 msc98-ip.pre 224 23 1.56 17.78 17.81 99.86 0.14 0.03 26752
27 neos-916792.pre 91 1 17.53 4.06 4.06 99.86 0.14 0.01 112
28 mcsched.pre 128 2 8.56 0.04 0.04 99.92 0.08 0 4634
29 beasleyC3.pre 124 0 68.44 15.58 15.59 99.95 0.05 0.01 0

@ -0,0 +1,12 @@
instance,cutsmir,mirperf,cutswA,wperfA,wcontribA,wtimeA,cutswB,wperfB,wcontribB,wtimeB,cutswC,wperfC,wcontribC,wtimeC,cutswD,wperfD,wcontribD,wtimeD,cutswE,wperfE,wcontribE,wtimeE
cov1075.pre,101,3.6,51,4.19,13.9,95,41,3.83,5.94,96,37,3.81,5.32,11,29,3.79,4.87,46,30,3.79,4.87,10
eil33-2.pre,30,4.28,301,15.27,72.01,8972,278,15.27,72.01,8652,301,15.27,72.01,9061,186,5.7,24.93,136,119,5.69,24.91,212
gmu-35-40.pre,34,0.07,299,9.94,99.26,122,217,9.92,99.26,104,302,9.94,99.26,116,292,8.14,99.1,16,189,8.14,99.1,27
mik-250-1-100-1.pre,100,53.52,720,73.48,27.16,14,663,73.48,27.16,13,706,73.48,27.16,14,1042,70.88,24.49,10,631,70.91,24.52,14
mine-166-5.pre,400,6.57,200,7.58,13.35,1892,198,7.58,13.35,1805,100,7.27,9.65,71,51,6.89,4.67,119,10,6.81,3.61,14
mine-90-10.pre,522,12.4,274,14.51,14.6,970,287,14.51,14.6,895,85,13.07,5.13,46,76,13.03,4.84,74,14,12.48,0.67,11
n3div36.pre,48,16.38,119,18.85,13.09,268969,111,18.85,13.09,238709,119,18.85,13.09,257430,0,16.38,0,845,0,16.38,0,1218
neos-1337307.pre,158,3.76,400,6.45,41.66,32572,400,6.45,41.66,31355,264,6.44,41.55,1152,49,5.15,26.89,460,22,5.15,26.89,29
neos-686190.pre,123,4.61,377,5.51,16.33,33697,366,5.51,16.33,32521,302,5.39,15.97,10524,206,5.3,12.99,491,132,5.21,11.55,286
opm2-z7-s2.pre,100,0.62,200,0.98,37.17,284884,199,0.98,37.17,271012,126,0.98,37.17,2717,100,0.7,12.17,7152,38,0.7,11.99,134
average,161.6,10.6,294.1,15.7,34.9,63218.7,276,15.6,34.1,58516.2,234.2,15.5,32.6,28114.2,203.1,13.6,21.5,934.9,118.5,13.5,20.8,195.5
1 instance cutsmir mirperf cutswA wperfA wcontribA wtimeA cutswB wperfB wcontribB wtimeB cutswC wperfC wcontribC wtimeC cutswD wperfD wcontribD wtimeD cutswE wperfE wcontribE wtimeE
2 cov1075.pre 101 3.6 51 4.19 13.9 95 41 3.83 5.94 96 37 3.81 5.32 11 29 3.79 4.87 46 30 3.79 4.87 10
3 eil33-2.pre 30 4.28 301 15.27 72.01 8972 278 15.27 72.01 8652 301 15.27 72.01 9061 186 5.7 24.93 136 119 5.69 24.91 212
4 gmu-35-40.pre 34 0.07 299 9.94 99.26 122 217 9.92 99.26 104 302 9.94 99.26 116 292 8.14 99.1 16 189 8.14 99.1 27
5 mik-250-1-100-1.pre 100 53.52 720 73.48 27.16 14 663 73.48 27.16 13 706 73.48 27.16 14 1042 70.88 24.49 10 631 70.91 24.52 14
6 mine-166-5.pre 400 6.57 200 7.58 13.35 1892 198 7.58 13.35 1805 100 7.27 9.65 71 51 6.89 4.67 119 10 6.81 3.61 14
7 mine-90-10.pre 522 12.4 274 14.51 14.6 970 287 14.51 14.6 895 85 13.07 5.13 46 76 13.03 4.84 74 14 12.48 0.67 11
8 n3div36.pre 48 16.38 119 18.85 13.09 268969 111 18.85 13.09 238709 119 18.85 13.09 257430 0 16.38 0 845 0 16.38 0 1218
9 neos-1337307.pre 158 3.76 400 6.45 41.66 32572 400 6.45 41.66 31355 264 6.44 41.55 1152 49 5.15 26.89 460 22 5.15 26.89 29
10 neos-686190.pre 123 4.61 377 5.51 16.33 33697 366 5.51 16.33 32521 302 5.39 15.97 10524 206 5.3 12.99 491 132 5.21 11.55 286
11 opm2-z7-s2.pre 100 0.62 200 0.98 37.17 284884 199 0.98 37.17 271012 126 0.98 37.17 2717 100 0.7 12.17 7152 38 0.7 11.99 134
12 average 161.6 10.6 294.1 15.7 34.9 63218.7 276 15.6 34.1 58516.2 234.2 15.5 32.6 28114.2 203.1 13.6 21.5 934.9 118.5 13.5 20.8 195.5

@ -0,0 +1,11 @@
instance,cutsmir,cutsw,speedmir,speedw,avgm
cov1075,582,174970,0.16,0.20,13.60
eil33-2,30,566411,7.61,8.35,32.63
gmu-35-40,27,58555,0.83,1.16,56.85
mik-250-1-100-1,100,30221,0.17,0.28,45.73
mine-166-5,1436,1336080,0.29,0.57,59.54
mine-90-10,1875,1022638,0.18,0.38,60.88
n3div36,48,3838798,32.06,41.67,45.83
neos-1337307,2263,8302981,1.13,1.52,39.20
neos-686190,254,3162782,5.56,5.54,26.98
opm2-z7-s2,7859,38797773,3.26,3.70,40.89
1 instance cutsmir cutsw speedmir speedw avgm
2 cov1075 582 174970 0.16 0.20 13.60
3 eil33-2 30 566411 7.61 8.35 32.63
4 gmu-35-40 27 58555 0.83 1.16 56.85
5 mik-250-1-100-1 100 30221 0.17 0.28 45.73
6 mine-166-5 1436 1336080 0.29 0.57 59.54
7 mine-90-10 1875 1022638 0.18 0.38 60.88
8 n3div36 48 3838798 32.06 41.67 45.83
9 neos-1337307 2263 8302981 1.13 1.52 39.20
10 neos-686190 254 3162782 5.56 5.54 26.98
11 opm2-z7-s2 7859 38797773 3.26 3.70 40.89