Add single-row cut generator

selection
Alinson S. Xavier 9 years ago
parent 43894daa81
commit 85bddc4e87

@ -1,20 +1,29 @@
cmake_minimum_required(VERSION 2.8)
project(multirow)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /Users/axavier/Applications/IBM/ILOG/CPLEX_Studio1262/cplex/lib/x86-64_osx/static_pic)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(CPLEX REQUIRED)
include_directories(${CPLEX_INCLUDE_DIR})
include_directories(multirow/include)
include_directories(lifting/library/include)
include_directories(infinity/library/include)
find_package(GMP REQUIRED)
find_package(OpenMP REQUIRED)
add_subdirectory(googletest/googletest)
include_directories(${gtest_SOURCE_DIR}/include)
include_directories(infinity/library/include)
include_directories(lifting/library/include)
include_directories(multirow/include)
include_directories(onerow/library/include)
include_directories(qxx/include)
add_subdirectory(multirow)
add_subdirectory(lifting/library)
add_subdirectory(lifting/benchmark)
add_subdirectory(infinity/library)
add_subdirectory(googletest/googletest)
add_subdirectory(infinity/benchmark)
add_subdirectory(infinity/library)
add_subdirectory(lifting/benchmark)
add_subdirectory(lifting/library)
add_subdirectory(multirow)
add_subdirectory(onerow/benchmark)
add_subdirectory(onerow/library)
add_subdirectory(qxx)

@ -0,0 +1,23 @@
# Try to find the GMP librairies
# GMP_FOUND - system has GMP lib
# GMP_INCLUDE_DIR - the GMP include directory
# GMP_LIBRARIES - Libraries needed to use GMP
# Copyright (c) 2006, Laurent Montel, <montel@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
if (GMP_INCLUDE_DIR AND GMP_LIBRARIES)
# Already in cache, be silent
set(GMP_FIND_QUIETLY TRUE)
endif (GMP_INCLUDE_DIR AND GMP_LIBRARIES)
find_path(GMP_INCLUDE_DIR NAMES gmp.h )
find_library(GMP_LIBRARIES NAMES gmp libgmp )
find_library(GMPXX_LIBRARIES NAMES gmpxx libgmpxx )
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMP DEFAULT_MSG GMP_INCLUDE_DIR GMP_LIBRARIES)
mark_as_advanced(GMP_INCLUDE_DIR GMP_LIBRARIES)

@ -1,2 +1,7 @@
add_executable(infinity-benchmark.run src/main.c)
target_link_libraries (infinity-benchmark.run LINK_PUBLIC lifting_static infinity_static multirow_static)
target_link_libraries (infinity-benchmark.run LINK_PUBLIC
lifting_static
infinity_static
multirow_static
m
pthread)

@ -14,8 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define _GNU_SOURCE
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

@ -15,6 +15,7 @@
*/
#include <gtest/gtest.h>
using namespace std;
#define TEST_SOURCE

@ -1,2 +1,2 @@
add_executable(lifting-benchmark.run src/main.c)
target_link_libraries (lifting-benchmark.run LINK_PUBLIC lifting_static multirow_static)
target_link_libraries (lifting-benchmark.run LINK_PUBLIC lifting_static multirow_static m pthread)

@ -0,0 +1,2 @@
add_executable(onerow-benchmark.run src/main.cpp)
target_link_libraries (onerow-benchmark.run LINK_PUBLIC qxx_static onerow_static m pthread ${GMP_LIBRARIES} ${CPLEX_LIBRARIES})

