Compare commits
5 Commits
4639cd1d50
...
32b68cf2a8
| Author | SHA1 | Date | |
|---|---|---|---|
| 32b68cf2a8 | |||
| 4c92f387d9 | |||
| a30ee4b000 | |||
| 38487bf663 | |||
| 25b1a26e26 |
@@ -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)
|
||||
|
||||
83
README.md
Normal file
83
README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
[](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)
|
||||
29
onerow/benchmark/tables/gap.csv
Normal file
29
onerow/benchmark/tables/gap.csv
Normal file
@@ -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
|
||||
|
12
onerow/benchmark/tables/selection.csv
Normal file
12
onerow/benchmark/tables/selection.csv
Normal file
@@ -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
|
||||
|
11
onerow/benchmark/tables/speed.csv
Normal file
11
onerow/benchmark/tables/speed.csv
Normal file
@@ -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
|
||||
|
Reference in New Issue
Block a user