|
| 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