Skip to content

Commit 68f0ec7

Browse files
author
Martin Bergner
committedJul 4, 2011
miplib2010-scripts:
- added the 1.0.2 scripts - added gcg scripts - added journal version testset
1 parent 180cb3d commit 68f0ec7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+5813
-0
lines changed
 

‎miplib2010-scripts/Makefile

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2+
#* *
3+
#* This file is part of the test engine for MIPLIB2010 *
4+
#* *
5+
#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
6+
# $Id: Makefile,v 1.19 2011/06/04 20:34:24 bzfheinz Exp $
7+
8+
VERSION = 1.0.2
9+
TIME = 3600
10+
TEST = benchmark
11+
SOLVER = scip
12+
HARDMEM = 8192
13+
THREADS = 0
14+
15+
SHELL = bash
16+
DOXY = doxygen
17+
18+
CHECKERDIR = checker
19+
20+
#-----------------------------------------------------------------------------
21+
# Rules
22+
#-----------------------------------------------------------------------------
23+
24+
.PHONY: help
25+
help:
26+
@echo "See README for details about the MIPLIB2010 test environment"
27+
@echo
28+
@echo "VERSION: $(VERSION)"
29+
@echo
30+
@echo "TARGETS:"
31+
@echo "** checker -> compiles the solution checker"
32+
@echo "** clean -> cleans the solution checker"
33+
@echo "** cmpres -> generates solver comparison file"
34+
@echo "** doc -> generates doxygen documentation"
35+
@echo "** eval -> evaluate test run"
36+
@echo "** test -> start automatic test runs"
37+
@echo
38+
@echo "PARAMETERS:"
39+
@echo "** HARDMEM -> maximum memory to use MB [8192]"
40+
@echo "** SOLVER -> solver [scip]"
41+
@echo "** THREADS -> number of threads (0: automatic) [0]"
42+
@echo "** TIME -> time limit per instance in seconds [3600]"
43+
@echo "** TEST -> tesr set [benchmark]"
44+
45+
.PHONY: checker
46+
checker:
47+
@$(MAKE) -C $(CHECKERDIR) $^
48+
49+
.PHONY: clean
50+
clean:
51+
@$(MAKE) -C $(CHECKERDIR) clean
52+
53+
.PHONY: doc
54+
doc:
55+
cd doc; $(DOXY) miplib.dxy;
56+
57+
.PHONY: test
58+
test:
59+
@echo "run test: VERSION=$(VERSION) SOLVER=$(SOLVER) TEST=$(TEST) TIME=$(TIME) HARDMEN=$(HARDMEM) THREADS=$(THREADS)"
60+
@$(SHELL) ./scripts/run.sh $(SHELL) $(VERSION) $(SOLVER) $(TEST) $(TIME) $(HARDMEM) $(THREADS);
61+
62+
.PHONY: eval
63+
eval:
64+
@echo "evaluate test: VERSION=$(VERSION) SOLVER=$(SOLVER) TEST=$(TEST)"
65+
@$(SHELL) ./scripts/evalrun.sh results/$(TEST).$(SOLVER).out;
66+
67+
.PHONY: cmpres
68+
cmpres:
69+
@echo "compare result tables: VERSION=$(VERSION) SOLVER=$(SOLVER) TEST=$(TEST)"
70+
@$(SHELL) ./scripts/allcmpres.sh results/$(TEST).$(SOLVER).res;
71+
72+
73+
# --- EOF ---------------------------------------------------------------------
74+
# DO NOT DELETE

‎miplib2010-scripts/README

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2+
* *
3+
* This file is part of the test engine for MIPLIB2010 *
4+
* *
5+
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
6+
7+
8+
Here is what you have to do to get MIPLIB2010 running:
9+
10+
1. compile the solution checker using the command "make checker"
11+
12+
2. Create a soft-link bin/SOLVER to the solver "SOLVER" you want to run, e.g:
13+
- bin/cbc -> ... for CBC
14+
- bin/cplex -> ... for CPLEX
15+
- bin/gurobi -> ... for GUROBI
16+
- bin/mosek -> ... for MOSEK
17+
- bin/scip -> ... for SCIP
18+
- bin/xpress -> ... for XPRESS
19+
20+
It is also possible to compare different versions of a SOLVER. For this
21+
purpose, you need to create soft-links bin/SOLVER.IDENTIFIER. Please,
22+
stick to the notation SOLVER.IDENTIFIER where IDENTIFIER should be a
23+
unique identifier, like the LP solver or the version number. Note, that
24+
the identifier will also be used to distinguish the corresponding output
25+
and result files.
26+
27+
Example 1: To compare SCIP with different LP solvers create for each
28+
SCIP version a soft-link of the form
29+
- bin/scip.spx -> ... for SCIP with SoPlex as LP solver
30+
- bin/scip.cpx -> ... for SCIP with CPLEX as LP solver.
31+
32+
Example 2: To compare GUROBI version 2 and 3 create for each Gurobi
33+
version a soft-link of the form
34+
- bin/gurobi.2 -> ... for GUROBI version 2
35+
- bin/gurobi.3 -> ... for GUROBI version 3.
36+
37+
3. Run the MIPLIB2010 test engine with a MIP solver: In your MIPLIB2010
38+
main directory, enter "make [options] test" with the following options:
39+
- "TIME=3600" to set a wall-clock time limit (default)
40+
41+
- "TEST=benchmark" to set the file "testsets/TEST.test" containing all
42+
instances to be tested. (default)
43+
Example line: "instances/miplib2010/30n20b8.mps.gz"
44+
for the MPS file 30n20b8.mps.gz located in
45+
instances/miplib2010/
46+
47+
- "SOLVER=cbc" to use CBC as MIP solver
48+
- "SOLVER=cplex" to use CPLEX as MIP solver
49+
- "SOLVER=gurobi" to use GUROBI as MIP solver
50+
- "SOLVER=mosek" to use MOSEK as MIP solver
51+
- "SOLVER=scip" to use SCIP as MIP solver (default)
52+
- "SOLVER=xpress" to use XPRESS as MIP solver
53+
54+
- "HARDMEM=8192" to set a hard memory limit in mega bits (default)
55+
56+
- "THREADS=0" to set the number if threads to use, 0 means as many wanted (default)
57+
58+
-----------------------------------------------------------------------------
59+
Here is a short explanation of the involved scripts:
60+
61+
- scripts/run.sh: The main script which
62+
- calls "scripts/run_SOLVER.sh" on each problem instance in testsets/TEST.test
63+
- calls the exact solution checker to test the solution found by SOLVER
64+
- calls "scripts/parse.awk" and "scripts/parse_$SOLVER.awk" to evaluate the
65+
log information of "OUTFILE"
66+
67+
- scripts/run_SOLVER.sh: The driver for a specific SOLVER.
68+
69+
- scripts/parse.awk: The evaluation script which
70+
- parses the information that doesn't depend on the solver used
71+
(like, wall-clock time which is measured externally and the
72+
primal-dual-gap computation)
73+
- prints the result table "RESFILE" in a certain format
74+
75+
- scripts/parse_SOLVER.awk: The SOLVER specific evaluation script which parses the
76+
remaining information (like, number of branch-and-bound nodes, primal bound,
77+
and dual bound).
78+

0 commit comments

Comments
 (0)
Please sign in to comment.