@ -0,0 +1,97 @@
miplib2010 := \
instances/30n20b8.pre.done \
instances/aflow40b.pre.done \
instances/air04.pre.done \
instances/app1-2.pre.done \
instances/bab5.pre.done \
instances/beasleyC3.pre.done \
instances/biella1.pre.done \
instances/bienst2.pre.done \
instances/binkar10_1.pre.done \
instances/bley_xl1.pre.done \
instances/core2536-691.pre.done \
instances/cov1075.pre.done \
instances/csched010.pre.done \
instances/danoint.pre.done \
instances/dfn-gwin-UUM.pre.done \
instances/eil33-2.pre.done \
instances/eilB101.pre.done \
instances/enlight13.pre.done \
instances/ex9.pre.done \
instances/glass4.pre.done \
instances/gmu-35-40.pre.done \
instances/iis-100-0-cov.pre.done \
instances/iis-bupa-cov.pre.done \
instances/iis-pima-cov.pre.done \
instances/lectsched-4-obj.pre.done \
instances/macrophage.pre.done \
instances/map18.pre.done \
instances/map20.pre.done \
instances/mcsched.pre.done \
instances/mik-250-1-100-1.pre.done \
instances/mine-166-5.pre.done \
instances/mine-90-10.pre.done \
instances/msc98-ip.pre.done \
instances/mspp16.pre.done \
instances/mzzv11.pre.done \
instances/n3div36.pre.done \
instances/n3seq24.pre.done \
instances/n4-3.pre.done \
instances/neos-1109824.pre.done \
instances/neos-1337307.pre.done \
instances/neos-1396125.pre.done \
instances/neos13.pre.done \
instances/neos-1601936.pre.done \
instances/neos18.pre.done \
instances/neos-476283.pre.done \
instances/neos-686190.pre.done \
instances/neos-916792.pre.done \
instances/neos-934278.pre.done \
instances/net12.pre.done \
instances/netdiversion.pre.done \
instances/newdano.pre.done \
instances/noswot.pre.done \
instances/ns1208400.pre.done \
instances/ns1688347.pre.done \
instances/ns1758913.pre.done \
instances/ns1830653.pre.done \
instances/opm2-z7-s2.pre.done \
instances/pg5_34.pre.done \
instances/pigeon-10.pre.done \
instances/pw-myciel4.pre.done \
instances/qiu.pre.done \
instances/rail507.pre.done \
instances/ran16x16.pre.done \
instances/reblock67.pre.done \
instances/rmatr100-p10.pre.done \
instances/rmatr100-p5.pre.done \
instances/rmine6.pre.done \
instances/rocII-4-11.pre.done \
instances/rococoC10-001000.pre.done \
instances/roll3000.pre.done \
instances/sp98ic.pre.done \
instances/sp98ir.pre.done \
instances/tanglegram1.pre.done \
instances/tanglegram2.pre.done \
instances/timtab1.pre.done \
instances/triptim1.pre.done \
instances/unitcal_7.pre.done \
instances/vpphard.pre.done \
instances/zib54-UUE.pre.done
mir := $(patsubst instances/%, mir/%, $(patsubst %.done,%.yaml,$(miplib3-all-instances)))
bases := $(patsubst instances/%, bases/%, $(patsubst %.done,%.bas,$(miplib3-all-instances)))
solutions := $(patsubst instances/%, solutions/%, $(patsubst %.done,%.x,$(miplib3-all-instances)))
benchmark := ../../build/onerow/benchmark/onerow-benchmark.run
.SECONDARY:
miplib2010: $(miplib2010)
instances/%.done: $(benchmark) out/%.yaml
@touch $@
out/%.yaml: $(benchmark) instances/%.mps.gz
@$(benchmark) -mw -f instances/$*.mps.gz -s out/$*.yaml 2>&1 | tee out/$*.log

