NEWS
converted to markdown.
Fix CRAN error on Solaris.
irace2pyimp
function and executable (irace2pyimp.exe
on Windows) to convert .Rdata files generated by irace to the input files required by the parameter importance analysis tool PyImp (https://github.com/automl/ParameterImportance). (Nguyen Dang, Manuel López-Ibáñez)
Initial configurations may also be provided directly in R using scenario$initConfigurations
(Manuel López-Ibáñez)
Rdata files are saved in version 2 to keep compatibility with older R versions. (Manuel López-Ibáñez)
Fix invalid assert with ordered parameters: (Leslie Pérez Cáceres)
value >= 1L && value <= length(possibleValues) is not TRUE
The irace
executable (irace.exe
on Windows) is a compiled binary instead of a script. On Windows, irace.exe
replaces irace.bat
(Manuel López-Ibáñez)
inst/examples/Spear contains the Spear (SAT solver) configuration scenario. (Manuel López-Ibáñez)
Fixed bug when reporting minimum maxTime required. (Reported by Luciana Salete Buriol, fixed by Manuel López-Ibáñez)
Fixed bug detected by assert:
(Reported by Maxim Buzdalov, fixed by Manuel López-Ibáñez)
Fix buggy test that breaks CRAN. (Manuel López-Ibáñez)
Do not print “23:59:59” when wall-clock time is actually close to zero. (Manuel López-Ibáñez)
Fix irace --check --parallel 2
on Windows. (Manuel López-Ibáñez)
Values of real-valued parameter are now printed with sufficient precision to satisfy digits
(up to digits=15
). (Manuel López-Ibáñez)
It is possible to specify boundMax without capping. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
irace --check
will exit with code 1 if the check is unsuccessful (Manuel López-Ibáñez)
Print where irace is installed with --help
. (Manuel López-Ibáñez)
irace will now complain if the output of target-runner or target-evaluator contains extra lines even if the first line of output is correct. This is to avoid parsing the wrong output. Unfortunately, this may break setups that relied on this behavior. The solution is to only print the output that irace expects. (Manuel López-Ibáñez)
Completely re-implement log
parameters to fix several bugs. Domains that contain zero or negative values are now rejected. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
New option aclib=
(--aclib 1
) enables compatibility with the GenericWrapper4AC (https://github.com/automl/GenericWrapper4AC/) used by AClib (http://aclib.net/). This is EXPERIMENTAL. --aclib 1
also sets digits to 15 for compatibility with AClib defaults. (Manuel López-Ibáñez)
Fix printing of output when capping is enabled. (Manuel López-Ibáñez)
checkTargetFiles()
(--check
) samples an instance unless sampleInstances
is FALSE. (Manuel López-Ibáñez)
Fix symbol printed in elimination test. (Manuel López-Ibáñez)
Use dynGet()
to find targetRunner
and targetEvaluator
. As a result, we now require R >= 3.2. (Manuel López-Ibáñez)
All tests now use testthat
. (Manuel López-Ibáñez)
New function scenario.update.paths()
(Manuel López-Ibáñez)
Fix assert failure that may happen when elitistNewInstances
is larger than firstTest
. Reported by Jose Riveaux. (Manuel López-Ibáñez)
Fix bug in checkTargetFiles()
(--check
) with capping. (Leslie Pérez Cáceres)
Clarify a few errors/warnings when maxTime
> 0. (Manuel López-Ibáñez, suggested by Haroldo Gambini Santos)
Use testthat for unit testing. (Manuel López-Ibáñez)
Allow instances to be a list of arbitrary R objects (mlr
bugfix). (Manuel López-Ibáñez)
irace now supports adaptive capping for computation time minimization. The default value of the testType
option is t-test when adaptive capping is enabled. Please see the user-guide for details. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
The package contains an ablation()
function implementing the ablation method for parameter importance analysis by Fawcett and Hoos (2016). (Leslie Pérez Cáceres, Manuel López-Ibáñez)
New option postselection
executes a post-selection race. (Leslie Pérez Cáceres)
At the end of each race, if the race stops before evaluating all instances seen in previous races, then the best overall may be different than the best of the race. We now print the best overall (best-so-far). Elites evaluated on more instances are considered better than those evaluated on fewer. (Manuel López-Ibáñez, Leslie Pérez Cáceres)
Last active parameter values of numerical parameters (i
and r
) are carried by the sampling model. When a value must be assigned and the parameter was previously not active, the sampling is performed around the last value. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
R help pages are now generated with Roxygen2. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
The user guide documents --version
, --help
, and --check
. (Manuel López-Ibáñez)
A return value of Inf
from targetRunner
/targetEvaluation
results in the immediate rejection of the configuration without any further evaluation. This is useful for handling unreliable or broken configurations that should not stop irace. (Manuel López-Ibáñez)
Numerical parameters may be sampled on a logarithmic scale using i,log
or r,log
. (Alberto Franzin)
New target-runner.bat
for Windows contributed by André de Souza Andrade.
Fixed all shell scripts calling functions before defining them, which is not portable. (Manuel López-Ibáñez)
Fixed --parallel
bug in Windows that resulted in Error in checkForRemoteErrors(val)
. (Manuel López-Ibáñez)
Improve error message when no training instances are given. (Manuel López-Ibáñez)
The output of irace now specifies in which order, if any, configurations are printed. (Manuel López-Ibáñez, suggested by Markus Wagner)
Several fixes for handling paths in Windows. (Manuel López-Ibáñez)
readConfigurationsFile()
now has a text=
argument, which allows reading configurations from a string. (Manuel López-Ibáñez)
User-provided functions (targetRunner, targetEvaluator and repairConfiguration) and user-provided conditions for forbidden configurations are now byte-compiled when read, which should make their evaluation noticeably faster. (Manuel López-Ibáñez)
The argument ‘experiment’ passed to the R function targetRunner does not contain anymore an element ‘extra.params’. Similarly, the ‘scenario’ structure does not contain anymore the elements ‘instances.extra.params’ and ‘testInstances.extra.params’. Any instance-specific parameters values now form part of the character string that defines an instance and it is up to the user-defined targetRunner to parse them appropriately. These changes make no difference when targetRunner is an external script, or when instances and instance-specific parameter values are read from a file. (Manuel López-Ibáñez)
Command-line parameters are printed to stdout (useful for future replications). (Manuel López-Ibáñez, suggested by Markus Wagner)
Users may provide a function to repair configurations before being evaluated. See the scenario variable repairConfiguration. (Manuel López-Ibáñez)
The option --sge-cluster
(sgeCluster
) was removed and replaced by --batchmode
(batchmode
). It is now the responsibility of the target-runner to parse the output of the batch job submission command (e.g., qsub or squeue), and return just the job ID. Values supported are: “sge”, “torque”, “pbs” and “slurm”. (Manuel López-Ibáñez)
The option --parallel
can now be combined with --batchmode
to limit the number of jobs submitted by irace at once. This may be useful in batch clusters that have a small queue of jobs. (Manuel López-Ibáñez)
New examples under inst/examples/batchmode-cluster/
. (Manuel López-Ibáñez)
It is now possible to include scenario definition files from other scenario files by using:
This feature is VERY experimental and the syntax is likely to change in the future. (Manuel López-Ibáñez)
Fix a bug that re-executed elite results under some circumstances. (Leslie Pérez Cáceres)
Restrict the number of maximum configurations per race to 1024. (Leslie Pérez Cáceres)
Do not warn if the last line in the instance file does not terminate with a newline. (Manuel López-Ibáñez)
Fix bug when deterministic == 1
. (Manuel López-Ibáñez, Leslie Pérez Cáceres)
Update manual and vignette with details about the expected arguments and return value of targetRunner and targetEvaluator. (Manuel López-Ibáñez)
Many updates to the User Guide vignette. (Manuel López-Ibáñez)
Fix example in irace-package.Rd (Manuel López-Ibáñez)
Fix bug: If testInstances contains duplicates, results of testing are not correctly saved in iraceResults\(testing\)experiments nor reported correctly at the end of a run. Now unique IDs of the form 1t, 2t, … are used for each testing instance. These IDs are used for the rownames of iraceResults\(testing\)experiments and the names of the scenario\(testInstances and iraceResults\)testing$seeds vectors. (Manuel López-Ibáñez)
Fix bug where irace keeps retrying the target-runner call even if it succeeds. (Manuel López-Ibáñez)
New command-line parameter
--only-test FILE
which just evaluates the configurations given in FILE on the testing instances defined by the scenario. Useful if you decide on the testing instances only after running irace. (Manuel López-Ibáñez)
Fix CRAN errors in tests. (Manuel López-Ibáñez)
Avoid generating too many configurations at once if the initial time estimation is too small. (Manuel López-Ibáñez)
Minimum R version is 2.15.
Elitist irace by default, it can be disabled with parameter --elitist 0
. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
The parameter --test-type
gains two additional values: (Manuel López-Ibáñez)
t-test-bonferroni
(t-test with Bonferroni’s correction for multiple comparisons),t-test-holm
(t-test with Holm’s correction for multiple comparisons)MPI does not create log files with –debug-level 0. (Manuel López-Ibáñez)
For simplicity, the parallel-irace-* scripts do not use an auxiliary tune-main
script. For customizing them, make a copy and edit them directly. (Manuel López-Ibáñez)
New parameters: (Manuel López-Ibáñez)
--target-runner-retries : Retry target-runner this many times in case of error.
We print diversity measures after evaluating on each instance: (Leslie Pérez Cáceres)
Kendall’s W (also known as Kendall’s coefficient of concordance) If 1, all candidates have ranked in the same order in all instances. If 0, the ranking of each candidate on each instance is essentially random.
W = Friedman / (m * (k-1))
Spearman’s rho: average (Spearman) correlation coefficient computed on the ranks of all pairs of raters. If there are no repeated data values, a perfect Spearman correlation of +1 or -1 occurs when each of the variables is a perfect monotone function of the other.
Many internal and external interfaces have changed. For example, now we consistently use ‘scenario’ to denote the settings passed to irace and ‘configuration’ instead of ‘candidate’ to denote the parameter settings passed to the target algorithm. Other changes are:
parameters$boundary -> parameters$domain
hookRun -> targetRunner
hookEvaluate -> targetEvaluator
tune-conf -> scenario.txt
instanceDir -> trainInstancesDir
instanceFile -> trainInstancesFile
testInstanceDir -> testInstancesDir
testInstanceFile -> testInstancesFile
Minimal example of configuring a MATLAB program (thanks to Esteban Diaz Leiva)
Paths to files or directories given in the scenario file are relative to the scenario file (except for --log-file
, which is an output file and it is relative to --exec-dir
). Paths given in the command-line are relative to the current working directory. Given
irace will search for "./scenario/target-runner"
, but given
irace will search for "./target-runner"
. (Manuel López-Ibáñez)
New command-line wrapper for Windows installed at system.file("bin/irace.bat", package="irace")
(thanks to Anthony Antoun)
Budget can be specified as maximum time (maxTime
, --max-time
) consumed by the target algorithm. See the documentation for the details about how this is handled. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
The best configurations found, either at the end or at each iteration of an irace run, can now be applied to a set of test instances different from the training instances. See options testInstanceDir, testInstanceFile, testNbElites, and testIterationElites. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
The R interfaces of hookRun, hookEvaluate and hookRunParallel have changed. See help(hook.run.default)
and help(hook.evaluate.default)
for examples of the new interfaces.
Printing of race progress now reports the actual configuration and instance IDs, and numbers are printed in a more human-readable format. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
Reduce memory use for very large values of maxExperiments. (Manuel López-Ibáñez, thanks to Federico Caselli for identifying the issue)
New option --load-balancing
(loadBalancing
) for disabling load-balancing when executing jobs in parallel. Load-balancing makes better use of computing resources, but increases communication overhead. If this overhead is large, disabling load-balancing may be faster. (Manuel López-Ibáñez, thanks to Federico Caselli for identifying the issue)
The option --parallel
in Windows now uses load-balancing by default. (Manuel López-Ibáñez)
The wall-clock time after finishing each task is printed in the output. (Manuel López-Ibáñez, thanks to Federico Caselli for providing an initial patch)
Fix bug that could introduce spurious whitespace when printing the final configurations. (Manuel López-Ibáñez)
Fix bug if there are more initial candidates than needed for the first race. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
New configuration options, mainly for R users:
hookRunParallel: Optional R function to provide custom parallelization of hook.run.
hookRunData: Optional data passed to hookRun. This is ignored by the default hookRun function, but it may be used by custom hookRun R functions to pass persistent data around. (Manuel López-Ibáñez)
New option --version
. (Manuel López-Ibáñez)
Terminate early if there is no sufficient budget to run irace with the given settings. (Manuel López-Ibáñez)
The option --parallel
(without --mpi
) now works under Windows. (Manuel López-Ibáñez, thanks to Pablo Valledor Pellicer for testing it)
Improved error handling when running under Rmpi. Now irace will terminate as soon as the master node detects at least one failed slave node. This avoids irace reporting two times the same error. Also, irace will print all the unique errors returned by all slaves and not just the first one. (Manuel López-Ibáñez)
Forbidden configurations may be specified in terms of constraints on their values. Forbidden configurations will never be evaluated by irace. See --forbidden-file
and inst/templates/forbidden.tmpl
. (Manuel López-Ibáñez)
New option --recovery-file
(recoveryFile) allows resuming a previous irace run. (Leslie Pérez Cáceres)
The confidence level for the elimination test is now configurable with parameter --confidence
. (Leslie Pérez Cáceres)
Much more robust handling of relative/absolute paths. Improved support for Windows. (Leslie Pérez Cáceres, Manuel López-Ibáñez)
Provide better error messages for incorrect parameter descriptions. (Manuel López-Ibáñez) Examples:
x "" i (0, 0) # lower and upper bounds are the same
x "" r (1e-4, 5e-4) # given digits=2, ditto
x "" i (-1, -2) # lower bound must be smaller than upper bound
x "" c ("a", "a") # duplicated values
Print elapsed time for calls to hook-run if debugLevel >=1
. (Manuel López-Ibáñez)
examples/hook-run-python/hook-run
: A multi-purpose hook-run written in Python. (Franco Mascia)
Parallel mode in an SGE cluster (--sge-cluster
) is more robust. (Manuel López-Ibáñez)
Replace obsolete package multicore by package parallel (requires R >= 2.14.0)
Use load-balancing (mc.preschedule = FALSE
) in mclapply
.
Use reg.finalizer
to finish Rmpi properly without clobbering .Last()
.
Remove uses of deprecated as.real()
.
Nicer error handling in readParameters()
.
Add hypervolume (multi-objective) example.
Fix several bugs in the computation of similar candidates.
More concise output.
The parameters expName and expDescription are now useless and they were removed.
Faster computation of similar candidates (Jeremie Dubois-Lacoste and Leslie Pérez Cáceres).
Fix bug when saving instances in tunerResults$experiments.
irace.cmdline ("--help")
does not try to quit R anymore.
Fix bug caused by file.exists (and possibly other functions) not handling directory names with a trailing backslash or slash on Windows.
Fix bug using per-instance parameters (Leslie Pérez Cáceres).
Fix bug when reading initial candidates from a file.