Skip to content

jiadongwang/DIP-TESTING

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                           *
*            This file is part of the test engine for TESTING MILP SOLVER           *
*                                                                           *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


Here is what you have to do to get MIPLIB2010 and decomplib running:

1. compile the solution checker using the command "make checker"

2. Create a soft-link bin/SOLVER to the solver "SOLVER" you want to run, e.g: 
   - bin/cbc -> ...        for CBC
   - bin/cplex -> ...      for CPLEX 
   - bin/glpki -> ...      for GLPK
   - bin/gurobi -> ...     for GUROBI
   - bin/lpsolve -> ...    for lp_solve
   - bin/mosek -> ...      for MOSEK
   - bin/scip -> ...       for SCIP
   - bin/xpress -> ...     for XPRESS
   - bin/dip -> ...        for DIP
   It is also possible to compare different versions of a SOLVER. For this
   purpose, you need to create soft-links bin/SOLVER.IDENTIFIER. Please,
   stick to the notation SOLVER.IDENTIFIER where IDENTIFIER should be a
   unique identifier, like the LP solver or the version number. Note, that
   the identifier will also be used to distinguish the corresponding output
   and result files.
   
   Example 1: To compare SCIP with different LP solvers create for each
   SCIP version a soft-link of the form
   - bin/scip.spx -> ...   for SCIP with SoPlex as LP solver
   - bin/scip.cpx -> ...   for SCIP with CPLEX as LP solver.

   Example 2: To compare GUROBI version 2 and 3 create for each Gurobi
   version a soft-link of the form
   - bin/gurobi.2 -> ...   for GUROBI version 2
   - bin/gurobi.3 -> ...   for GUROBI version 3.
  
3. Run the MIPLIB2010 test engine with a MIP solver: In your MIPLIB2010
   main directory, enter "make [options] test" with the following options:
   - "TIME=3600"             to set a wall-clock time limit (default)

   - "TEST=benchmark"        to set the file "testsets/TEST.test" containing all 
                             instances to be tested. (default)
                             Example line: "instances/miplib2010/30n20b8.mps.gz"
			     for the MPS file 30n20b8.mps.gz located in 
			     instances/miplib2010/

   - "SOLVER=cbc"            to use CBC as MIP solver
   - "SOLVER=cplex"          to use CPLEX as MIP solver
   - "SOLVER=glpk"           to use GLPK as MIP solver
   - "SOLVER=gurobi"         to use GUROBI as MIP solver
   - "SOLVER=lpsolve"        to use lp_solve as MIP solver
   - "SOLVER=mosek"          to use MOSEK as MIP solver
   - "SOLVER=scip"           to use SCIP as MIP solver (default)
   - "SOLVER=xpress"         to use XPRESS as MIP solver
 
   - "HARDMEM=8192"          to set a hard memory limit in mega bits (default)

   - "THREADS=0"             to set the number if threads to use, 0 means as many wanted (default)

-----------------------------------------------------------------------------
   
4. The script provides an option to generate performance profile on results of different solvers
   The following line generates the performance profile to cplex_dip.eps of two results file from 
   decomp.cplex.res and decomp.dip.res

   make - "RESULT1=decomp.cplex.res" - "RESULT2=decomp.dip.res" - "OUTPUT=cplex_dip.eps" pprof

5. on testing DIP. 
   after creating a softlink of executable dip in bin folder, run the following line 
   to test dip on instances in decomp
   make - "TIME=3600"  - "TEST=decomp"  - "SOLVER=dip" test
Here is a short explanation of the involved scripts:

- scripts/run.sh: The main script which 
   - calls "scripts/run_SOLVER.sh" on each problem instance in testsets/TEST.test 
   - calls the exact solution checker to test the solution found by SOLVER
   - calls "scripts/parse.awk" and "scripts/parse_$SOLVER.awk" to evaluate the 
     log information of "OUTFILE"

- scripts/run_SOLVER.sh: The driver for a specific SOLVER.

- scripts/parse.awk: The evaluation script which 
   - parses the information that doesn't depend on the solver used 
     (like, wall-clock time which is measured externally and the 
     primal-dual-gap computation)
   - prints the result table "RESFILE" in a certain format

- scripts/parse_SOLVER.awk: The SOLVER specific evaluation script which parses the
  remaining information (like, number of branch-and-bound nodes, primal bound, 
  and dual bound).

About

scripts for DIP-TESTING

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published