@ -0,0 +1,29 @@
#!/bin/bash
for i in out/*yaml; do
IN=${i/.yaml/}
IN=${IN/out\//}
grep -q mip_value $i && continue
grep $IN instances/opt.tab | awk '{ print "mip_value:\n "$2 }' >> $i
done
echo " TABLE 1 "
echo "--------------------------------------------------------------------------------"
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s\n" instance cutsmir cutsw origgap mirperf wperf mircontrib wcontrib wimprov
for i in out/*.yaml; do
IN=${i/.yaml/}
IN=${IN/out\//}
printf "%s," $IN
scripts/gap.rb $i
done | sort -t',' -nrsk 8 | sed -e 's/,$//g'
echo
echo
echo " TABLE 2 "
echo "--------------------------------------------------------------------------------"
printf "%s,%s,%s,%s,%s,%s\n" instance cutsmir cutsw mirt wedget avgm
for i in out/*.yaml; do
IN=${i/.yaml/}
IN=${IN/out\//}
printf "%s," $IN
scripts/speed.rb $i
done | sort | sed -e 's/,$//g'

@ -0,0 +1,362 @@
30_70_45_095_100 3.000000
30n20b8 302.000000
50v-10 3311.180000
a1c1s1 11503.400000
acc-tight4 0.000000
acc-tight5 0.000000
acc-tight6 0.000000
aflow40b 1168.000000
air04 56137.000000
app1-2 -41.000000
ash608gpia-3col 100000000000000000000.000000
atlanta-ip 90.009900
atm20-100 2463620.000000
b2c1s1 25687.900000
bab1 100000000000000000000.000000
bab3 100000000000000000000.000000
bab5 -106412.000000
beasleyC3 754.000000
berlin_5_8_0 62.000000
bg512142 184203.000000
biella1 3065010.000000
bienst2 54.600000
binkar10_1 6742.200000
bley_xl1 190.000000
blp-ar98 6205.210000
blp-ic97 4025.020000
bnatt350 0.000000
bnatt400 1.000000
buildingenergy 33283.900000
cdma 100000000000000000000.000000
circ10-3 100000000000000000000.000000
co-100 2639940.000000
core2536-691 689.000000
core4872-1529 100000000000000000000.000000
cov1075 20.000000
csched007 351.000000
csched008 173.000000
csched010 408.000000
d10200 12430.000000
d20200 100000000000000000000.000000
dano3mip 100000000000000000000.000000
danoint 65.666700
datt256 100000000000000000000.000000
dc1c 1767900.000000
dc1l 100000000000000000000.000000
dfn-gwin-UUM 38752.000000
dg012142 2300870.000000
dolom1 6609250.000000
ds-big 100000000000000000000.000000
eil33-2 934.008000
eilA101-2 880.920000
eilB101 1216.920000
enlight13 71.000000
enlight14 100000000000000000000.000000
enlight15 69.000000
enlight16 100000000000000000000.000000
enlight9 100000000000000000000.000000
ex1010-pi 100000000000000000000.000000
ex10 100.000000
ex9 81.000000
f2000 100000000000000000000.000000
g200x740i 30086.000000
ger50_17_trans 100000000000000000000.000000
germanrr 47095900.000000
germany50-DBM 473840.000000
glass4 1200010000.000000
gmu-35-40 -2406730.000000
gmu-35-50 -2607960.000000
gmut-75-50 100000000000000000000.000000
gmut-77-40 100000000000000000000.000000
go19 84.000000
hanoi5 1931.000000
harp2 -73899800.000000
hawaiiv10-130 100000000000000000000.000000
ic97_potential 3942.000000
iis-100-0-cov 29.000000
iis-bupa-cov 36.000000
iis-pima-cov 33.000000
in 58.000000
ivu06-big 100000000000000000000.000000
ivu52 100000000000000000000.000000
janos-us-DDM 1492710.000000
k16x240 10674.000000
lectsched-1 0.000000
lectsched-1-obj 100000000000000000000.000000
lectsched-2 0.000000
lectsched-3 0.000000
lectsched-4-obj 4.000000
leo1 404228000.000000
leo2 404077000.000000
liu 100000000000000000000.000000
lotsize 1480200.000000
lrsa120 100000000000000000000.000000
m100n500k4r1 -25.000000
macrophage 374.000000
map06 -289.000000
map10 -495.000000
map14 -674.000000
map18 -847.000000
map20 -922.000000
markshare_5_0 1.000000
maxgasflow -44565800.000000
mc11 11689.000000
mcsched 211913.000000
methanosarcina 100000000000000000000.000000
mik-250-1-100-1 -66729.000000
mine-166-5 -566396000.000000
mine-90-10 -784302000.000000
mining 100000000000000000000.000000
mkc -563.846000
momentum1 109143.000000
momentum2 12314.100000
momentum3 100000000000000000000.000000
msc98-ip 19839500.000000
mspp16 363.000000
mzzv11 -21718.000000
n15-3 100000000000000000000.000000
n3-3 15915.000000
n3700 100000000000000000000.000000
n3705 100000000000000000000.000000
n370a 100000000000000000000.000000
n3div36 130800.000000
n3seq24 52200.000000
n4-3 8993.000000
n9-3 14409.000000
nag 100000000000000000000.000000
nb10tb 100000000000000000000.000000
neos-1109824 378.000000
neos-1112782 572103000000.000000
neos-1112787 565032000000.000000
neos-1140050 100000000000000000000.000000
neos-1171692 -273.000000
neos-1171737 -195.000000
neos-1224597 -428.000000
neos-1225589 1231070000.000000
neos-1311124 100000000000000000000.000000
neos-1337307 -202319.000000
neos-1396125 3000.050000
neos13 -95.474800
neos-1426635 -176.000000
neos-1426662 -44.000000
neos-1429212 100000000000000000000.000000
neos-1436709 -128.000000
neos-1440225 36.000000
neos-1440460 -179.250000
neos-1442119 -181.000000
neos-1442657 -154.500000
neos15 80598.400000
neos-1601936 3.000000
neos-1605061 12.000000
neos-1605075 9.000000
neos-1616732 159.000000
neos-1620770 9.000000
neos16 446.000000
neos18 16.000000
neos-476283 406.363000
neos-506422 0.000000
neos-506428 583780.000000
neos-520729 -1385000.000000
neos-555424 1286800.000000
neos-631710 203.000000
neos-686190 6730.000000
neos-693347 234.000000
neos6 83.000000
neos-738098 -1099.000000
neos-777800 -80.000000
neos-785912 100000000000000000000.000000
neos788725 100000000000000000000.000000
neos-799711 -11170200.000000
neos-807456 100000000000000000000.000000
neos808444 0.000000
neos-820146 100000000000000000000.000000
neos-820157 100000000000000000000.000000
neos-824661 33.000000
neos-824695 31.000000
neos-826650 29.000000
neos-826694 58.000000
neos-826812 58.011000
neos-826841 29.008200
neos-847302 4.000000
neos-849702 0.000000
neos858960 100000000000000000000.000000
neos-859770 100000000000000000000.000000
neos-885086 -243.000000
neos-885524 12320.100000
neos-911880 54.760000
neos-916792 31.870400
neos-932816 15376.000000
neos-933638 276.000000
neos-933966 318.000000
neos-934278 260.000000
neos-935627 2598.000000
neos-935769 3010.000000
neos-937511 3510.000000
neos-937815 100000000000000000000.000000
neos-941262 2791.000000
neos-941313 9361.000000
neos-942830 16.000000
neos-948126 2607.000000
neos-952987 100000000000000000000.000000
neos-957389 1.500000
neos-984165 100000000000000000000.000000
net12 214.000000
netdiversion 242.000000
newdano 65.666700
nobel-eu-DBE 608910.000000
noswot -41.000000
npmv07 104810000000.000000
ns1111636 162.000000
ns1116954 0.000000
ns1158817 100000000000000000000.000000
ns1208400 2.000000
ns1456591 100000000000000000000.000000
ns1606230 21.000000
ns1631475 100000000000000000000.000000
ns1644855 -1524.330000
ns1663818 86.000000
ns1685374 -13.000000
ns1686196 100000000000000000000.000000
ns1688347 27.000000
ns1696083 45.000000
ns1702808 100000000000000000000.000000
ns1745726 100000000000000000000.000000
ns1758913 -1454.670000
ns1766074 100000000000000000000.000000
ns1769397 100000000000000000000.000000
ns1778858 100000000000000000000.000000
ns1830653 20622.000000
ns1853823 100000000000000000000.000000
ns1854840 100000000000000000000.000000
ns1856153 100000000000000000000.000000
ns1904248 100000000000000000000.000000
ns1905797 100000000000000000000.000000
ns1905800 100000000000000000000.000000
ns1952667 0.000000
ns2017839 77030500000000.000000
ns2081729 9.000000
ns2118727 100000000000000000000.000000
ns2122603 100000000000000000000.000000
ns2124243 100000000000000000000.000000
ns2137859 100000000000000000000.000000
ns4-pr3 100000000000000000000.000000
ns4-pr9 100000000000000000000.000000
ns894236 100000000000000000000.000000
ns894244 15.000000
ns894786 100000000000000000000.000000
ns894788 7.000000
ns903616 100000000000000000000.000000
ns930473 100000000000000000000.000000
nsr8k 100000000000000000000.000000
nu120-pr3 28130.000000
nu60-pr9 24940.000000
ofi 6155380000.000000
opm2-z10-s2 -33826.000000
opm2-z11-s8 -43485.000000
opm2-z12-s14 -64291.000000
opm2-z12-s7 -65514.000000
opm2-z7-s2 -10280.000000
p100x588b 47878.000000
p2m2p1m1p0n100 100000000000000000000.000000
p6b -63.000000
p80x400b 39667.000000
pb-simp-nonunif 100000000000000000000.000000
pg5_34 -14339.400000
pg -8674.340000
pigeon-10 -9000.000000
pigeon-11 -10000.000000
pigeon-12 -11000.000000
pigeon-13 -12000.000000
pigeon-19 100000000000000000000.000000
probportfolio 16.734200
protfold -31.000000
pw-myciel4 10.000000
qiu -132.873000
queens-30 -40.000000
r80x800 5332.000000
rail01 -70.570000
rail02 -200.450000
rail03 -867.094000
rail507 174.000000
ramos3 100000000000000000000.000000
ran14x18-disj-8 3712.000000
ran14x18 3712.000000
ran16x16 3823.000000
reblock166 -600052000.000000
reblock354 -39280500.000000
reblock420 -517793000.000000
reblock67 -34630600.000000
rmatr100-p10 423.000000
rmatr100-p5 976.000000
rmatr200-p10 2017.000000
rmatr200-p20 837.000000
rmatr200-p5 4521.000000
rmine10 100000000000000000000.000000
rmine14 100000000000000000000.000000
rmine21 100000000000000000000.000000
rmine25 100000000000000000000.000000
rmine6 -457.186000
rocII-4-11 -6.655640
rocII-7-11 100000000000000000000.000000
rocII-9-11 100000000000000000000.000000
rococoB10-011000 19449.000000
rococoC10-001000 11460.000000
rococoC11-011100 20889.000000
rococoC12-111000 100000000000000000000.000000
roll3000 12890.000000
rvb-sub 100000000000000000000.000000
satellites1-25 -5.000000
satellites2-60-fs -19.000000
satellites2-60 -19.000000
satellites3-40-fs -25.000000
satellites3-40 -25.000000
sct1 100000000000000000000.000000
sct32 100000000000000000000.000000
sct5 100000000000000000000.000000
set3-10 100000000000000000000.000000
set3-15 124886.000000
set3-20 100000000000000000000.000000
seymour 423.000000
seymour-disj-10 287.000000
shipsched 100000000000000000000.000000
shs1023 13136.600000
siena1 100000000000000000000.000000
sing161 100000000000000000000.000000
sing245 100000000000000000000.000000
sing2 100000000000000000000.000000
sing359 100000000000000000000.000000
sp97ar 660706000.000000
sp98ic 449145000.000000
sp98ir 219677000.000000
splan1 100000000000000000000.000000
stockholm 100000000000000000000.000000
stp3d 493.720000
sts405 100000000000000000000.000000
sts729 100000000000000000000.000000
swath 467.407000
t1717 100000000000000000000.000000
t1722 100000000000000000000.000000
tanglegram1 5182.000000
tanglegram2 443.000000
timtab1 764772.000000
toll-like 610.000000
transportmoment -3063100000.000000
triptim1 22.868100
triptim2 100000000000000000000.000000
triptim3 100000000000000000000.000000
tw-myciel4 10.000000
uc-case11 100000000000000000000.000000
uc-case3 7204.920000
uct-subprob 314.000000
umts 30090300.000000
unitcal_7 19635600.000000
usAbbrv-8-25_70 100000000000000000000.000000
van 100000000000000000000.000000
vpphard2 81.000000
vpphard 5.000000
wachplan -8.000000
wnq-n100-mw99-14 259.000000
zib01 100000000000000000000.000000
zib02 100000000000000000000.000000
zib54-UUE 10334000.000000

@ -0,0 +1,7 @@
[ 0.00] Reading input file: instances/30n20b8.pre.mps.gz...
[ 0.00] Fetched 406 rows, 5077 cols.
[ 0.00] Solving first relaxation...
[ 0.36] 93.274056 [optimal]
[ 0.36] Reading basis...
[ 0.41] Generating MIR cuts...
[ 0.41] Finding interesting rows...

@ -0,0 +1,32 @@
version: benchmark.run
machine: mensa
[ 0.00] Reading input file: instances/bienst2.pre.mps.gz...
[ 0.00] Fetched 520 rows, 898 cols.
[ 0.00] Solving first relaxation...
[ 0.00] 11.724138 [optimal]
[ 0.00] Reading basis...
[ 0.01] Generating MIR cuts...
[ 0.01] Finding interesting rows...
[ 3.22] 33 rows found
[ 3.22] Starting timer 1...
version: benchmark.run
machine: mensa
[ 0.00] Reading input file: instances/bienst2.pre.mps.gz...
[ 0.00] Fetched 520 rows, 898 cols.
[ 0.00] Solving first relaxation...
[ 0.00] 11.724138 [optimal]
[ 0.00] Reading basis...
[ 0.01] Generating MIR cuts...
[ 0.01] Finding interesting rows...
[ 3.00] 33 rows found
[ 3.00] Starting timer 1...
[ 3.20] Ending timer 1: 0.20s
[ 3.20] Added 33 violated cuts...
[ 3.22] 14.442185 [optimal]
[ 3.22] Generating wedge cuts...
[ 3.22] Starting timer 2...
[ 3.59] Ending timer 2: 0.37s
[ 3.59] Added 0 violated cuts...
[ 3.59] 14.442185 [optimal]
[ 3.59] Writting stats: out/bienst2.yaml...
[ 3.60] Done.

@ -0,0 +1,36 @@
input_file:
instances/bienst2.pre.mps.gz
sol_value:
0: 11.724138
1: 14.442185
2: 14.442185
sol_status:
0: optimal
1: optimal
2: optimal
n_added_cuts:
total:
33
depth:
0: 33
n_generated_cuts:
total:
41
round:
1: 33
2: 8
depth:
0: 41
trivial_lifting:
max_m: 0
average_m: 0.000000
integral_coefficients: 0.002685
slowdown: 0.000000
timers:
1: 0.2040
2: 0.3680
cut_speed:
round_1: 0.0062
round_2: 0.0460
mip_value:
54.600000

Some files were not shown because too many files have changed in this diff Show More