Please make sure you have read the section about testruns in the scip documentation https://scipopt.org/doc/html/TEST.php before you continue reading.
In general the execution of the testruns is the following:
- To start a testrun call
make test
for a local one,make testcluster
for one on the cluster. (These are for running scip tests but variants exist for other solvers, see below) - The
Makefile
will call the correspondingcheck_<solver>.sh
orcheck_cluster_<solver>.sh
script with the correct variables. These scripts will- configure the environment variables for local and cluster runs
. configuration_set.sh
,. configuration_cluster.sh
- configure the test output files such as the .eval, the .tmp and the .set files
. configuration_logfiles.sh
- cluster run scripts have a
waitcluster.sh
script in the loop that makes the scripts wait instead of overloading the cluster queue with jobs. - run
evalcheck_cluster.sh
to evaluate and save any old testruns that lay around. . configuration_tmpfile_setup_{cbc,cplex,gurobi,scip,xpress}.sh
reset and fill a tmpfile to run the solver with. Tmpfile will set correct limits, read in settings, and control display of the solving process.- with
run.sh
(orrun.*.sh
) run or submit the jobs for the current testrun - some local
check_*.sh
scripts runevalcheck.sh
orevalcheck_cluster.sh
automatically after the testrun, for the others and for clusterruns the user has to do it themselves. Theevalcheck*.sh
scripts evaluate the testrun and concatenate the individual logfiles. The naming here are a bit misleading, the main difference between the two files is that the_cluster
script is more involved and cares about cleaning up after itself. Both of them can be used to evaluate acheck.*.eval
file. Recommended is to use the commandevalcheck_cluster.sh results/check.*.eval
from thecheck
folder.
- configure the environment variables for local and cluster runs
make test
check.sh
. configuration_set.sh
. configuration_logfiles.sh
ENDevalcheck_cluster.sh
END. configuration_tmpfile_setup_{cbc,cplex,gurobi,scip,xpress}.sh
ENDrun.sh
END
make testfscip
check_fscip.sh
. configuration_set.sh
. configuration_logfiles.sh
ENDevalcheck_cluster.sh
ENDrun_fscip.sh
END
make test{glpk,mosek,symphony}
check_{glpk,mosek,symphony}.sh
+getlastprob.awk
END +evalcheck.sh
make coverage
check_coverage.sh
evalcheck.sh
make testcount
check_count.sh
getlastprob.awk
ENDevalcheck_count.sh
. configuration_solufile.sh
ENDcheck_count.awk
END
make testcluster{,cbc,cpx,gurobi,xpress}
check_cluster.sh
. configuration_cluster.sh
. configuration_set.sh
waitcluster.sh
END. configuration_logfiles.sh
END. configuration_tmpfile_setup_{cbc,cplex,gurobi,scip,xpress}.sh
ENDrun.sh
END
make testclusterfscip
check_cluster_fscip.sh
. configuration_cluster.sh
. configuration_set.sh
waitcluster.sh
END. configuration_logfiles.sh
ENDrun_fscip.sh
END
make testclustermosek
check_cluster_mosek.sh
. configuration_cluster.sh
waitcluster.sh
ENDrun.sh
END
make testgamscluster
check_gamscluster.sh
schulz.sh
END. configuration_solufile.sh
ENDwaitcluster.sh
ENDrungamscluster.sh
ENDfinishgamscluster.sh
- evalcheck_gamscluster.sh
. configuration_solufile.sh
ENDcheck_count.awk
END
- evalcheck_gamscluster.sh
allcmpres.sh
cmpres.awk
END
average.sh
average.awk
END
permaverage.sh
permaverage.awk
END
permcmpresall.sh
permcmpresall.awk
END
-
check_*.awk
END Parse and check the check files of a testrun and output a .res file table. -
check_count.awk
Count feasible solutions -
getlastprob.awk
END Get the last problem of a check.*-outfile -
cmpres.awk
END Check Comparison Report Generator - Compare two res files. -
average.awk
END compute averages of several SCIP result files -
permaverage.awk
END compute averages over instances for different permuations -
permcmpresall.awk
END compare different versions of runs with permuations
wakeup-slurm
END A Makefile that can wake up sleeping slurm nodes and queues before submitting tests to avoid errors.
-
. configuration_tmpfile_setup_{cbc,cplex,gurobi,scip,xpress}.sh
END Resets and fills a batch file TMPFILE to run the solver with. Tmpfile will set correct limits, read in settings, and control display of the solving process. -
. configuration_logfiles.sh
END Configures the right test output files such as the .eval, the .tmp and the .set files to run a test on. -
. configuration_solufile.sh
END Configures SOLUFILE env variable from name of testset. -
. configuration_cluster.sh
Configures environment variables for cluster runs. It is to be invoked inside acheck_cluster*.sh
script. It callswakeup-slurm
to the respective queue.wakeup-slurm
END
-
. configuration_set.sh
Configures environment variables that are needed for test runs both on the cluster and locally. It is to be invoked inside acheck(_cluster)*.sh
script.. configuration_solufile.sh
END
-
run.sh
END The script executing EXECNAME on one instance and producing the logfiles. Can be executed either locally or on a cluster node. Is to be invoked inside acheck(_cluster)*.sh
script. -
run_fscip.sh
END The script executing fscip on one instance and producing the logfiles. Can be executed either locally or on a cluster node. Is to be invoked inside acheck(_cluster)*.sh
script. -
rungamscluster.sh
END The script executing gams on one instance and producing the logfiles. Can be executed either locally or on a cluster node. Is to be invoked inside acheck(_cluster)*.sh
script.
-
evalcheck.sh
Evaluates one or more testrun by each checking the check*-outfile. Is to be invoked inside acheck*.sh
script.. evaluate.sh
. configuration_solufile.sh
ENDcheck_*.awk
END
-
evalcheck_cluster.sh
END Evaluates a testrun and concatenates the individual logfiles, possibly uploads to rubberband.. evaluate.sh
. configuration_solufile.sh
ENDcheck_*.awk
END
-
. evaluate.sh
Depending on the solver used for the testrun calls corresponding check_*.awk on the testrun files and writes the output in a .res file.. configuration_solufile.sh
ENDcheck_*.awk
END
-
finishgamscluster.sh
Cleans up after gams testrun.- evalcheck_gamscluster.sh
. configuration_solufile.sh
ENDcheck_count.awk
END
- evalcheck_gamscluster.sh
waitcluster.sh
END In order to not overload the cluster, no jobs are submitted if the queue is too full instead, this script waits until the queue load falls under a threshold and returns for the calling script to continue submitting jobs.
schulz.sh
END Supervises processes and sends given signals via kill when elapsed time exceeds given thresholds.
-
CMakeLists.txt
is part of the cmake system, this file's main purpose is to add tests. -
The directory
mipstarts/
contains some files used byCMakeLists.txt
to generate tests. -
In the directory
coverage/
are all necessary files located that are used in producing the coverate report for SCIP. -
The directory
interactiveshell/
contains files forCMakeLists.txt
that get configured to batchfiles to be executed by SCIP. -
In the
testset/
directory reside the *.test and *.solu files to be specified viaTEST=short
. A.test
file lists problem files, one file per line, absolute and relative paths to its location. A.solu
file with the same basename as the.test
file contains information about feasibility and best known objective value. It is optional for a testrun. -
In the
instances
direcotry are some example instances that can be solved with SCIP.